Как получить url картинки в Друпал 8?

Главные вкладки

Аватар пользователя buldog52 buldog52 7 апреля 2019 в 21:37

Всем привет.

Есть поле-картинка field_top_bg.
Как получить из него url?
Варианты
{{ content.field_top_bg }}
{{ content.field_top_bg.0 }}
выводят картинку, то есть вот такой код

< -- img src="/sites/default/files/2019-04/fullbg-top.png" width="399" height="901" alt="Интернет-телевидение нового поколения" typeof="foaf:Image" -- >

P.S. -- после < дописал чтобы код сюда вставить

Как получить url картинки из content.field_top_bg?

ВложениеРазмер
Иконка изображения v8-error.jpg26.66 КБ

Комментарии

Аватар пользователя vlucas vlucas 7 апреля 2019 в 21:45

Можно сделать проще без кода.
Так понял, что поле картинки прикреплено к типу сущности.
В управлении отображением можно сменить форматтер поля на URl.

Аватар пользователя buldog52 buldog52 7 апреля 2019 в 22:08

исправил.
теперь другая проблема
в коде

{{ content.field_top_bg }}

получаем такой url из content.field_top_bg
/sites/default/files/2019-04/fullbg-top.png

а когда я пытаюсь впихнуть это url в тег background
вот так
< -- div class="container top__container"
style="background-image: url({{ content.field_top_bg }});background-repeat:no-repeat;background-position:top right;" -- >
вываливается код, который в атачменте. Бекграунд не выводится.

Аватар пользователя buldog52 buldog52 8 апреля 2019 в 8:45

а какой функцией в drupal можно напечатать чтото?
я так понимаю, то что я делаю - по аналогии с вордпрессом - напоминает что-то наподобие
<?php echo функция('имя_поля'); ?>

Аватар пользователя cyberlex404 cyberlex404 7 апреля 2019 в 22:12
<?php
$node
->field_image->entity->getFileUri()
?>
<?php
use Drupal\image\Entity\ImageStyle;

$path 'public://images/image.jpg';
$url ImageStyle::load('style_name')->buildUrl($path);?>

https://www.drupal.org/docs/8/creating-custom-modules/adding-stylesheets...

<?php
$computed_settings 
= [
  
'foo' => 'bar',
  
'baz' => 'qux',
];

$build['#attached']['library'][] = 'your_module/library_name';
$build['#attached']['drupalSettings']['fluffiness']['cuddlySlider'] = $computed_settings;
?>

Дописываешь js который берет значение URL картинки из drupalSettings и ставит его как бэкграунд в нужный div

Ну или просто в шаблон допихать это значение отдельной переменной. В первом случае по идее это будет чуть быстрее по загрузке страницы.