如何在树枝中渲染段落模块


8

我正在为主题创建自定义模板,并正在构建page.html.twig页面。我想将各个节点字段调用到单独的行中。我已经能够成功显示除段落字段以外的所有内容。

我努力了。

{{ node.field_benefits }}
{{ node.field_benefits.value }}
{{ paragraph.field_benefits }}
{{ paragraph.field_benefits.value }}
{{ node.paragraphs.field_benefits }}

没有任何效果。是否有人对在段落模块中调用的正确结构有任何想法?

还是会为功能工作

{% if node.field_benefits %}
{% for field_items in node.field_benefits %}
{{ field_item.value }}
{% endfor %}
{% endif %}

page.html.twig不处理节点,仅处理整个页面模板。您使用了错误的模板。我建议您改写节点模板(或至少阅读访问树枝模板的方式)。同样,打开树枝调试并查看源代码将帮助您确定应覆盖哪个模板。
NikLP

好了@NikLP我将所有内容都移到了节点级别,但是我仍然无法渲染段落模块-我使用的是我从调试和kint获得的字段,但仍然显示为空行
Megan McGowan

也许看看这个?drupal.org/node/2444893
NikLP '16

Answers:


7

首先将一个添加paragraph--your_paragraph_machine_name.html.twig到主题的模板目录。

可以通过添加类似于的格式的树枝变量来访问段落字段{{ content.field_your_field }}

如果只需要字段值,那会有些棘手。例如,如果您有一个“列表”(文本)字段,并想从所选选项中获取值,则可以执行以下操作:

{% for item in content.field_select_list %}
  {% if item is iterable %}
    {% for key,value in item %}
      {% if not value is iterable %}
        {% if key == '#markup' %}
          {{ value }}
        {% endif %}
      {% endif %}
    {% endfor %}
  {% endif %}
{% endfor %}

您始终可以运行a {{ dump(content) }}来查看结构并获取所需的值。希望这可以帮助!

编辑:您可以避免所有愚蠢的嵌套循环。上面的示例应写为:

{% set value = content.field_select_list.0['#markup'] %}
{{ value }}

对于文本(纯文本)字段,它可能类似于:

{{ content.field_text.0['#context'].value }}

要从“链接”字段获取URL值,我看到了如下建议:

{{ content.field_link['#items'].0.value.uri }}

但是它会有一个“ internal:/”前缀,所以我最好能有这样的东西:

{{ content.field_link.0['#title'] %}

您可以paragraph.field_my_text.value在任何段落模板中使用它来输出无格式的普通值,就像node.field_my_text.value在节点模板中一样。
菲利普·迈克尔

如何从主模板中打印段落--your_paragraph_machine_name.html.twig?
山姆
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.