Как изменить условие «если», связанное со страницей - PullRequest
0 голосов
/ 01 мая 2019

Я хотел бы включить файл tab_system.twig в два разных файла: archive.twig и blog_list.twig, чтобы иметь одинаковый html в этих двух файлах.

{% include "tab_system.twig" %}

В этом файле tab_system.twig есть условие добавить класс active:

{% if XXX %}active{% endif %}

Но это условие должно отличаться в зависимости от того, на какой странице находится пользователь.

Для blog_list.twig: {% if loop.first %}active{% endif %}

Для archive.twig: {% if item.term_id == term_page.term_id %}active{% endif %}

Я написал это безуспешно:

{% set addclass = '' %}

{% if is_blog_list %}
    {% set addclass = '{% if loop.first %}active{% endif %}' %}
{% elseif is_archive %}
    {% set addclass = '{% if item.term_id == term_page.term_id %}active{% endif %}' %}
{% endif %}

В tab_system.twig У меня есть система вкладок с меню из части и контента в другую часть. Я написал цикл JS для отображения соответствующего содержимого. Мне нужно добавить класс active на первую ссылку и первую вкладку содержимого в файле blog_list.twig и добавить класс active на вкладку ссылки и содержимого в зависимости от категории пользователя.

<div class="tab-menu-list">
   {% for item in all_posts %}
        <a href="#" class="tab-menu {{ addclass }}"</a>
   {% endfor %}
</div>

<div class="tab-content-list">
   {% for item in all_posts %}
        <div href="#" class="tab-content {{ addclass }}"</div>
   {% endfor %}
</div>

is_archive и is_blog_list - переменные, определенные в другом месте. Они работают

Как я могу создать условие? Заранее спасибо.

1 Ответ

0 голосов
/ 01 мая 2019

Поскольку я предполагаю, что вы зацикливаете записи, я бы сказал, что не усложняйте вещи,

single.twig

{% for i in 1..5 %}
    {% include 'article.twig' with { 'active' : loop.first, } %}
{% endfor %}

template_blog.twig

{% for item in items %}
    {% include 'article.twig' with { 'active' : item.term_id == term_page.term_id, } %}
{% endfor %}

article.twig

<div class="articles__list tab-content{{ active ? ' active'}}">
    foo
</div>

демо - просто измените основной шаблон


Если вы действительно хотите сохранитьчто for внутри шаблона article, что, на мой взгляд, не очень хорошая идея, вы все равно можете использовать переменные is_archive и is_blog_list внутри article, например,

article.twig

{% for item in items %}
    {% if is_archive %}
        {% set active = loop.first %}
    {% elseif is_blog_list %}
        {% set active = item.term_id == term_page.term_id %}
    {% endif %}
    <div class="articles__list tab-content{{ active ? ' active'}}">

{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...