Неограниченные субботные категории PHP и MySQL Li List Categories
Вопрос
У меня есть следующие таблицы 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
Решение
OpenCart имеет
$this->model_catalog_category->getCategory()
метод, и вы передаете идентификатор категории в качестве параметра, например
$category = this->model_catalog_category->getCategory(5);
Это также обрабатывает соответствующее описание, чтобы присоединиться к ним, поэтому вам не нужно получать доступ к ним напрямую. Как уже отметил @Till Helge Helwig, вам нужно использовать рекурсивную функцию, если вы хотите построить из них дерево со всеми подкатегориями. Хорошее место, чтобы увидеть пример этого в коде модуля фактического категории. Прокрутите в нижней части файла catalog/controller/module/category.php
и вы увидите рекурсивную функцию, которая создает HTML для нее
Другие советы
У вас уже есть колонка 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, самый простой способ - извлечь все категории из базы данных и хранить их в массиве, где идентификатор является ключом. Затем вы можете заменить вызовы массива в коде выше, и это также работает.