Добрый день, у меня такая проблема: Создаю интернет магазин на opencart, вывел категории, у которых есть дочерние категории и хочу сделать выпадающий список, но беда в том что в этом цикле изначально нет подкатегорий. То есть они появляются только после того как я нажимаю на главную категорию. и Появляются только в той категории на которую я нажал. Надеюсь я доходчиво объяснил проблему. Ломаю голову целый день, и никак не могу понять где ошибка. Буду очень благодарен если кто-то сможет помочь Код (Text): <div class="list-group-cat"> <h2>Категории</h2> <ul class="drop_vert_menu"> <?php foreach ($categories as $category) { ?> <?php if ($category['category_id'] == $category_id) { ?> <li><a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a> <?php if ($category['children']) { ?> <ul> <?php foreach ($category['children'] as $child) { ?> <?php if ($child['category_id'] == $child_id) { ?> <li><a href="<?php echo $child['href']; ?>" class="list-group-item active">!- <?php echo $child['name']; ?></a></li> <?php } else { ?> <li><a href="<?php echo $child['href']; ?>" class="list-group-item">?- <?php echo $child['name']; ?></a></li> <?php } ?> <?php } ?> </li> </ul> <?php } ?> <?php } else { ?> <li><a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a></li> <?php } ?> <?php } ?> </ul> </div>
Код довольно логичный, может в $categories отсутствуют все нужные данные? Попробуй подняться выше и посмотреть как в $categories попадают данные, возможно из базы данных, тогда нужно будет реализовать их получение под твоё условие.
Спасибо, сейчас попробую найти попадание данных. Вот в интернете нашел код, вроде более подходит или нет?: Код (Text): <?php foreach($cat as $key => $item): ?> <?php if(count($item) > 1): // если это родительская категория ?> <h3><li><a href="#"><?=$item[0]?></a></li></h3> <ul> <li>- <a href="<?=PATH?>category/<?=$key?>">Все модели</a></li> <?php foreach($item['sub'] as $key => $sub): ?> <li>- <a href="<?=PATH?>category/<?=$key?>"><?=$sub?></a></li> <?php endforeach; ?> </ul> <?php elseif($item[0]): // если самостоятельная категория ?> <li><a href="<?=PATH?>category/<?=$key?>"><?=$item[0]?></a></li> <?php endif; ?> <?php endforeach; ?> --- Добавлено --- Вот как получается массив категорий, но не пойму в чем ошибка: Код (Text): // 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 ); $children_data[] = array( 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } // 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']) ); } }