我有一个字段,其中包含许多应该呈现为标签的节点。
标记包含选项卡控件,后跟选项卡内容。
我有一个重写的field
模板,可以呈现:
{# Tab controls #}
<dl class="tabs">
{% for item in items %}
<dd><a>Insert tab label here</a></dd>
{% endfor %}
</dl>
{# Tab content #}
<div class="tabs-content">
{% for item in items %}
<div{{ attributes }}>
{{ item.content }}
</div>
{% endfor %}
</div>
根据文件说明,项目只有两个属性
* - items: List of all the field items. Each item contains:
* - attributes: List of HTML attributes for each item.
* - content: The field item's content.
“标签内容”呈现完美。我有一个模板,将节点呈现为标签内容。
我得到正确数量的制表符控件,因为我正在遍历这些项目,但我无法访问项目标签(标题)来正确呈现控件,因为item.label
不存在。
我可以想到两种方法:
item
。我不确定是否有可能。
答案 0 :(得分:2)
您可以在模块或主题中定义的预处理函数中轻松执行此操作(假设引用字段称为field_articles
):
/**
* Implements hook_preprocess_HOOK().
*/
function my_module_preprocess_field(&$variables) {
switch ($variables['field_name']) {
case 'field_articles':
foreach ($variables['items'] as $delta => $item) {
if (!empty($item['content']['#node'])) {
/** @var Node $node */
$node = $item['content']['#node']; // This is referenced node.
$variables['items'][$delta]['label'] = [
'#markup' => $node->label(),
];
}
}
break;
}
}
现在,您的字段树枝模板将包含item.label
元素。