установка мультисайтовой платформы eZ

Я создаю многосайтовую установку 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"}
%}

Пожалуйста, помогите мне!

1

Решение

Вы можете просто настроить макет в конфигурации:

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') %}
3

Другие решения

Поправьте меня, если я неправильно понял вашу цель, но вы считаете, что ее можно отсортировать, проверив домены? (Я предполагаю, что они будут разными, поэтому могли бы служить разделителем):

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

Если я не ошибаюсь, я также верю, что вы можете создать загрузчик Twig Controller по умолчанию, чтобы решить это заранее, вместо того, чтобы оставить логику своим взглядам 🙂

1

Посмотрите здесь https://doc.ezplatform.com/en/latest/guide/design_engine/

вы можете использовать дизайн движка, где вы можете настроить различные темы с запасной вариант.
Определите одну базовую тему и добавьте для каждого сайта доступ к одной дополнительной теме, где вы можете переопределить любой шаблон.

1
По вопросам рекламы [email protected]