Drupal 8包含零件模板

时间:2014-12-09 12:26:13

标签: drupal drupal-theming drupal-8

我尝试使用具有自己主题的Drupal 8,由于我的要求有很大的结构差异我有一个页面 - front.twig.html和page.twig.html,我想创建正常Symfony2项目中phrozn oder中使用的模板部件,例如footer.html.twig和header.html.twig。这些模板保存在子目录/ parts /

但是我知道这个模板正常,我只是收到一个带有模板名称的字符串。

例如:

{# in page.html.twig or page--front.html.twig #}
{% include 'parts/footer.html.twig' %} 

以字符串形式返回文件名:

parts/footer.html.twig

使用Drupal 8可以做到这一点吗?

3 个答案:

答案 0 :(得分:3)

可以使用路径中的模板名称

{% include '@mytheme/parts/footer.html.twig' %}

感谢https://drupal.stackexchange.com/questions/141066/drupal-8-include-part-template

答案 1 :(得分:3)

您可以包含模板文件的任何部分,例如

{% include directory ~ '/parts/footer.html.twig' %}

或者

{% include '@mytheme/parts/footer.html.twig' %}

我强烈建议您为页面创建可重复使用的布局,以便在处理更多页面和变体时为您提供更大的灵活性。

{# filename: page-layout.html.twig #}

{% block content%}
{{ page.content }}
{% endblock%}

{% block footer%}
{% include '@mytheme/parts/footer.html.twig' %}
{% endblock%}

所以你可以在另一个页面上做这样的事情

{# filename: page--front.html.twig #}
{% block footer%}
<div> I want to handle a different footer in here</div>
{% endblock%}

最后,我发现挖掘建议数组非常有用,看看Drupal正在尝试使用它。

干杯。

答案 2 :(得分:1)

既然https://www.drupal.org/node/2291449已经提交,你也可以这样做:

{% include 'footer.html.twig' %}