Unbegrenzte Unterkategorien PHP und MySQL LI Listen Sie die Kategorien Open CART CART CARRE

StackOverflow https://stackoverflow.com/questions/8325750

  •  26-10-2019
  •  | 
  •  

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       
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top