我想在两个不同的文件中包含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
是在其他地方定义的变量。他们工作
如何创建条件?预先谢谢你。
答案 0 :(得分:0)
由于我假设您正在循环记录,所以我说不要使事情复杂化
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>
demo -只需更改主模板
如果您真的想将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 %}