Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


ussa

Recommended Posts

сделал вывод 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'])
			);
		}
Надіслати
Поділитися на інших сайтах


  • 4 months later...

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

В 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.