Jump to content
Sign in to follow this  
newjey

Вывод категорий третьего уровня в горизонтальном меню.

Recommended Posts

Добрый день.

Подскажите как вывести под категории третьего уровня в горизонтальном меню.

Спасибо.

Share this post


Link to post
Share on other sites

по ангиологии как и у оп 1,5+ посмотрите на форуме где-то было решение 

Share this post


Link to post
Share on other sites

по ангиологии как и у оп 1,5+ посмотрите на форуме где-то было решение 

По аналогии сделал, но не получается, не выводятся. Вот и спрашиваю, может есть отличия в переменных?

Share this post


Link to post
Share on other sites

По аналогии сделал, но не получается, не выводятся. Вот и спрашиваю, может есть отличия в переменных?

Показывайте что делали  (и не забивайте добавлять код в код)

Share this post


Link to post
Share on other sites

находим: в /catalog/controller/common/header.php

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

И заменяем на:

//3 level
 
					//*** Получаем список подкгатегорий для каждой категории второго уровня
								$subchildren = $this->model_catalog_category->getCategories($child['category_id']);
 
								    //*** Обнуляем массив для каждого набора подкатегорий вторго уровня
									$subchildren_data = array(); 
 
										//*** Получаем список подкгатегорий для каждой категории второго уровня
										foreach ($subchildren as $subchild) {
												//Будем вычислять кол-во товаров в категориях только если это кол-во надо показывать
												if ($this->config->get('config_product_count')) {
													$data = array(
														'filter_category_id'  => $subchild['category_id'],
														'filter_sub_category' => true
													);
 
													$product_total = $this->model_catalog_product->getTotalProducts($data);
												}
 
												//*** Получаем список подкгатегорий для каждой категории второго уровня формируем массив со списками подкатегорий второго уровня
 
												$subchildren_data[] = array(
													'name'  => $subchild['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
													'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']. '_' . $subchild['category_id'])	
 
												);						
											}								
 
					$children_data[] = array(
						'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
						'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),
						//*** Добавляем к каждой категории первого уровня массив с подкатегориями второго уровня						
						'subchildren' => $subchildren_data,
 
					);						
 
				}
 
					//3 level

Далее находим: в /catalog/view/theme/default/template/common/header.tpl

<li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>

и заменяем на:

<li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a>
           <?php if($category['children'][$i]['subchildren']) { ?>
                     <?php foreach ($category['children'][$i]['subchildren'] as $child) { ?>
                      <li><a href="<?php echo $child['href']; ?>"> - <?php echo $child['name']; ?></a></li>
                      <?php } ?>
                  <?php } ?>
                </li>

Так же > заменил на >

Вот так вот делал.

Share this post


Link to post
Share on other sites

Вот так это должно быть контроллер 

// 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) {
     $filter_data = array(
       'filter_category_id'  => $child['category_id'],
       'filter_sub_category' => true
     );

   //level 3
   $subchildren_data = array();
   $subchildren = $this->model_catalog_category->getCategories($child['category_id']);

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

   $subchildren_data[] = array(
     'name'  => $subchild['name'] . ($this->config->get('config_product_count') ? ' <span class="menu_summ">' . $this->model_catalog_product->getTotalProducts($filter_data) . '</span>' : ''),
     'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']. '_' . $subchild['category_id']),
   );
}
 				
  $children_data[] = array(
    'name'        => $child['name'] . ($this->config->get('config_product_count') ? ' <span class="menu_summ">' . $this->model_catalog_product->getTotalProducts($filter_data) . '</span>' : ''),
    'href'        => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),
    'subchildren' => $subchildren_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'])
  );
 }
}

 выводит 3ю категорию (tpl)

 <?php if($child['subchildren']) { ?>
  
    <ul class="list-unstyled">
     <?php foreach ($child['subchildren'] as $subchild) { ?>  
       <li><a class="pull-left" href="<?php echo $subchild['href']; ?>"><?php echo $subchild['name']; ?></a></li>
     <?php } ?> 
    </ul>

 <?php } ?>

Share this post


Link to post
Share on other sites

Спасибо, получилось.

Share this post


Link to post
Share on other sites

Подскажите ещё как правильно в tpl вывести, а то как-то коряво получается Подкатегории с одной стороны а 3уровень с другой стороны.

Вот код меню

<div class="collapse navbar-collapse navbar-ex1-collapse">
      <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>
    </div>
  </nav><hr>
</div>
<?php } ?>

куда правильно вставить 

<?php if($child['subchildren']) { ?>
  
    <ul class="list-unstyled">
     <?php foreach ($child['subchildren'] as $subchild) { ?>  
       <li><a class="pull-left" href="<?php echo $subchild['href']; ?>"><?php echo $subchild['name']; ?></a></li>
     <?php } ?> 
    </ul>
 
 <?php } ?>

что бы 3ий уровень категорий шли под подкатегориями?

Спасибо.

Share this post


Link to post
Share on other sites

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

<ul>

<li>

...... вот сюда

</li>

</ul>

</li>

<?php } ?>

</ul>

Share this post


Link to post
Share on other sites

Вставил но получается как-то криво(

 

Это вот так выглядят категории 3го уровня

1.png

 

И так же стали выглядеть категории второго уровня(

 

2.png

 

Это неправильно код вставил или надо править стилями теперь?

Share this post


Link to post
Share on other sites

Это уже как-то сами пробуйте, не все же за Вас делать

Share this post


Link to post
Share on other sites

Понял что сам, но не понял в коде дело или стилями править?)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.