如何在树枝字段模板中添加变量?


9

在节点页面上,我想将节点标题与另一个字段(示例字段)一起添加到输出中。

我创建了一个新的,field--field-example.html.twig但由于在字段模板中不可用而无法访问节点标题变量。

我需要将变量添加到主题预处理:中themename.theme

我该如何在其中添加变量?themename.theme相应的条目将是什么field--field-example.html.twig


使用hook_preprocess_node从您要在模板中使用的字段中提取值。

@IvanJaros,我现在更新了问题。
泰勒·塔夫

Answers:


15

由于您询问是否要通过.theme文件将节点标题作为变量传递,因此可以使用template_preprocess_field进行以下操作:

  function themename_preprocess_field(&$variables, $hook) {
    if ($variables['element']['#field_name'] == 'field_example') {
      $variables['node_title'] = $variables['element']['#object']->getTitle();
    }
  }

那么field--field-example.html.twig您可以只使用{{node_title}}渲染节点标题。

另请参阅下面的4k4答案。


我试图编辑您的答案以包括4k4提供的答案,因为它是正确的,但是我的编辑被拒绝了,因为它被认为是不相关的...
Taylor Taff

批准编辑的@TaylorTaff?我没看过 将尝试编辑以在下面包含答案。
珍妮

@Janey许多具有足够徽章的用户可以查看此类编辑。我已为您的答案添加了书签,以供将来查看。还有一个问题:你们确定这$variables['element']['#object']->getTitle();是可以捕获的preprocess_field吗?因为这实际上可以回答我的问题:drupal.stackexchange.com/questions/197497/…–
nilsun

11

字段模板的变量中有一个可用的节点对象,因此您不需要预处理功能。

要从字段模板中的节点获取标题:

{{ element['#object'].label }}

这可以回答问题,但是由于Janey的其他回答会更有用,因此我将其添加到该回答中并标记为已接受。
泰勒·塔夫

1
但是您的问题是基于错误的假设:“但是由于字段模板中不存在节点标题变量,因此无法访问它。”
2016年

是的4k4,您是正确的,我的问题是不正确的。
泰勒·塔夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.