Drupal 8 预处理页面

Posted

技术标签:

【中文标题】Drupal 8 预处理页面【英文标题】:Drupal 8 preprocess page 【发布时间】:2017-03-21 09:51:36 【问题描述】:

我是 Drupal 8 的新手,遇到一个问题。 我需要在我的主题页面 page-front.html.twig 中显示一个 CCK 字段(自定义字段)。

据我所知,在非节点页面中显示节点变量是不可能的,所以我开始做一个预处理钩子。

我的预处理如下所示:

mythemename.theme

<?php

function THEME_NAME_preprocess_page(&$vars) 
  if (isset($vars['node'])) 
    $node = $vars['node'];
    if ($node->isset('field_numero_cin') 
      $field_cin = $node->get('field_numero_cin');
      $vars['field_cin'] = $field_image->value();
    
  
    

不幸的是,当我调试(kint)时,page-front.html.twig 中的变量是 NULL

【问题讨论】:

我也不太喜欢我。但是,我不想重复这个问题。我也面临同样的问题。你修好了这个? 【参考方案1】:

您的第二个 if 语句缺少右括号,您是否遇到错误?if ($node->isset('field_numero_cin')) $field_cin = $node->get('field_numero_cin'); $vars['field_cin'] = $field_image->value();

【讨论】:

【参考方案2】:

嗯……

您是否正在进入预处理程序? (在您之前添加一条调试消息 第一个“if”) 您正在尝试使用-&gt;value() 访问$field_image 的值。尝试 -&gt;getValue()-&gt;value 愚蠢的问题,但也许值得:你试过清除缓存吗?添加预处理功能后需要。

【讨论】:

以上是关于Drupal 8 预处理页面的主要内容,如果未能解决你的问题,请参考以下文章

php Drupal 8主题预处理标记

drupal 8 支持主题化预处理节点获取段落项目的函数

Drupal 8 /预处理功能中的视图

php Drupal 8:以编程方式处理队列

Drupal 8 - 如何在视图中显示当前登录用户未创建的所有内容

Drupal 视图拉取数据字段