В Drupal 8, как вы добавляете атрибуты к ссылке, сгенерированной полем основной ссылки? (или, как правило, массив визуализации с типом #, установленным в "ссылка")
Итак, у меня есть ситуация, когда у меня есть поле основной ссылки на узле. Я хотел оформить эту ссылку с помощью пользовательских атрибутов, поэтому я создал переопределение field.html.twig для этого, только чтобы обнаружить, что сама ссылка напечатана в другом месте. Похоже, что для ссылки не существует шаблона или темы; учитывая, что основная функция отладки Twig не сообщает о вызове дочернего шаблона.
Я попытался вытащить URL-адрес напрямую и отобразить свою собственную ссылку, но это класс (Drupal\Core\Url) отсутствует в белом списке веток, поэтому вывод URL-адреса просто вызовет WSOD. Похоже, что нет объекта атрибутов, в который я мог бы что-то добавить.
Я мог бы использовать theme_preprocess_field для прямого вызова Drupal\Core\Url->toString() и сохранить его в другой переменной, но я бы выбросил все атрибуты, созданные по умолчанию. Я бы предпочел принять участие в том, как Drupal напрямую отображает эту ссылку; или, если она не расширяема, по крайней мере, знаю, как повторяйте то, что делает ядро.
(Для записи решение, рекомендованное в другом вопросе об использовании поля theme_preprocess_ для записи атрибутов в #параметры, похоже, не работает.)
РЕДАКТИРОВАТЬ: Как и было запрошено, вот код, который я использовал для крючка предварительной обработки для добавления атрибутов:
function MYTHEME_preprocess_field(&$variables) {
$element = $variables['element'];
if ($element['#name'] == 'field_extra_links') {
$variables['items'][0]['content']['#options']['attributes']['class'][] = 'Button';
}
}
1 answers
Отвечая на мой собственный вопрос: первоначальное предложение на самом деле было правильным решением; то, как я настроил свою тему, означало, что крючок не загружался. Глупые ошибки!