Unbegrenzte Unterkategorien PHP und MySQL LI Listen Sie die Kategorien Open CART CART CARRE
Frage
Ich habe die folgenden Tische category
und category_description
In PHP MySQL. Meine Frage ist, wie mit den folgenden Informationen eine unbegrenzte Menge an Unterkategorien in a erstelle ul
li
Struktur. Ich habe mir verschiedene Beispiele hier angesehen, aber es gibt keinen Erfolg, vielen Dank für Ihre Zeit beim Lesen dieser Frage. Ich freue mich auf ihre Antwort
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
Und die Beschreibungen werden in diesem Tisch gespeichert
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
Lösung
opencart hat das
$this->model_catalog_category->getCategory()
Methode, und Sie bestehen die Kategorie -ID als Parameter wie z.
$category = this->model_catalog_category->getCategory(5);
Dies behandelt auch die entsprechende Beschreibung, sodass Sie nicht direkt darauf zugreifen müssen. Wie @Till Helge Helwig bereits hervorgehoben hat, müssen Sie eine rekursive Funktion verwenden, wenn Sie einen Baum mit allen Unterkategorien erstellen möchten. Ein guter Ort, um ein Beispiel dafür zu sehen, befindet sich im tatsächlichen Code des Kategoriemoduls. Scrollen Sie zum Ende der Datei catalog/controller/module/category.php
und Sie werden eine rekursive Funktion sehen, die das HTML dafür erstellt
Andere Tipps
Sie haben bereits eine Spalte parent_id
. Verwenden Sie das, um die Beziehungen zwischen Kategorien darzustellen. Wenn sich eine Kategorie auf der Stammebene befindet, setzen Sie diese Spalte auf NULL
.
Ein anderer Ansatz wäre eine dritte Tabelle, die Kategorien in Unterkategorien kennt. Auf diese Weise können Sie von oben nach unten und von unten nach oben gehen. Hängt von Ihrer Anwendung ab, die Sie verwenden.
Um diese Hierarchie zu behandeln, müssen Sie einige rekursive Funktionen schreiben und eine ordnungsgemäße Darstellung in PHP finden, die die Kategorie -Hierarchie ordnungsgemäß verarbeiten kann.
Eine einfache rekursive Funktion zum Drucken einer Art Brotkrumen würde so aussehen (ich nehme in diesem Beispiel an, dass Sie eine Art Orm haben):
function findWayToTop($category, $breadcrumbs = array()) {
$breadcrumbs[] = $this;
$parent = $category->getParent();
if ($parent != null) {
return findWayToTop($parent, $breadcrumbs);
} else {
return $breadcrumbs;
}
}
Wenn Sie ORM nicht verwenden, besteht am einfachsten, alle Kategorien aus der Datenbank zu holen und in einem Array zu speichern, in dem die ID der Schlüssel ist. Dann können Sie Array -Anrufe im obigen Code ersetzen und es funktioniert ebenfalls.