Le 17 juillet 2013 18:25, Dsls <[email protected]> a écrit :
> Je ressors un chantier que j'avais évoqué il y a quelques temps : la
> suppression des catégories du core, ainsi que des méta-données, ainsi que du
> plugin tags, au profit d'un plugin "taxonomy".
>
> Les raisons de ce chantier :
> * Après tout, une catégorie, c'est une métadonnée comme une autre
> * On n'a jamais pu faire un multi-catégories propre sans tout casser,
> puisque cela impliquait un changement en base
> * Le modèle en base des métadonnées est trop restreint : impossible de
> définir l'url d'un tag donné, ou de mettre une déscription à un tag,
> impossibilité de hiérarchiser les tags, ...
>
> D'où le ticket #1012, ayant pour but d'harmoniser les 2 dans un plugin
> taxonomy. J'avais regardé à l'époque les modèles de drupal et de WP, sans
> pour autant être 100% convaincu par l'un des 2. notamment pour la partie
> hiérarchie, où il serait dommage d'abandonner le principe de "nested sets"
> que dotclear utilise.
>
> J'avais donc opté pour le modèle de données suivants en 3 tables (sauce
> _instal.php) :
> $_s = new dbStruct($core->con,$core->prefix);
>
> $_s->taxvoc
> ->blog_id ('varchar', 32, false)
> ->voc_id ('bigint', 0, false)
> ->voc_name ('varchar', 40, true)
> ->voc_url ('varchar', 255, true)
> ->voc_lurl ('varchar', 255, true)
> ->voc_desc ('text', 0, true)
> ->voc_options ('bigint', 0, false)
> ->voc_weight ('bigint', 0, false)
> ->post_type ('varchar', 32, false, "'post'")
> ->primary('pk_voc','voc_id')
> ;
> $_s->taxterm
> ->term_id ('bigint', 0, false)
> ->voc_id ('bigint', 0, false)
> ->term_url ('varchar', 255, true)
> ->term_name ('varchar', 255, false)
> ->term_desc ('text', 0, true)
> ->term_weight ('bigint', 0, false)
> ->term_lft ('integer', 0, true)
> ->term_rgt ('integer', 0, true)
> ->primary('pk_term','term_id')
> ;
> $_s->taxpost
> ->post_id ('bigint', 0, false)
> ->term_id ('bigint', 0, false)
> ->primary('pk_tp','post_id','term_id')
> ;
>
> Décryptons :
> * Dès qu'on veut définir une manière de classer les billets (catégorie, tag,
> autre), on définit un vocabulaire (table taxvoc): on définit alors :
> * Son nom (exemple : "tag", ou "catégorie")
> * l'url de base ("slug" pour nos amis de chez WP) des pages publiques pour
> chacun de ses termes. ex : "tag/"
> * l'url de base de la page qui  liste les termes. ex : "tags/"
> * ses options, où on indique : si on autorise les valeurs multiples, si on
> autorise les hiérarchies de termes
> * le post_type associé s'il y en a un
>
> le terme est lui le nom de la métadonnée/tag ou de la catégorie, appartenant
> à un vocabulaire. On y retrouve les nested sets chers à dotclear pour les
> hiérarchies, le slug pour définir l'url du terme
>
> et on retrouve une table d'association post <-> term.
>
> C'était un début d'ébauche, à discuter, et si certains s'en sentent l'envie,
> yapluka :)
>

Sur le principe, c'est génial puisqu'en gros ça fait à peu près tout
ce qu'on peut imaginer pour classer/trier/hiérarchiser les billets (ou
pages, ou …)
Est-ce que limiter ça à post (et ses avatars) est suffisant ? Je pense
aux … médias ;-)
_______________________________________________
Dev mailing list - [email protected] - http://ml.dotclear.org/listinfo/dev

Répondre à