2017-12-01 19 views
0

カテゴリメニューにlvl 3サブメニューを作成しようとしていますが、これまでのところ成功していません。OpenCart 3.0.2.0レベル3のサブカテゴリ

Iは、foreachループのLVL2内部共通

カタログ/コントローラ/にファイルをmenu.phpする/

// 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']) 
       ); 
     } 

そしてmenu.twigファイル にファイルmenu.php以下のコードを追加私が追加以下のコードは、後の子供のためのforループ内に>

{% if child.children %} 
    <ul> 
     {% for children in child.children %} 
     <li><a href="{{ children.href }}">{{ children.name }}</a></li> 
     {% endfor %} 
    </ul> 
    {% endif %} 

何か提案がありますか?

+0

あなたのモデル/カタログ/ category.phpのgetCategories return lvl 3 data? – imox

+0

@imoxいいえ、それはできません。私はlvl 3を取得する方法を理解しているようです! – TasosTogr

+0

lvl3とは何ですか?モデルのgetCategories関数が見えますか? – imox

答えて

0

このお試しください: カタログ\ビュー\テーマ\デフォルト\テンプレート\共通\メニュー:共通\ menu.php

<?php 
class ControllerCommonMenu extends Controller { 
    public function index() { 
     $this->load->language('common/menu'); 

     // Menu 
     $this->load->model('catalog/category'); 

     $this->load->model('catalog/product'); 

     $data['categories'] = array(); 

     $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']) 
       ); 
      } 
     } 

     return $this->load->view('common/menu', $data); 
    } 
} 

ビュー \ カタログ\コントローラ:

コントローラを.twig

{% if categories %} 
<div class="container"> 
    <nav id="menu" class="navbar"> 
    <div class="navbar-header"><span id="category" class="visible-xs">{{ text_category }}</span> 
     <button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button> 
    </div> 
    <div class="collapse navbar-collapse navbar-ex1-collapse"> 
     <ul class="nav navbar-nav"> 
     {% for category in categories %} 
     {% if category.children %} 
     <li class="dropdown"><a href="{{ category.href }}" class="dropdown-toggle" data-toggle="dropdown">{{ category.name }}</a> 
      <div class="dropdown-menu"> 
      <div class="dropdown-inner"> {% for children in category.children|batch(category.children|length/category.column|round(1, 'ceil')) %} 
       <ul class="list-unstyled"> 
       {% for child in children %} 
        <li><a href="{{ child.href }}">{{ child.name }}</a> 
         {% if child.children %} 
          <ul> 
           {% for children in child.children %} 
            <li><a href="{{ children.href }}">{{ children.name }}</a></li> 
           {% endfor %} 
          </ul> 
         {% endif %} 
        </li> 
       {% endfor %} 
       </ul> 
       {% endfor %}</div> 
      <a href="{{ category.href }}" class="see-all">{{ text_all }} {{ category.name }}</a> </div> 
     </li> 
     {% else %} 
     <li><a href="{{ category.href }}">{{ category.name }}</a></li> 
     {% endif %} 
     {% endfor %} 
     </ul> 
    </div> 
    </nav> 
</div> 
{% endif %} 

最後に、あなたのキャッシュ、小枝キャッシュ、ocmodキャッシュなど...

+0

@DigiCartあなたは私と同じことをやっていますが、問題はモデルが3つのカテゴリに分類されていないという事実から来ています。 – TasosTogr

+0

それは私のために働く。 – DigitCart

関連する問題