首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印分段?

如何打印分段?
EN

Drupal用户
提问于 2018-05-14 20:05:13
回答 3查看 613关注 0票数 1

我有一个带有段落字段的内容类型。该段字段有两个段落字段,我将称之为分段。

我想根据预处理函数中设置的标志打印这两个项中的一个。

段落: field_banner_header

分段: field_banner_header_single、field_banner_header_multi

树枝:

代码语言:javascript
复制
    {% if callout_options == 'Single' %}
        {{ content.field_banner_header[0]['#node'].field_banner_header_single.value }}
    {% else %}
        {{ content.field_banner_header[0]['#node'].field_banner_header_multi.value }}
    {% endif %}

我有一个预处理钩子,它在callout_options中存储bool的值(“单”或“多”):

代码语言:javascript
复制
function cse_preprocess_node(&$variables) {
  $node = $variables['elements']['#node'];

  if ($node->getType() == 'unit_landing_page') {
    $variables['callout_options'] = $node->get('field_active_callout_tab')->value;
  }
}

在页面呈现中,我得到以下错误:

快速编辑drupal.js?v=8.4.6:13无法将呈现的实体字段标记(与)关联到相应的呈现实体标记:没有找到与之对应的父DOM节点。这通常是由于该实体类型的主题模板忘记打印属性造成的。

我可能错了,但这似乎是在告诉我,我所指的这一分段是错误的。

打印分段的正确语法是什么?

EN

回答 3

Drupal用户

回答已采纳

发布于 2018-05-16 18:02:28

弄明白了。问题是布尔值被视为标记,因此我将其添加到条件中,如下所示:

代码语言:javascript
复制
{% if content.field_active_callout_tab.0['#markup'] == 'Single' %}
    {{ content.field_banner_header_single.0 }}
{% else %}
    {{ content.field_banner_header_multi.0 }}
{% endif %}

我通过将布尔字段(field_active_callout_tab)传递给kint模块并检查其属性来发现这一点。

票数 1
EN

Drupal用户

发布于 2018-05-14 20:26:53

看来你的预处理功能才是关键。要获得字段的值,请执行以下操作:

代码语言:javascript
复制
$callout_tab = $node->get('field_active_callout_tab')->first()->getValue();
$variables['callout_options'] = $callout_tab['value'];

真的,请安装Devel子模块Kint,然后先检查您得到了什么:

代码语言:javascript
复制
ksm($node->get('field_active_callout_tab')->value);

哪一个最有可能为您提供NULL或数组。所以{% if callout_options == 'Single' %}永远不能工作。

关于这一分段,我所能得到的只有实体ID:

代码语言:javascript
复制
{{ kint(content.field_paragraphs.0['#paragraph'].get('field_subparagraph').value) }}

但也许我做错了什么(你已经自己解决了)。但是,如果实体ID确实是可以得到的最大值,那么最好也加载预处理函数中的项,并像传递bool那样将呈现数组传递给Twig。从理论上讲,这应该是可行的:)

票数 1
EN

Drupal用户

发布于 2022-01-06 05:34:59

细枝调整模的帮助下,您可以在正确的上下文中打印分段内容:

代码语言:javascript
复制
 {{ drupal_field('field_paragraph', 'paragraph', paragraph_id) }}

这是示例文档

票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/261633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档