如何更改与页面相关的 "if" 条件
How to change "if" condition related to a page
我想将 tab_system.twig
文件包含在两个不同的文件中:archive.twig
和 blog_list.twig
以便在这两个文件中具有相同的 html。
{% include "tab_system.twig" %}
在这个 tab_system.twig
文件中,我有一个条件要添加 active
class :
{% 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循环显示相应的内容。我需要在 blog_list.twig
文件的第一个 link 和第一个内容选项卡上添加 active
class,并将 active
class 添加到 link 和内容选项卡,具体取决于用户所属的类别。
<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
是别处定义的变量。他们工作
如何创建条件?提前谢谢你。
因为我假设您正在循环记录,所以我会说不要使事情过于复杂,
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 %}
我想将 tab_system.twig
文件包含在两个不同的文件中:archive.twig
和 blog_list.twig
以便在这两个文件中具有相同的 html。
{% include "tab_system.twig" %}
在这个 tab_system.twig
文件中,我有一个条件要添加 active
class :
{% 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循环显示相应的内容。我需要在 blog_list.twig
文件的第一个 link 和第一个内容选项卡上添加 active
class,并将 active
class 添加到 link 和内容选项卡,具体取决于用户所属的类别。
<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
是别处定义的变量。他们工作
如何创建条件?提前谢谢你。
因为我假设您正在循环记录,所以我会说不要使事情过于复杂,
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 %}