如何使用Twig从Craft CMS中的level(1)结构项目的1个条目中获取level(2)条目?

时间:2018-11-16 09:47:01

标签: twig craftcms

我有一个结构,我只想定位所有1级条目下的所有2级条目,但要显示所有1级条目 小狗:    牧羊犬,贵宾犬,斯塔菲

鸟类:鸽子,海鸥,鹦鹉 猫:虎斑猫,蓬松猫,Bermise

所以我的菜单显示“狗,鸟,猫”,而在“猫<li>”中显示所有猫

我在任何回溯项下都获得了所有level(2)物品。不只是猫

{% set interests = craft.entries.section('interests').level(1) %}

<div>
    <ul>
        {% for interest in interests %}
        {% if interest.title != 'Cats' %}
        <li>
            <a href="{{ interest.url }}">
                {{ interest.title }}
            </a>
        </li>
        {% endif %}
        {% endfor %}
    </ul>
    <ul>
        <li>
            <a href="/">Cats</a>
            <ul>
                {% for interest in craft.entries.section('interests').level(2) %}
                <li>
                    <a href="{{ interest.url }}">
                        {{interest}}
                    </a>
                </li>
                {% endfor %}
            </ul>
        </li>
    </ul>
</div>

我怎么只能找回猫下的人?

还有没有更清洁的方法可以做到这一点?无需检查标题是否为!=“猫”而不是硬编码“猫”

您能解释一下它是如何工作的,为什么我的情况糟透了吗?

1 个答案:

答案 0 :(得分:0)

我建议使用Craft的nav标签来完成此操作。一种不对猫进行硬编码的干净方法是,创建“菜单”结构,在其中创建带有条目字段字段的新条目,以为每个条目选择一个感兴趣的条目,但猫除外,而是获取该条目部分。希望这会有所帮助。

{% set interests = craft.entries.section('interests').level(1) %}

<ul id="nav">
    {% nav interest in interests %}
    	{% if interest.title != 'Cats' %}
        <li>
            <a href="{{ interest.url }}">{{ interest.title }}</a>
            {% ifchildren %}
            	{% if interest.level == 2 }
                  <ul>{% children %}</ul>
                {% endif %}
            {% endifchildren %}
        </li>
        {% endif %}
    {% endnav %}
</ul>