Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


Recommended Posts

Добрый день.

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

Спасибо.

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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>

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

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

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

Link to post
Share on other sites

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

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ий уровень категорий шли под подкатегориями?

Спасибо.

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>

Link to post
Share on other sites

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

 

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

1.png

 

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

 

2.png

 

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.