在 Drupal Twig 模板上扩展 link 字段输出
Extend link field output on Drupal Twig Template
我正在尝试找出如何使用 HTML 实体(如 »)扩展 Drupal 8 中的公共 Link 字段。
我的第一次尝试是该领域的预处理功能。不幸的是,我没有设法将 link 的 html
选项设置为 true
这是我的尝试方式
function MYTHEME_preprocess_field(&$variables) {
if ($variables['element']['#field_name'] == 'field_slideshow_link'){
foreach ($variables['items'] as $idx => $item) {
$variables['items'][$idx]['content']['#title'] = $variables['items'][$idx]['content']['#title'] . " <span>»</span>";
$variables['items'][$idx]['content']['#url']->setOption('html', true);
}
}
}
这没有用。所以我想到的唯一解决方案是在模板中手动生成一个 Link 。只是感觉不对。这是我的做法
<a href="{{ node.field_slideshow_link.0.url }}">{{ node.field_slideshow_link.0.title }} <span>»</span></a>
有没有人知道如何更优雅地解决这个问题?
这个也有问题。找到以下解决方案
$url = [
'#title' => new FormattableMarkup('&@text;', ['@text' => t('raquo')]);
//The rest
];
使用 html 元素(例如 span)进行此操作,因此不确定它是否适用于此。让我知道!
我正在尝试找出如何使用 HTML 实体(如 »)扩展 Drupal 8 中的公共 Link 字段。
我的第一次尝试是该领域的预处理功能。不幸的是,我没有设法将 link 的 html
选项设置为 true
这是我的尝试方式
function MYTHEME_preprocess_field(&$variables) {
if ($variables['element']['#field_name'] == 'field_slideshow_link'){
foreach ($variables['items'] as $idx => $item) {
$variables['items'][$idx]['content']['#title'] = $variables['items'][$idx]['content']['#title'] . " <span>»</span>";
$variables['items'][$idx]['content']['#url']->setOption('html', true);
}
}
}
这没有用。所以我想到的唯一解决方案是在模板中手动生成一个 Link 。只是感觉不对。这是我的做法
<a href="{{ node.field_slideshow_link.0.url }}">{{ node.field_slideshow_link.0.title }} <span>»</span></a>
有没有人知道如何更优雅地解决这个问题?
这个也有问题。找到以下解决方案
$url = [
'#title' => new FormattableMarkup('&@text;', ['@text' => t('raquo')]);
//The rest
];
使用 html 元素(例如 span)进行此操作,因此不确定它是否适用于此。让我知道!