Ответы пользователя по тегу CodeIgniter
  • Как сделать категории с подкатегориями в Codeigniter?

    Stiflerus
    @Stiflerus Автор вопроса
    Саморазвитие мое все.
    Все сделал:
    Таблица "blog_categories" структура:
    blog_categories_id
    blog_categories_name
    blog_parent_id
    blog_categories_discription


    Модель: pages_model

    function get_cat() {
            $query = $this->db->get('<i>blog_categories</i>'); // моя таблица
        
            foreach($query->result_array() as $row ){
                if(!$row['<i>blog_parent_id</i>']){ // если нет поля blog_parent_id, то есть подкатегории
                    $data[$row['<i>blog_categories_id</i>']][] = $row['<i>blog_categories_name</i>']; // выводим только назву категории
                }else {
                    $data[$row['<i>blog_parent_id</i>']]['sub'][$row['<i>blog_categories_id</i>']] = $row['blog_categories_name']; // если есть подкатегории виводим их как асоциативный масив, насколько я понял
                }
            }
            return $data;  
        }


    Использую библиотеку для вывода сайта и туда передал массив $data:
    $CI->load->view('inc/blog_right',$data);
    Но можно и в конроллере передать:
    $this>load->view('inc/blog_right',$data);

    Передал в контроллер:
    $data['blog_categories'] = $this->pages_model->get_cat();


    И в виде blog_right (в моем случае) вивести:
    <?php foreach($blog_categories as $key => $item): ?>
    	<?php if(count($item) > 1): // якщо це під категорія ?>
    		<li><a href="javascript:;"><?=$item[0]?></a>
    			<ul class="acc-menu no-circled">
    				<li><a href="<i>Нужно поставить ссылки</i>/<?=$key?>">Всі статті</a></li>
    					<?php foreach($item['sub'] as $key => $sub): ?>
    					<li><a  href="<i>Нужно поставить ссылки</i>/<?=$key?>"><?=$sub?></a></li>
    					<?php endforeach; ?>
    				</ul></li>
    			<?php elseif($item[0]): // якщо це самостійна категорія ?>
    		<li><a href="<i>Нужно поставить ссылки</i>/<?=$key?>"><?=$item[0]?></a></li>
    	<?php endif; ?>
    <?php endforeach; ?>


    Можете проверить как должен выглядеть массив:
    <?php print_r($blog_categories);?>
       Array
    (
        [1] => Array
            (
                [0] => Програмування
                [sub] => Array
                    (
                        [3] => Веб-розробка
                        [4] => вап в пва
                    )
            )
        [2] => Array
            (
                [0] => Веб-розробка
            )
    )


    Чесно признаю взял решение с курса команды WebForMySelf. Чтобы не было рекламы, скажу только что курс о магазине.
    Ответ написан
    Комментировать