Drupal 8 include part template

谁说胖子不能爱 提交于 2019-12-10 17:21:38

问题


I'm trying to use Drupal 8, with an own theme, due big structure differences for my requirements I have a page--front.twig.html and a page.twig.html, I would like to create template parts as used in phrozn oder in a normal Symfony2 project, for example a footer.html.twig and a header.html.twig. These templates are saved under a subdirectory /parts/

But wenn I call this templates as normal I just receive a string with the name of the template.

For example:

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

Returns the file name as string:

parts/footer.html.twig

It's possible to do that with Drupal 8?


回答1:


it's possible using the name of the template in the path

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

thanks to https://drupal.stackexchange.com/questions/141066/drupal-8-include-part-template




回答2:


You can include any part of your template files like this

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

or this

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

I strongly recommend you to create a reusable layout for pages that will give you greater flexibility when dealing with more pages and variants.

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

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

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

So you can do something like this in another page

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

Finally, I found really helpful to dig into suggestions array and see what Drupal is trying to use.

Cheers.




回答3:


Now that https://www.drupal.org/node/2291449 has been committed you can also do:

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


来源:https://stackoverflow.com/questions/27378936/drupal-8-include-part-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!