如何在octobercms中显示子类别

问题描述 投票:-1回答:1

我和octobercms已经有一段时间了。我不知道我是否正确的方式。我已经使用nestedtree设置了我的类别和子类别。在Category模型中,我使用下面的范围来仅渲染页面上的父类别。

public function scopeCategory($query)
{
    return $query->where('parent_id', 0);

这一切都很好。我通过slug将它连接到一个记录详细信息页面,它只显示页面上的父类别作为标题。

{% if record %}
<h4>{{ record.cat_title }}</h4>
{% else %}
{{ notFoundMessage }}
 {% endif %}

现在我想在详细信息页面上显示子类别,因此当用户点击列表页面中的类别(如农业)时,详细信息页面会显示农业下的所有子类别,然后用户可以进一步导航到产品。不确定如何实现子类别部分。我尝试了一堆代码,但它没有做任何事情。对此有何解决方案?

附加信息:我已经使用范围来获取列表页面上的父类别

laravel twig octobercms
1个回答
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-categoriesN 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>

如有疑问请发表评论

© www.soinside.com 2019 - 2024. All rights reserved.