如何在十月厘米中显示子类别

时间:2019-02-21 19:57:04

标签: laravel twig octobercms

我十月份与这个人在一起已经有一段时间了。我不知道我是否会以正确的方式进行操作。我已经使用nestedtree设置了类别和子类别。在“类别”模型中,我使用以下范围仅在页面上呈现父类别。

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

一切正常。我通过slug将其连接到记录详细信息页面,该页面仅将父类别显示为标题。

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

现在,我想在详细信息页面上在此处呈现子类别,因此,当用户单击列表页面(如农业)时的类别时,详细信息页面将显示农业下的所有子类别,然后用户可以进一步导航至产品。不确定如何实现子类别部分。我尝试了一堆代码,但是什么也没做。有什么解决办法吗?

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

1 个答案:

答案 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-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>

如有疑问,请发表评论