我和octobercms已经有一段时间了。我不知道我是否正确的方式。我已经使用nestedtree设置了我的类别和子类别。在Category模型中,我使用下面的范围来仅渲染页面上的父类别。
public function scopeCategory($query)
{
return $query->where('parent_id', 0);
这一切都很好。我通过slug将它连接到一个记录详细信息页面,它只显示页面上的父类别作为标题。
{% if record %}
<h4>{{ record.cat_title }}</h4>
{% else %}
{{ notFoundMessage }}
{% endif %}
现在我想在详细信息页面上显示子类别,因此当用户点击列表页面中的类别(如农业)时,详细信息页面会显示农业下的所有子类别,然后用户可以进一步导航到产品。不确定如何实现子类别部分。我尝试了一堆代码,但它没有做任何事情。对此有何解决方案?
附加信息:我已经使用范围来获取列表页面上的父类别
我假设你已经使用过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>
如有疑问请发表评论