2014-12-09 60 views
4

我试图使用Drupal 8,与自己的主题,由于我的要求的大结构差异我有一个页面 - front.twig.html和page.twig.html,我会喜欢在普通Symfony2项目中创建phrozn oder中使用的模板部件,例如footer.html.twig和header.html.twig。这些模板被保存在一个子目录/ parts/Drupal 8包含部分模板

但是,我将这个模板作为普通模板调用,我只是收到一个带有模板名称的字符串。

例如:

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

返回文件名字符串:

parts/footer.html.twig 

这是可能做到这一点使用Drupal 8?

回答

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是试图使用。

干杯。

+1

的'目录〜'你的答复的一部分,是非常有用的,感谢的 – kevpoccs 2015-08-10 13:20:07

1

现在https://www.drupal.org/node/2291449一直致力于你也可以这样做:

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

愿你写的答案也为HTTP://drupal.stackexchange .com/questions/141066/drupal-8-include-part-template,可能更广泛? – kiamlaluno 2016-07-13 17:25:44

+0

@kiamlaluno sure .tnx – zhilevan 2016-07-13 20:49:39

+0

当我使用类似这样的内容:{%include'site-header.html.twig'%} twig抛出错误“Twig_Error_Loader:Template”site-header.html.twig“未定义” 它与@ themename/site-header.html.twig一起工作,但我觉得它很丑,phpstorm不知道如何解决它 – jmwierzbicki 2017-07-18 14:47:08