newjey

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

Рекомендуемые сообщения

newjey    1

Добрый день.

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

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    333

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
newjey    1

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    333

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
newjey    1

находим: в /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>

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    333

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
newjey    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
newjey    1

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

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    333

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
newjey    1

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

 

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

1.png

 

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

 

2.png

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    333

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
newjey    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу