Получение $url медиафайла по его id в файле шаблона

Аватар пользователя Turbine Turbine 2 июля в 0:33

Доброго времени суток!
Прошу строго не судить о моих навыках программирования в недрах Drupal.

Ситуация:
В файле настроек шаблона есть выбор изображения для фона. При этом передается числовое значение. Скорее всего это id изображения. Где его прячет Drupal - понять сложно. Смотрел в базе. Нет. Только как кэш. Причем числовое значение далеко от того, что в базе. Файлы, которые загружены хоть через "Содержимое -> Файлы", хоть через Media Browser тоже непонятно как хранятся в базе.
Насколько понимаю, с применением API можно выдернуть url... Но как?

В рускоязычном нете ничего не нашел, раскопал в заморском и попробовал прикрутить конструкцию вида:

<?php    $media Media::load($mid);
    
$fid $media->field_media_image->target_id;
    
$file File::load($fid); ?>

Drupal начал ругаться
Error: Class 'Media' not found

Комментарии

Аватар пользователя Turbine Turbine 2 июля в 10:49

Увы, я юзверь без навыков кодинга.
Надо было везде убрать ['fid']. После обновления модулей media и ядра Drupal до 7.72, что-то по-видимому поменялось в обращении с файлами. Как можно апдейтить одну версию так, чтобы что-то перестало работать - вопрос не менее интересный.
Решено!

Аватар пользователя ivnish ivnish 2 июля в 10:51

Увы, я юзверь без навыков кодинга.

Для того, чтобы описать проблему достаточно только русского языка Smile

Аватар пользователя Turbine Turbine 2 июля в 13:01

С одной стороны да. Только когда спрашиваешь, можешь написать "не в тех формулировках" или слишком расплывчато. Тогда у тебя спросят "код". Ну, и попинают чутка )

Аватар пользователя marassa marassa 2 июля в 7:52

Turbine wrote: В файле настроек шаблона есть выбор изображения для фона

Что есть "файл настроек шаблона"?

Turbine wrote: Drupal начал ругаться
Error: Class 'Media' not found

Естественно: Вы же прикрутили только произвольную часть раскопанной конструкции, выбросив

use Drupal\media\Entity\Media;
use Drupal\file\Entity\File;
Аватар пользователя Turbine Turbine 2 июля в 9:56

Признаю, вкрутить код от D8 было нелепо.
Есть шаблон, в котором выбираются изображения для блоков, если они содержат фоновое изображение.
В файле template.php (парон)
шаблон их пытается обработать:

<?php        $file file_load$block_bg_img['fid'] );
        
$url file_create_url$file->uri );
?>

И здесь начинаются злоключения.
в каждой строчке по проблеме:

Warning: Illegal string offset 'fid' в функции - в первой
Notice: Trying to get property of non-object - во второй

$url в конечном итоге имеет вид "http://имя сайта/"