我想使用字段中设置的分类术语值来增强页面的标题。
所以标题看起来像这样:
为了修改标题,我覆盖了
field--node--title--[content-type].html.twig
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,通过元素对象请求访问节点本身和其他字段:
element['#object'].get('field_my_field').get(0)
Run Code Online (Sandbox Code Playgroud)
获取第一个元素。
element['#object'].get('field_my_field').get(0)['target_id']
Run Code Online (Sandbox Code Playgroud)
返回分类术语的 tid。但
element['#object'].get('field_my_field').get(0)['name']
Run Code Online (Sandbox Code Playgroud)
返回一个空元素。
如何检索字段值?我无法想象这需要 php 代码。
更新: 我找到了一个方法,但看起来有点复杂:
由于#object 中未解析分类术语,因此我必须添加一个 hook_preprocess:field 函数来准备具有必要数据的变量:
function myTheme_preprocess_field(&$variables, $hook){
if ($variables['field_name'] == 'title'){
$variables['my_field'] = Term::load($variables['element']['#object']->get('my_field')->get(0)->getValue()['target_id']);
}
Run Code Online (Sandbox Code Playgroud)
现在可以在 twig 中访问该字段,如下所示:
{{ my_field.name.getValue()[0]['value'] }}
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎是一项艰巨的工作,因此非常感谢更直接的方法。