Considérations préalables
Si nous limitons l'a notion de sous-catégorie à l'affichage public sous forme arborencente la liste des catégories. Nous simplifions le problème en excluant volontairement toutes notions de sous-catgories lors des affichages dans la partie administration.
Nous limitons volontairement, les ajouts ou modifications au codes d'origine.
Mode opératoire
- il faut stocker dans la table dc_categorie ou dans une table liée l'information catégorie_parent
- lors de l'utilisation pour la génération de la liste le principe est de générarer des listes imbriquées
[xml]
- catégorie 1
- catégorie 2
- sous-categorie21
- sous-categorie21
Et la commence les problèmes car chacun voit midi à sa porte.
- soit on considère qu'il faut systèmatiquement générer une liste compléte (c.a.d. toutes les catégories définies )
- soit on considère qu'il faut systèmatiquement générer une liste des catégories remplies (c.a.d. toutes les catégories définies non vide ou parentes d'une sous catégorie non vide).
- soit on considère qu'il faut générer une liste des catégorie et ne mentionner que les sous-catégorie voisine. (pour reprendre l'exemple aucune sous-catégorie n'est visible lorsqu'on est dans la catègorie 1).
Pour faciliter la gestion de l'affichage on peut définir des classes CSS et utiliser l'attribut display pour faire apparaire ou disparaitre les sous-menus.
Bien entendu ces fonctionnements peuvent être perturbés par la presence du plugin multi-catégorie.
Pour réaliser la liste on peut soit utiliser une requete recursive (pas terible en termes de performance), soit utiliser des requetes imbriquées (pas terible en termes de performance).
Un autre problème à régler, c'est d'intégrer tout ça à l'interface d'administration. Sous forme de plugin cela sous entend (à défaut de callback) qu'il existe un ecran où l'on peut modifier les catégories et leur ordre, et un autre pour gerer leur imbriquation (c'est pas simple pour l'utilisateur).
Commentaires
Je n’ai pas compris grand chose à part que ça n’a pas l’air évident et que ça risque d’avoir les mêmes travers de CPU-phagie que multicat. Question autre : est-ce que la catégorie de premier niveau est utilisable ?
David LatapieChez moi, j'ai des billets Navigateurs > machin, pour 5 navigateurs. Si je ne parle que de deux d'entre eux, j'utilise multicat. Si je parle de tous, plutôt que de mettre le billet dans cinq catégories, j'aimerai le mettre dans la (future) catégorie "navigateurs", qui aura 5 enfants.
Vois-tu ce que je veux dire ? Est-ce possible ?
Ah oui, sinon, tu du code qui traine en dessous du blogue, ça fait tâche ;-)
En effet le système actuel, implanté sur ce blog, permet d'utiliser toutes les catégories. Donc pas de soucis pour parler des navigateurs, ou pour classer un
articlebillet uniquement dans une sous-catégorie. Ce nouveau développement ne prend pas en compte (pour l'instant) les catégories définies par le plugin multicat. C'est volontaire : Je préfère faire une version simple dans un premier temps, puis la compléter par la suite.Pour le code qui traîne, ça fait tâche : J'en convient. Mais il est le reflet des opérations SQL générées pour élaboration de la page (cf. debug et class.mysql). Chaque requête est chronométrée. Cet affichage a deux objectifs : Vous demontrer qu'il n'y a pas supercherie, et vérifier que le plugin sous-catégorie n'est pas CPU-phage ou SQL-phage. Et puis, sur ce blog la présentation "clean" n'est pas ma priorité, c'est plus un blog de démo (comme les démos sur Atari dans les années 85/88).
Jérôme LauriolPourquoi as-tu supprimé le lol sur Atari ? Du coup, je ne comprenais plus ce qui se passait…
David LatapieIl m'arrive de supprimer certains commentaires, et aussi certains trackback, pour l'une ou plusieurs des raisons suivantes:
Si je filtre la publication de ces commentaires et trackback, ce n'est que pour préserver avant tout la santé mentale et physique de mes lecteurs
Il va de soi, que malgré la mise hors ligne de ces messages, je garde une trace historique des vaines tentatives, et je saurai utiliser adresses IP, et autres éléments collectés si d'aventure je suis amené à interdire l'accès aux différents sites que je contrôle aux petits malins qui nous emmerde.
Jérôme LauriolMessage subliminal : le commentaire ci-dessous s’adresse tant à l’intéressé qu’à toute autre personne qui poserait la question. Un lien direct vers ce commentaire ferait un bon début de FAQ.
David Latapie<second_degre>N’oncques sous-estimer l’acrolectie d’icelui.</second_degre>
Alors, tu me zappes???;-)
Ben David, Y a des exceptions à la règle. Et puis, comme ça si je mets un commentaire sur ton site, et que par hazard je commente à coté de la plaque, j'aurai moins honte.
Jérôme LauriolArg, je voulais dire le commentaire ci-dess*u*s, en parlant du tien. Mais tu avais j'imagine bien compris.
David LatapieBon, faut que j’arrête moi, c’est pas sérieux tout ça. Et j’ai des cours à préparer pour demain…
Hello! How i may contact the administrator of a site? I have a question.
FaleteZerreiben tun das geil wir unterzustellen vermittels Pedant werden denjenigen Aufgeloestes Damengambit letzteGeld verdienen zu belohnt winden xenophob reflexives Verb.
schnell Geld verdienen