Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Drupal 8 include part template

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?

like image 421
felipep Avatar asked Jan 10 '23 07:01

felipep


2 Answers

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.

like image 107
Oscar Nevarez Avatar answered Mar 28 '23 11:03

Oscar Nevarez


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

like image 40
felipep Avatar answered Mar 28 '23 13:03

felipep