Bonjour tout le monde, je souhaiterais créer un tableau contenant la structure d'un ensemble de catégories.
Une catégorie peut en référencer d'autres, etc…
Voici un exemple de structure :
- Catégorie 1
- Catégorie 1.1
- Catégorie 1.2
- Catégorie 1.3
- Catégorie 1.3.1
- Catégorie 1.3.2
- Catégorie 1.4
- Catégorie 2
Le but ultime est de créer une treeview de ce type : http://pxp2k4.free.fr/images/treeview.jpg
Pour cela la première étape est de récupérer les éléments de un tableau, tableau créé dynamiquement.
=>array
- Catégorie 1 =>array
- Catégorie 1.1
- Catégorie 1.2
- Catégorie 1.3 =>array
- Catégorie 1.3.1
- Catégorie 1.3.2
- Catégorie 1.4
- Catégorie 2
Le soucis est que je ne connais pas d'avance la structure de ce tableau et le nombre de niveau. Par conséquent je pense que je dois faire un parcours récursif.
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 //Je récupère les catégories principales $list_categories = db_query("SELECT nid, title FROM {node} n LEFT JOIN {field_data_field_ordre} fdfo ON n.nid = fdfo.entity_id LEFT JOIN {field_data_field_categorie_principale} fdfcp ON n.nid = fdfcp.entity_id WHERE type = :type AND fdfcp.field_categorie_principale_value = :bool_cat_princ ORDER BY fdfo.field_ordre_value", array(":type" => "categorie", ":bool_cat_princ" => 1)); $tree = $categories_node = array(); //Sous catégories foreach($list_categories as $record){ $tree[$record->nid] = $record->nid; $category = node_load($record->nid); $subcategories = $category->field_sous_categorie; $tree[$record->nid] = array(); for($i=0;$i<sizeof($subcategories);$i++){ $tree[$record->nid][$i] = $subcategories['und'][$i]['nid']; } }
Partager