За последние 24 часа нас посетили 22590 программистов и 1280 роботов. Сейчас ищут 800 программистов ...

Помогите пожалуйста с циклом php, цикл по вытаскиванию категорий

Тема в разделе "Прочие вопросы по PHP", создана пользователем Shram, 1 июн 2016.

Метки:
  1. Shram

    Shram Новичок

    С нами с:
    1 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    Добрый день, у меня такая проблема: Создаю интернет магазин на opencart, вывел категории, у которых есть дочерние категории и хочу сделать выпадающий список, но беда в том что в этом цикле изначально нет подкатегорий. То есть они появляются только после того как я нажимаю на главную категорию. и Появляются только в той категории на которую я нажал. Надеюсь я доходчиво объяснил проблему. Ломаю голову целый день, и никак не могу понять где ошибка. Буду очень благодарен если кто-то сможет помочь [​IMG]
    Код (Text):
    1. <div class="list-group-cat">
    2. <h2>Категории</h2>
    3. <ul class="drop_vert_menu">
    4.   <?php foreach ($categories as $category) { ?>
    5.       <?php if ($category['category_id'] == $category_id) { ?>
    6.               <li><a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
    7.       <?php if ($category['children']) { ?>
    8.       <ul>
    9.           <?php foreach ($category['children'] as $child) { ?>
    10.           <?php if ($child['category_id'] == $child_id) { ?>
    11.                   <li><a href="<?php echo $child['href']; ?>" class="list-group-item active">!- <?php echo $child['name']; ?></a></li>
    12.          
    13.           <?php } else { ?>
    14.               <li><a href="<?php echo $child['href']; ?>" class="list-group-item">?- <?php echo $child['name']; ?></a></li>
    15.           <?php } ?>
    16.           <?php } ?>
    17.           </li>
    18.       </ul>
    19.   <?php } ?>
    20.  
    21.   <?php } else { ?>
    22.           <li><a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a></li>
    23.   <?php } ?>
    24.   <?php } ?>
    25. </ul>
    26. </div>
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Код довольно логичный, может в $categories отсутствуют все нужные данные? Попробуй подняться выше и посмотреть как в $categories попадают данные, возможно из базы данных, тогда нужно будет реализовать их получение под твоё условие.
     
  3. Shram

    Shram Новичок

    С нами с:
    1 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    Спасибо, сейчас попробую найти попадание данных. Вот в интернете нашел код, вроде более подходит или нет?:
    Код (Text):
    1. <?php foreach($cat as $key => $item): ?>
    2.                         <?php if(count($item) > 1): // если это родительская категория ?>
    3.                         <h3><li><a href="#"><?=$item[0]?></a></li></h3>
    4.                             <ul>
    5.                                 <li>- <a href="<?=PATH?>category/<?=$key?>">Все модели</a></li>
    6.                                 <?php foreach($item['sub'] as $key => $sub): ?>
    7.                                 <li>- <a href="<?=PATH?>category/<?=$key?>"><?=$sub?></a></li>
    8.                                 <?php endforeach; ?>
    9.                             </ul>
    10.                         <?php elseif($item[0]): // если самостоятельная категория ?>
    11.                             <li><a href="<?=PATH?>category/<?=$key?>"><?=$item[0]?></a></li>
    12.                         <?php endif; ?>
    13.                     <?php endforeach; ?>
    --- Добавлено ---
    Вот как получается массив категорий, но не пойму в чем ошибка:
    Код (Text):
    1. // Menu
    2.         $this->load->model('catalog/category');
    3.  
    4.         $this->load->model('catalog/product');
    5.  
    6.         $data['categories'] = array();
    7.  
    8.         $categories = $this->model_catalog_category->getCategories(0);
    9.  
    10.         foreach ($categories as $category) {
    11.             if ($category['top']) {
    12.                 // Level 2
    13.                 $children_data = array();
    14.  
    15.                 $children = $this->model_catalog_category->getCategories($category['category_id']);
    16.  
    17.                 foreach ($children as $child) {
    18.                     $filter_data = array(
    19.                         'filter_category_id'  => $child['category_id'],
    20.                         'filter_sub_category' => true
    21.                     );
    22.  
    23.                     $children_data[] = array(
    24.                         'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
    25.                         'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
    26.                     );
    27.                 }
    28.  
    29.                 // Level 1
    30.                 $data['categories'][] = array(
    31.                     'name'     => $category['name'],
    32.                     'children' => $children_data,
    33.                     'column'   => $category['column'] ? $category['column'] : 1,
    34.                     'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
    35.                 );
    36.             }
    37.         }
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Ну вот во втором куске посмотри все ли нужные тебе данные есть
     
  5. Shram

    Shram Новичок

    С нами с:
    1 июн 2016
    Сообщения:
    3
    Симпатии:
    0
    спасибо