2016-12-27 320 views
3

我嘗試了其他類似的以前的問題的所有步驟,但它沒有奏效。我想要在頂級菜單中獲得第三級子類別Opencart v2.3如何獲得頂級菜單中的第三級子類別Opencart v2.3

這下面的代碼是2levelcategory,我需要創建3級別的類別。 這是header.php文件代碼

$categories = $this->model_catalog_category->getCategories(0); 

    foreach ($categories as $category) { 
     if ($category['top']) { 
      // Level 2 
      $children_data = array(); 

      $children = $this->model_catalog_category->getCategories($category['category_id']); 

      foreach ($children as $child) { 
       $filter_data = array(
        'filter_category_id' => $child['category_id'], 
        'filter_sub_category' => true 
       ); 

       $children_data[] = array(
        'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 
        'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) 
       ); 
      } 

      // Level 1 
      $data['categories'][] = array(
       'name'  => $category['name'], 
       'children' => $children_data, 
       'column' => $category['column'] ? $category['column'] : 1, 
       'href'  => $this->url->link('product/category', 'path=' . $category['category_id']) 
      ); 
     } 
    } 

這是header.tpl文件代碼

<ul class="nav navbar-nav"> 
    <?php foreach ($categories as $category) { ?> 
    <?php if ($category['children']) { ?> 
    <li class="dropdown"><a href="<?php echo $category['href']; ?>" class="dropdown-toggle" data-toggle="dropdown"><?php echo $category['name']; ?></a> 
     <div class="dropdown-menu"> 
     <div class="dropdown-inner"> 
      <?php foreach (array_chunk($category['children'], ceil(count($category['children'])/$category['column'])) as $children) { ?> 
      <ul class="list-unstyled"> 
      <?php foreach ($children as $child) { ?> 
      <li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></li> 
      <?php } ?> 
      </ul> 
      <?php } ?> 
     </div> 
     <a href="<?php echo $category['href']; ?>" class="see-all"><?php echo $text_all; ?> <?php echo $category['name']; ?></a> </div> 
    </li> 
    <?php } else { ?> 
    <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li> 
    <?php } ?> 
    <?php } ?> 
    </ul> 

回答

4

您可以添加三級類別是這樣的: 控制器文件:

$categories = $this->model_catalog_category->getCategories(0); 

    foreach ($categories as $category) { 
     if ($category['top']) { 
      // Level 2 
      $children_data = array(); 

      $children = $this->model_catalog_category->getCategories($category['category_id']); 

      foreach ($children as $child) { 
       // Level 3 
       $grandchildren_data = array(); 

       $grandchildren = $this->model_catalog_category->getCategories($child['category_id']); 

       foreach ($grandchildren as $grandchild) { 

        $grandchild_filter_data = array(
         'filter_category_id' => $grandchild['category_id'], 
         'filter_sub_category' => true 
        ); 

        $grandchildren_data[] = array(
         'name' => $grandchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($grandchild_filter_data) . ')' : ''), 
         'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $grandchild['category_id']) 
        ); 
       } 

       $filter_data = array(
        'filter_category_id' => $child['category_id'], 
        'filter_sub_category' => true 
       ); 

       $children_data[] = array(
        'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 
        'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']), 
        'children' => $grandchildren_data, 
       ); 
      } 

      // Level 1 
      $data['categories'][] = array(
       'name'  => $category['name'], 
       'children' => $children_data, 
       'column' => $category['column'] ? $category['column'] : 1, 
       'href'  => $this->url->link('product/category', 'path=' . $category['category_id']) 
      ); 
     } 
    } 

查看文件:

<ul class="nav navbar-nav"> 
    <?php foreach ($categories as $category) { ?> 
     <?php if ($category['children']) { ?> 
      <li class="dropdown"><a href="<?php echo $category['href']; ?>" class="dropdown-toggle" data-toggle="dropdown"><?php echo $category['name']; ?></a> 
       <div class="dropdown-menu"> 
       <div class="dropdown-inner"> 
        <?php foreach (array_chunk($category['children'], ceil(count($category['children'])/$category['column'])) as $children) { ?> 
        <ul class="list-unstyled"> 
        <?php foreach ($children as $child) { ?> 
        <li> 
         <a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a> 
         <?php if($child['children']){ ?> 
          <ul> 
           <?php foreach ($child['children'] as $child) { ?> 
            <li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></li> 
           <?php } ?> 
          </ul> 
         <?php } ?> 
        </li> 
        <?php } ?> 
        </ul> 
        <?php } ?> 
       </div> 
       <a href="<?php echo $category['href']; ?>" class="see-all"><?php echo $text_all; ?> <?php echo $category['name']; ?></a> </div> 
      </li> 
     <?php } else { ?> 
      <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li> 
     <?php } ?> 
    <?php } ?> 
    </ul> 

我已經用默認主題測試了我在opencart 2.3.0.2上的工作: Opencart 2 3rd category level