Question

J'ai les tableaux ci-dessous category et category_description en php mysql. ma question est de savoir comment les informations ci-dessous puis-je faire pour créer un nombre illimité de sous-catégories dans une structure ul de li. Je l'ai regardé divers exemples sur ce site mais profiter non non merci beaucoup pour votre temps à lire cette question. Je me réjouis de votre réponse

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      

Et les descriptions sont stockées dans ce tableau

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       
Était-ce utile?

La solution

opencart a le

$this->model_catalog_category->getCategory()

méthode, et vous passez l'identifiant de la catégorie en tant que paramètre, comme

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

Il gère également la description appropriée se joindre aussi pour que vous ne les avez pas besoin d'accéder directement. Comme @Till Helge Helwig a déjà signalé, vous devez utiliser une fonction récursive si vous voulez construire un arbre de ceux-ci avec toutes les sous-catégories. Un bon endroit pour voir un exemple de ceci est dans le code du module de catégorie réelle. Faites défiler jusqu'au bas du fichier catalog/controller/module/category.php et vous verrez une fonction récursive qui construit le html pour cela

Autres conseils

Vous avez déjà un parent_id de colonne. Utiliser pour représenter les relations entre les catégories. Si une catégorie est au niveau de la racine, vous définissez cette colonne à NULL.

Une autre approche serait une troisième table qui associe des catégories aux sous-catégories. Cela vous permettra de marcher de haut en bas, ainsi que du haut en bas. Dépend de votre application qui vous approche utilisez.

Afin de gérer cette hiérarchie, vous devez écrire quelques fonctions récursives et trouver une bonne représentation en PHP qui peut gérer correctement la hiérarchie de la catégorie.

Une fonction récursive simple à imprimer une sorte de panure ressemblerait à ceci (je suppose dans cet exemple que vous avez une sorte de ORM en place):

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

Si vous n'utilisez pas ORM, le plus simple est d'aller chercher toutes les catégories de la base de données et de les stocker dans un tableau où l'ID est la clé. Ensuite, vous pouvez remplacer les appels de tableau dans le code ci-dessus et il fonctionne aussi bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top