Снова приветствую специалистов по высокоуровнему бекенду!
Есть код:
set attach = {
id: id,
attributes: {
alt: [
'alt',
'description',
],
title: [
'title',
],
},
}
%}
<img src="{{ url }}"{{ attributes }} data-insert-attach='{{ attach|json_encode() }}'/>
Выводит:
<img src="/path/to/image.jpg" data-insert-attach="{"id":"b33e90ec-b96d-4fd4-97da-fe50d13ed8bd","attributes":{"alt":["alt","description"],"title":["title"]}}" alt="Альтернативный текст" title="Заголовок изображения">
Подскажите: как в теге img вывести только title? Без alt. А data-insert-attach вообще убрать.
Если правильно понимаю title нужно как-то вычленить из набора attach.
Комментарии
Скорее из
{{ attributes }}
. Возможно, как-то так:... title={{ attributes.title }} ...
Так? Не работает
set attach = {
id: id,
attributes: {
alt: [
'alt',
'description',
],
title: [
'title',
],
},
}
%}
{% set title = {{ attributes.title }} %}
Так тоже
{% set title = attributes.title %}
Скорее так:
<img src="{{ url }}" title="{{ attributes.title }}"/>
Можно ещё с другого конца:
<img src="{{ url }}"{{ attributes|without('alt') }}/>
Не получается.
Тут еще такое дело. Если конструкцию
<img src="{{ url }}"{{ attributes }} data-insert-attach='{{ attach|json_encode() }}'/>
Привести к виду:
<img src="{{ url }}"{{ attributes }}/>
Выводится:
без всяких alt и title.
Это, видимо, уже какая-то химия модуля insert. Что-то он скорее всего заменяет на основании JSON-данных (атрибут
data-insert-attach
). Но проблема в том, что в этих данных передаются только названия атрибутов, а не их значения. То есть, как минимум второе условие задачи ("А data-insert-attach вообще убрать.") невыполнимо.Пробовали выкинуть из массива
{{ attach }}
лишние элементы? То бишь, ветку'alt'
полностью?Так?
{% set url = "/some/url" %}
{%
set attach = {
id: id,
attributes: {
alt: [
'alt',
'description',
],
title: [
'title',
],
},
}
%}
<img src="{{ url }}" title="{{ attach.attributes.title.0 }}"/>
https://twigfiddle.com/rdyltj
Не получается.
Выводится:
title="title"
Но у меня же там на русском языке надпись а не "title".
У тебя в свойстве/ключе
title
указано значение «title», поэтому оно выводится.Вот, к примеру, если изменить значения свойств/ключей:
{% set url = "/some/url" %}
{%
set attach = {
id: id,
attributes: {
alt: [
'some alt for this image',
'description',
],
title: [
'some title for this image',
],
},
}
%}
<img src="{{ url }}" alt="{{ attach.attributes.alt.0 }}" title="{{ attach.attributes.title.0 }}"/>
Результат будет такой:
Или у тебя там тоже переменная в
title
?Немного перефразирую вопрос.
Если выводится так:
set attach = {
id: id,
attributes: {
alt: [
'alt',
'description',
],
title: [
'title',
],
},
}
%}
<img src="{{ url }}" data-insert-attach='{{ attach|json_encode() }}'/>
Выводится:
<img src="/path/to/image.jpg" data-insert-attach="{"id":"b33e90ec-b96d-4fd4-97da-fe50d13ed8bd","attributes":{"alt":["alt","description"],"title":["title"]}}" alt="Альтернативный текст" title="Заголовок изображения">
Без data-insert-attach как ни пытался ни alt ни title не выведу.
Т.е. несмотря на то, что
alt и title определены в attach,
alt="Альтернативный текст" title="Заголовок изображения" - подтягиваются из вводимых значений поля.
Да, скорей всего я ошибся думая, что можно переменную вычленить и тут действительно внутренняя кухня модуля insert
https://www.drupal.org/docs/contributed-modules/insert/synchronizing-tex...