2016-03-04 5 views
1

Im редактируя шаблон для 2.0.x открытой корзины и узнал, что первое меню - верхняя сторона - показывает только до второй подкатегории. и i'v искали файлы контроллера, файлы шаблонов, чтобы отредактировать его, как я хочу, - покажите только один уровень (или все уровни .., поскольку я могу получить более глубокий уровень подсайтов ..) подкатегорий в навигации слева --- для пару недель ... и не мог найти пути.получить категорию третьего уровня в opencart 2

header.tpl

<ul> 
          <?php foreach ($categories as $category_1) { ?> 
          <li class="sub-menu"><a href="<?php echo $category_1['href']; ?>"><div><?php echo $category_1['name']; ?></div></a> 
           <?php if ($category_1['children']) { ?> 
           <div class="mega-menu-content style-2 col-4 clearfix"> 
           <?php foreach($category_1['children'] as $category_2) { ?> 
            <ul id="m2"> 
             <li class="mega-menu-title"><a href="<?php echo $category_2['href']; ?>"><div><?php echo $category_2['name']; ?></div></a> 
             <?php if ($category_2['children']) { ?> 
              <ul id="m3"> 
               <?php foreach($category_2['children'] as $category_3) { ?> 
               <li><a href="<?php echo $category_3['href']; ?>"><div><?php echo $category_3['name']; ?></div></a></li> 
               <?php } ?> 
              </ul> 
             <?php } ?> 
             </li> 
            </ul> 
            <?php } ?> 
           </div> 
           <?php } ?> 
          </li><!-- .mega-menu end --> 
          <?php } ?> 
         </ul> 

контроллер - header.php // ниже написано для того, чтобы третий уровень подкатегорий

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

     foreach ($categories_1 as $category_1) { 
     $level_2_data = array(); 

     $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']); 

     foreach ($categories_2 as $category_2) { 
      $level_3_data = array(); 

      $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']); 

      foreach ($categories_3 as $category_3) { 
       $level_3_data[] = array(
        'name' => $category_3['name'], 
             'column' => $category_3['column'] ? $category_3['column'] : 1, 
        'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id']) 
       ); 
      } 

      $level_2_data[] = array(
       'name'  => $category_2['name'], 
       'children' => $level_3_data, 
       'href'  => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id']) 
      );    
     } 

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

// End of the written addition 

кто может помочь на это, пожалуйста?

ответ

1

файл контроллера

$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 
       $children_data2 = array(); 
       $children2 = $this->model_catalog_category->getCategories($child['category_id']); 
       foreach ($children2 as $child2) { 
        $children_data2[] = array(
        'name' => $child2['name'], 
        'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'].'_'.$child2['category_id']) 
        ); 
       } 

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

       $children_data[] = array(
        'children'=>$children_data2, 
        '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']) 
      ); 
     } 
    } 

В связи 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 if($child['children']) { ?> 
      <?php foreach($child['children'] as $child2) { ?> 
      <ul> 
      <li><a href="<?php echo $child2['href']; ?>"><?php echo $child2['name']; ?></a></li> 
      </ul> 
      <?php } } ?> 
      <?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> 

Вы должны отрегулировать некоторые CSS код, чтобы смотреть это хорошо. Он протестирован на OpenCart версии 2.0.1.1.

Смежные вопросы