Доброго времени суток!
Прошу строго не судить о моих навыках программирования в недрах 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
Комментарии
А задача то какая стоит?
исправить
Что исправить то? Напишите проблему, а не попытки решения
Увы, я юзверь без навыков кодинга.
Надо было везде убрать ['fid']. После обновления модулей media и ядра Drupal до 7.72, что-то по-видимому поменялось в обращении с файлами. Как можно апдейтить одну версию так, чтобы что-то перестало работать - вопрос не менее интересный.
Решено!
Для того, чтобы описать проблему достаточно только русского языка
С одной стороны да. Только когда спрашиваешь, можешь написать "не в тех формулировках" или слишком расплывчато. Тогда у тебя спросят "код". Ну, и попинают чутка )
Что есть "файл настроек шаблона"?
Естественно: Вы же прикрутили только произвольную часть раскопанной конструкции, выбросив
use Drupal\file\Entity\File;
И при создании поста он указал, что у него Drupal 7
Признаю, вкрутить код от 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://имя сайта/"