1

我正在构建一个多站点 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" 
  }
 %}

请帮我!

4

3 回答 3

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') %}
于 2018-11-05T23:13:11.953 回答
1

如果我误解了您的目标,请纠正我,但是您是否认为可以通过检查域对其进行排序?(我假设它们会有所不同,因此可以用作分隔符):

{% if app.request.baseUrl == 'site1' %}
    ...
{% else %}
   ...
{% endif %}

如果我没记错的话,我也相信你可以创建一个默认的 Twig 控制器加载器来事先决定这一点,而不是将逻辑留给你的视图 :)

于 2018-11-05T16:44:30.810 回答
1

看看这里https://doc.ezplatform.com/en/latest/guide/design_engine/

您可以使用设计引擎,您可以在其中设置带有后备的不同主题。定义一个基本主题并为每个站点添加一个额外的主题,您可以在其中覆盖任何模板。

于 2018-11-06T14:04:30.813 回答