Перейти к содержанию
ussa

помогите подкатегории 4 уровня

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

сделал вывод 3 уровня, не пойму как 4) помогите)

в controller/module/category.php

if ($child['category_id'] == $data['child_id']) {
    $child3 = $this->model_catalog_category->getCategories($child['category_id']);

        foreach ($child3 as $child_lv3) {
            $filter3 = array(
                'filter_category_id'  => $child_lv3['category_id'],
                'filter_sub_category' => true
            );

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

в catalog/module/category.tpl

<?php foreach ($category['children'] as $child) { ?>
    <?php foreach ($child['child3'] as $child_lv3) { ?>
    <?php if ($child_lv3['category_id'] == $child3_id) { ?>
        <li class="active">
            <a href="<?php echo $child_lv3['href']; ?>" class="active"><?php echo $child_lv3['name']; ?></a>
        </li>
    <?php } else { ?>
        <li>
            <a href="<?php echo $child_lv3['href']; ?>"><?php echo $child_lv3['name']; ?></a>
        </li>
    <?php } ?>
    <?php } ?>
<?php } ?>

 

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


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

Вам теперь надо проверять child3 на присуствие субкатегорий...

Незнаю, может поможет: 

https://webformyself.com/vyvod-mnogourovnevogo-menyu-s-neogranichennym-urovnem-vlozhennosti/

http://bezramok-tlt.ru/?mode=2&post=21

И что такое рекурсия на хабре: https://habrahabr.ru/post/280944/

Поймете логику - сами напишите для 4/5 уровня, или сделаете для неограниченого уровня вложений.

Изменено пользователем Skunk
overquote deleted

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


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

в общем сделал вроде все, но не отображает 4 категорию, ошибок нет

что не так делаю?

в tpl

 

 

 


<?php foreach ($category['children'] as $child) { ?> 
<?php foreach ($child['child3'] as $child_lv3) { ?> 
<?php if ($child_lv3['category_id'] == $child3_id) { ?> 
<li class="active"><a href="<?php echo $child_lv3['href']; ?>" class="active"><?php echo $child_lv3['name']; ?></a></li> 
<?php } else { ?> 
<li><a href="<?php echo $child_lv3['href']; ?>"><?php echo $child_lv3['name']; ?></a></li> 
<?php } ?> 
<?php foreach ($child['child3'] as $child3) { ?> 
<?php foreach ($child3['child4'] as $child_lv4) { ?> 
<?php if ($child4['category_id'] == $child4_id) { ?> 
<li class="active"><a href="<?php echo $child_lv4['href']; ?>" class="active"><?php echo $child_lv4['name']; ?></a></li> 
<?php } else { ?> 
<li><a href="<?php echo $child_lv4['href']; ?>"><?php echo $child_lv4['name']; ?></a></li> 
<?php } ?> 
<?php } ?> 
<?php } ?> 
<?php } ?> 
<?php } ?>

 

в php

 

 


if (isset($parts[2])) 
{ $data['child3_id'] = $parts[2]; } 
else 
{ $data['child3_id'] = 0; } 
if (isset($parts[3])) 
{ $data['child4_id'] = $parts[3]; }
else 
{ $data['child4_id'] = 0; }

 


		foreach ($categories as $category) {
			$children_data = array();

			if ($category['category_id'] == $data['category_id']) {
				$children = $this->model_catalog_category->getCategories($category['category_id']);

				foreach($children as $child) {

					$child3_data = array();
					if ($child['category_id'] == $data['child_id']) {
						$child3 = $this->model_catalog_category->getCategories($child['category_id']);
					
						foreach ($child3 as $child_lv3) {

                            $child4_data = array();
					if ($data['child_id'] == $data['child3_id']) {
						$child4 = $this->model_catalog_category->getCategories($child3['category_id']);
					
						foreach ($child4 as $child_lv4) {
							$filter4 = array(
								'filter_category_id'  => $child_lv4['category_id'],
								'filter_sub_category' => true
							);
						
							$child4_data[] = array(
								'category_id' => $child_lv4['category_id'],
								'name'  => $child_lv4['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter4) . ')' : ''),
								'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child_lv3['category_id'] . '_' . $child_lv4['category_id'])
							);
						}
					}

							$filter3 = array(
								'filter_category_id'  => $child_lv3['category_id'],
								'filter_sub_category' => true
							);
						
							$child3_data[] = array(
								'category_id' => $child_lv3['category_id'],
								'name'  => $child_lv3['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter3) . ')' : ''),
                                'child4' => $child4_data,
								'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child_lv3['category_id'])
							);
						}
					}

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

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

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

			$data['categories'][] = array(
				'category_id' => $category['category_id'],
				'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
				'children'    => $children_data,
				'href'        => $this->url->link('product/category', 'path=' . $category['category_id'])
			);
		}

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


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

дам на пиво, если в этом дело =)

может модуль какой есть?

Изменено пользователем ussa

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


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

Вот такой вариант работает:

В php

Spoiler

<?php
class ControllerModuleCategory extends Controller {
public function index() {
$this->load->language('module/category');

$data['heading_title'] = $this->language->get('heading_title');

if (isset($this->request->get['path'])) {
$parts = explode('_', (string)$this->request->get['path']);
} else {
$parts = array();
}

if (isset($parts[0])) {
$data['category_id'] = $parts[0];
} else {
$data['category_id'] = 0;
}

if (isset($parts[1])) {
$data['child_id'] = $parts[1];
} else {
$data['child_id'] = 0;
}

if (isset($parts[2])) {
$data['child_lv3_id'] = $parts[2];
} else {
$data['child_lv3_id'] = 0;
}

if (isset($parts[3])) {
$data['child_lv4_id'] = $parts[3];
} else {
$data['child_lv4_id'] = 0;
}

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

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

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

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

foreach ($categories as $category) {
$children_data = array();

if ($category['category_id'] == $data['category_id']) {
$children = $this->model_catalog_category->getCategories($category['category_id']);

foreach($children as $child) {
$children_lv3_data = array();

if ($child['category_id'] == $data['child_id']) {
$children_lv3 = $this->model_catalog_category->getCategories($child['category_id']);

foreach ($children_lv3 as $child_lv3) {
$children_lv4_data = array();

if ($child_lv3['category_id'] == $data['child_lv3_id']) {
$children_lv4 = $this->model_catalog_category->getCategories($child_lv3['category_id']);

foreach ($children_lv4 as $child_lv4) {
$filter_data_lv4 = array(
'filter_category_id'  => $child_lv4['category_id'],
'filter_sub_category' => true
);

$children_lv4_data[] = array(
'category_id' => $child_lv4['category_id'],
'name'  => $child_lv4['name'],
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child_lv3['category_id'] . '_' . $child_lv4['category_id'])
);
}

}

$filter_data_lv3 = array(
'filter_category_id'  => $child_lv3['category_id'],
'filter_sub_category' => true
);

$children_lv3_data[] = array(
'category_id' => $child_lv3['category_id'],
'name'  => $child_lv3['name'],
'children_lv4' => $children_lv4_data,
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child_lv3['category_id'])
);
}

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

$children_data[] = array(
'category_id' => $child['category_id'],
'name' => $child['name'],
'children_lv3' => $children_lv3_data,
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);
}
}

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

$data['categories'][] = array(
'category_id' => $category['category_id'],
'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
'children'    => $children_data,
'href'        => $this->url->link('product/category', 'path=' . $category['category_id'])
);
}

return $this->load->view('module/category', $data);
}
}

 

 

Соответственно в tpl:

Spoiler

<?php if ($child['category_id'] == $child_id) { ?>
<?php if ($child['children_lv3']) { ?>
<?php foreach ($child['children_lv3'] as $child_lv3) { ?>
<?php if ($child_lv3['category_id'] == $child_lv3_id) { ?>
<?php if ($child_lv3['children_lv4']) { ?>
<?php foreach ($child_lv3['children_lv4'] as $child_lv4) { ?>
<?php if ($child_lv4['category_id'] == $child_lv4_id) { ?>
Тут активная подкатегория 4-го уровня через <?php echo $child_lv4['name']; ?>
<?php } else { ?>
Тут ссылка на неактивные подкатегории 4-го уровня <a href="<?php echo $child_lv4['href']; ?>"><?php echo $child_lv4['name']; ?></a>
<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>

 

 

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.