这可以通过几种方式完成,您可以使用Twig在节点模板中完成全部操作,也可以创建预处理功能并创建变量以供在节点模板中使用。了解数组中内容的关键是使用Devel Kint。否则,您将不知道数组中的内容。
首先安装Drupal 8的Devel模块随附的Kint,然后选择您的节点模板(但这可以在任何类型的模板中完成)并像这样检查content变量(最好在模板的底部)。
{{ kint (content) }}
由此,我们将在页面上打印调试信息,并且如果您扩展数组,您将看到大量信息。马上,我看到了我的背景值,可以构造一条路径将其打印为
{{ content.field_background[0]['#markup'] }}
现在,您可以将其打印为div中的背景样式或类
<div style="background-color: {{ '#' }}{{ content.field_background[0]['#markup'] }};" class="color-{{ content.field_background[0]['#markup'] }}">
<h2>Hello</h2>
</div>
我已经对此进行了测试,并且效果很好,div渲染了我在节点编辑的字段列表中选择的背景色。
现在这并不理想,因此我们可能希望在主题的.theme文件的preprocess_node中为此创建一个变量。
function MYTHEME_preprocess_node(&$vars) {
$vars['bgcolor'] = '#' . $vars['content']['field_background'][0]['#markup'];
}
现在,我已经创建了一个var,将其打印出来要干净得多:
<div style="background-color: {{ bgcolor }};" >
<h2>Hello</h2>
</div>
上面的一个注释,您可能应该用if语句包装它,以检查它是否为空。
这将在您喜欢的地方工作或构建if语句
{% if bgcolor %}
<div style="background-color: {{ bgcolor }};" >
<h2>Hello</h2>
</div>
{% endif %}
{% set classes = [ ...
,然后将类打印为<article{{ attributes.addClass(classes) }}>
,也可以执行类似的<div{{ content_attributes.addClass('foobar' | clean_class) }}>
操作。正如上面的注释所述,我认为我们需要更多信息。如果要将字段值作为类,则也可以使用Kint和Twig调试,这可能会有所帮助,并且可能需要使用预处理功能设置var,但这也许不是必需的。