Drupal 8 include part template

2019-06-23 22:42发布

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?

3条回答
兄弟一词,经得起流年.
2楼-- · 2019-06-23 22:54

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楼-- · 2019-06-23 23:02

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

查看更多
SAY GOODBYE
4楼-- · 2019-06-23 23:12

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

{% include 'footer.html.twig' %}
查看更多
登录 后发表回答