Неограниченные подкатегории php и mysql li list открытые категории корзины - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть следующие таблицы category и category_description в php mysql. Мой вопрос заключается в том, как с помощью приведенной ниже информации я могу создать неограниченное количество подкатегорий в структуре ul li. Я рассмотрел различные примеры здесь, но безрезультатно большое спасибо за ваше время на чтение этого вопроса. я с нетерпением жду вашего ответа

Column         Type         Null    Default
category_id    int(11)      No       
image          varchar(255) Yes     NULL     
parent_id      int(11)      No      0    
top            tinyint(1)   No       
column         int(3)       No       
sort_order     int(3)       No      0    
status         tinyint(1)   No       
date_added     datetime     No      0000-00-00 00:00:00      
date_modified  datetime     No      0000-00-00 00:00:00      

И описания хранятся в этой таблице

Column            Type          Null
category_id       int(11)       No       
language_id       int(11)       No       
name              varchar(255)  No       
description       text          No       
meta_description  varchar(255)  No       
meta_keyword      varchar(255)  No       

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

opencart имеет метод

$this->model_catalog_category->getCategory()

, и вы передаете идентификатор категории в качестве параметра, например

$category = this->model_catalog_category->getCategory(5);

Это также обрабатывает соответствующее описание объединения, поэтому вам не нужно обращаться к ним напрямую.Как уже указывал @Till Helge Helwig, вам нужно использовать рекурсивную функцию, если вы хотите построить их дерево со всеми подкатегориями.Хорошее место, чтобы увидеть пример этого, в действующем коде модуля категории.Прокрутите до конца файла catalog/controller/module/category.php, и вы увидите рекурсивную функцию, которая создает HTML для него

1 голос
/ 30 ноября 2011

У вас уже есть столбец parent_id. Используйте это, чтобы представить отношения между категориями. Если категория находится на корневом уровне, для этого столбца устанавливается значение NULL.

Другим подходом будет третья таблица, которая отображает категории в подкатегории. Это позволит вам идти как сверху вниз, так и снизу вверх. Зависит от вашего приложения, какой подход вы используете.

Чтобы справиться с этой иерархией, вам нужно написать несколько рекурсивных функций и найти правильное представление в PHP, которое может правильно обрабатывать иерархию категорий.

Простая рекурсивная функция для печати каких-либо хлебных крошек будет выглядеть так (я предполагаю, что в этом примере у вас есть какой-то ORM на месте):

function findWayToTop($category, $breadcrumbs = array()) {
    $breadcrumbs[] = $this;
    $parent = $category->getParent();
    if ($parent != null) {
        return findWayToTop($parent, $breadcrumbs);
    } else {
        return $breadcrumbs;
    }
}

Если вы не используете ORM, самый простой способ - извлечь все категории из базы данных и сохранить их в массиве, где ключ является идентификатором. Затем вы можете заменить вызовы массива в приведенном выше коде, и это также работает.

...