我正在构建多站点eZ Platforme安装,需要为模板指定主布局。 现在我有一个模版article.html.twig:
{% extends "main_layout.html.twig" %}
{% block content %}
<h1>{{ ez_render_field(content, 'body') }}</h1>
{% endblock %}
我想做的是这样的:
{% if(siteaccess = "site1"){
extends "site1_main_layout.html.twig"
}
else if(siteaccess = "site2"){
extends "site1_main_layout.html.twig"
}
%}
请帮助我!
答案 0 :(得分:3)
您可以仅在配置中配置布局:
ezpublish:
system:
site1:
pagelayout: "tpl1.html.twig"
site2:
pagelayout: "tpl2.html.twig"
之后,您可以在完整视图中使用以下内容:
{% extends pagelayout %}
{% block content %}
...
{% endblock %}
pagelayout
是eZ平台根据当前站点访问权从上述配置中预填充的变量。我认为至少需要eZ Platform 1.2。
还应注意,pagelayout
变量仅在全视图模板中可用。希望使用配置的页面布局的其他模板必须使用以下内容:
{% extends ezpublish.configResolver.parameter('pagelayout') %}
答案 1 :(得分:1)
如果我误解了您的目标,请纠正我,但是您可以通过检查域来对它进行排序吗? (我假设它们会有所不同,因此可以用作分隔符):
{% if app.request.baseUrl == 'site1' %}
...
{% else %}
...
{% endif %}
如果我没记错的话,我也相信您可以创建一个默认的Twig Controller Loader来事先决定,而不用将逻辑留给您的观点:)
答案 2 :(得分:1)
在这里https://doc.ezplatform.com/en/latest/guide/design_engine/
您可以使用设计引擎,在其中可以设置具有备用功能的不同主题。 定义一个基本主题,每个站点添加一个,访问一个额外的主题,您可以在其中覆盖任何模板。