我十月份与这个人在一起已经有一段时间了。我不知道我是否会以正确的方式进行操作。我已经使用nestedtree设置了类别和子类别。在“类别”模型中,我使用以下范围仅在页面上呈现父类别。
public function scopeCategory($query)
{
return $query->where('parent_id', 0);
一切正常。我通过slug将其连接到记录详细信息页面,该页面仅将父类别显示为标题。
{% if record %}
<h4>{{ record.cat_title }}</h4>
{% else %}
{{ notFoundMessage }}
{% endif %}
现在,我想在详细信息页面上在此处呈现子类别,因此,当用户单击列表页面(如农业)时的类别时,详细信息页面将显示农业下的所有子类别,然后用户可以进一步导航至产品。不确定如何实现子类别部分。我尝试了一堆代码,但是什么也没做。有什么解决办法吗?
其他信息:我已经使用范围来仅获取列表页面上的父类别
答案 0 :(得分:1)
我假设您已经使用过nested-tree
[https://octobercms.com/docs/database/traits#nested-tree]。
首先,我们只需将父级
parentCats
传递到视图/页面
use HardikSatasiya\SoTest\Models\Categories;
function onStart() {
$this['parentCats'] = Categories::getAllRoot();
}
在页面/视图中显示
category
及其sub-categories
到N level
,我们可以使用此render_cats macro
{% import _self as thisPage %}
{% macro render_cats(items) %}
{% import _self as thisPage %}
{% for item in items %}
<li>{{ item.level }} {{ item.title }}
{% if item.childcount > 0 %}
<ul>
{{ thisPage.render_cats(item.children) }}
</ul>
{% endif %}
</li>
{% endfor %}
{% endmacro %}
<ul>
{{ thisPage.render_cats(parentCats) }}
<!-- we are passing parent cats ^ here -->
</ul>
输出
<ul>
<li>
0 Parent Cat 1
<!-- ^ this is level -->
<ul>
<li>
1 Sub cat 1
<ul>
<li>2 Sub Sub cat 1
</li>
<li>2 Sub Sub cat 3
</li>
<li>2 Sub Sub cat 3
</li>
</ul>
</li>
<li>1 Sub cat 2
</li>
</ul>
</li>
<li>
0 Parent Cat 2
<ul>
<li>1 Sub cat 3
</li>
<li>1 Sub cat 4
</li>
</ul>
</li>
</ul>
如有疑问,请发表评论