小编Den*_*nis的帖子

Drupal 8 树枝中的分类术语

我想使用字段中设置的分类术语值来增强页面的标题。

所以标题看起来像这样:

标题 - [分类术语值]

为了修改标题,我覆盖了

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)

对我来说,这似乎是一项艰巨的工作,因此非常感谢更直接的方法。

twig drupal-8

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

drupal-8 ×1

twig ×1