Я создаю многосайтовую установку 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"}
%}
Пожалуйста, помогите мне!
Вы можете просто настроить макет в конфигурации:
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') %}
Поправьте меня, если я неправильно понял вашу цель, но вы считаете, что ее можно отсортировать, проверив домены? (Я предполагаю, что они будут разными, поэтому могли бы служить разделителем):
{% if app.request.baseUrl == 'site1' %}
...
{% else %}
...
{% endif %}
Если я не ошибаюсь, я также верю, что вы можете создать загрузчик Twig Controller по умолчанию, чтобы решить это заранее, вместо того, чтобы оставить логику своим взглядам 🙂
Посмотрите здесь https://doc.ezplatform.com/en/latest/guide/design_engine/
вы можете использовать дизайн движка, где вы можете настроить различные темы с запасной вариант.
Определите одну базовую тему и добавьте для каждого сайта доступ к одной дополнительной теме, где вы можете переопределить любой шаблон.