Здравствуйте!
Создаю ноду с прикрепленным файлом аудио-записи.
Программно вывожу на страницу выборочные данные ноды - запрос делаю к таблице по определенному id-ноды, вывожу текст из текстового поля в переменную. Но так и не поняла как программно вывести аудио-файл, привязанный к ноде, чтобы отображение было в формате audio? Может кто сталкивался?
Как на страницу программно вывести аудио-файл, привязанный к ноде, чтобы отображение было в формате audio?
Главные вкладки
Лучший ответ
Напишу здесь, может пригодится кому-то рабочий вариант:
// Получить полный путь к файлу, прикреплённого к определённой ноде:
$node = \Drupal\node\Entity\Node::load($idNode);
$path = $node->field_audio->entity->getFileUri();
$rezult = \Drupal::service('file_url_generator')->generateAbsoluteString($path);
//
// Другой формат
$rezult = $node->field_audio->entity->getFileUri();
//
// Получить имя файла, прикреплённого к определённой ноде:
$node = \Drupal\node\Entity\Node::load($idNode);
$rezult = $node->field_audio->entity->getFilename();
$node = \Drupal\node\Entity\Node::load($idNode);
$path = $node->field_audio->entity->getFileUri();
$rezult = \Drupal::service('file_url_generator')->generateAbsoluteString($path);
//
// Другой формат
$rezult = $node->field_audio->entity->getFileUri();
//
// Получить имя файла, прикреплённого к определённой ноде:
$node = \Drupal\node\Entity\Node::load($idNode);
$rezult = $node->field_audio->entity->getFilename();
Комментарии
А зачем выводить программно? Для базовой настройки вывода полей есть "настройка отображения". Для более продвинутой - шаблоны.
Для вывода аудио были модули. Ищите по ключевым словам "audio field"
Мне именно программно нужно вывести это поле на страницу, используя метод табличных запросов в Drupal, иначе бы не задавала вопрос
Короткий ответ: писать плагин-форматтер.
Напишу как сделала, я запрашиваю данные в php и вывожу их в html:
$num = '<audio controls='."controls".'>'.'<source src='."/sites/default/files/audiodesc/num_short_1.ogg".'/>'.'<source src='."/sites/default/files/audiofiles/num_short_1.mp3".'/>'.'</audio>';
...
Аудио-файл выводится виджетом на странице как надо сейчас, единственное, что не смогла ещё понять как программно написать sql-запрос на php для определения названия или пути прикрепленного файла к ноде, чтобы собрать ссылку в переменную.
ID файла вам известно?
<?php
...
$fid = 1;// ID файла.
$file = \Drupal\file\Entity\File::load($fid);
$path = $file->getFileUri();
// Если нужен абсолютный URL.
$path = \Drupal::service('file_url_generator')->generateAbsoluteString($path);
...
?>
или, например, сразу из значения поля ноды:
<?php
...
$path = $node->field_audio->entity->getFileUri();
// Если нужен абсолютный URL.
$path = \Drupal::service('file_url_generator')->generateAbsoluteString($path);
...
?>
Не получается, может запрос неправильно строю, либо библиотеку надо добавить?
Известны id-ноды и поле файла в типе материала, запрашиваю таблицу, указываю ноду и ничего.
Что бы вам не перестать заниматься неуместной подпольщиной и не выкатить в студию всё, что вы там наплодили? Мне уже не хватает моих скромных телепатических способностей.
, благодарю за помощь.
Напишу здесь, может пригодится кому-то рабочий вариант:
$node = \Drupal\node\Entity\Node::load($idNode);
$path = $node->field_audio->entity->getFileUri();
$rezult = \Drupal::service('file_url_generator')->generateAbsoluteString($path);
//
// Другой формат
$rezult = $node->field_audio->entity->getFileUri();
//
// Получить имя файла, прикреплённого к определённой ноде:
$node = \Drupal\node\Entity\Node::load($idNode);
$rezult = $node->field_audio->entity->getFilename();