Шаблон ветки отображает список ссылок, которые идут с классами. Базовый:
{{ mylink }}
код ветки выведет что-то вроде
<a href="#" class="someclass" >the text</a>
Не все ссылки имеют классы. Я хочу написать шаблон ветки, который вместо этого выведет что-то вроде этого:
<a href="#" class="someclass" >
<span class="sprite someclass" ></span>
the text</a>
Что я пробовал:
Я искал шаблон ветки, чтобы переопределить. К сожалению, кажется, что ссылки не отображаются с помощью шаблона ветки.
Я попытался обновить переменную ветки, как
set mylink['#title'] = "<span>...</span>" ~ mylink['#title']
Но это не позволит мне сделать это.
Ответы:
Вот решение только для веток для определенной области, которая нуждается в этом лечении; это не общее решение для всех ссылок везде.
некоторые-template.twig:
источник
item.link['#url']
дает один и тот же URL для всех языков!Я не нашел способ изменить ссылку '#markup' в ветке, но есть способ изменить ее на этапе рендеринга.
Я сделал этот маленький модуль, который расширяет функциональность Link и позволяет ему вставлять некоторые вещи в отображаемую ссылку. Итак, давайте сделаем код, я объясню в комментариях ...
Структура файла модуля:
Содержание файла:
better_link.info.yml
better_link.module
BetterLinkFormatter.php
BetterLink.php
Важный:
Это будет работать для всех ваших полей ссылок , конечно, если вы измените его форматер в управлении отображением (редактируя тип вашего узла).
Я надеюсь, что это может быть полезно.
Запрос @artfulrobot: Можете ли вы протестировать этот модуль? Я думаю, что проблема перевода может быть решена таким образом.
источник
Вы можете просто добавить массив визуализации в #title, например:
Старый длинный ответ:
Вы можете переопределить службу генератора ссылок
Создайте модуль (alternative_linkgenerator) с информационным файлом alternative_linkgenerator.info.yml
Сделайте файл с именем alternative_linkgenerator.services.yml
Далее необходимо создать класс, добавить папку с именем «src» (в соответствии со стандартами автозагрузки PSR-4) и в этом файле с именем AlternativeLinkGenerator.php. (Это копия 1: 1, вам нужно адаптировать вещи для вашего)
Отредактируйте services.yml (обычно по адресу sites / default / services.yml в вашей кодовой базе Drupal 8) и добавьте следующее:
реквизит идет сюда
источник
template_preprocess_links
вещь (это что-то конкретное, несмотря на общее название).core/lib/Drupal/Core/Utility/LinkGenerator.php
s,generate()
и это заставляет текст проходить через него,Html::escape()
поэтому нет способа сделать это без полного обхода средства форматирования ссылок Drupal.попробуйте этот код:
{% - endif%}
или этот (он получен по адресу : https://github.com/liip/bund_drupal_starterkit_theme/blob/master/templates/navigation/links--language-block.html.twig ):
источник