4

我正在尝试使用带有自己主题的 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 可以做到这一点吗?

4

3 回答 3

4

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

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

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

于 2014-12-29T23:28:14.797 回答
4

您可以像这样包含模板文件的任何部分

{% 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 尝试使用什么非常有帮助。

干杯。

于 2015-08-08T10:40:07.027 回答
1

现在https://www.drupal.org/node/2291449已经提交,您还可以执行以下操作:

{% include 'footer.html.twig' %}
于 2016-06-05T11:37:08.927 回答