Choisir entre taxonomy et CCK

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Je commence à connaitre un peu mieux le fonctionnement de drupal, mais il y a certaines choses dont j'ai du mal à saisir les subtilités.

Je vais développer un site de cuisine dans lequelle les gens pourront filtrer les recettes comme cela

Par type de plat
  - entrée
  - plats
  - Désserts
...

Par type d'alimentation
  - Végétatrien
  - Sans oeufs
  - Allégé
...

Par envie
  - Pour surprendre
  - Pour les enfants
  - Pour l'apero
  ...

Par ingrédient (produit que l'on vend)
  - Ingrédient 1
  - Ingrédient 2
  ...

Par media
  - Avec photo
  - Avec video

Par difficulté
  - facile
  - moyen
  - difficile

Pour permettre aux personnes de filtrer, je compte utiliser les "exposed filters" du module view, le soucis, c'est que j'hésite grandement entre :

  • Créer ces catégories via la taxonomie
  • Attribuer des champs au type de contenu 'recette' via CCK.

J'ai du mal à dégager les avantages et les inconvénients de chacun étant donné que les 2 me permettent d'être ajoutés dans les "exposed filters" de view.

Voici mes déductions, j'aimerais votre opinion :

Type de plat : Je pense utiliser la taxonomie car c'est un critère essentiel pour toutes les recettes et que dans la recherche avancée, j'aimerais pouvoir laisser la possibilité au visiteur de choisir entre une entrée, un plat etc...

Type d'alimentation : Alors la j'hésite beaucoup, en même temps ça me semble être une catégorie pertinente mais 2 choses me gênent pour le mettre en tant que catégorie.

Si je créer une taxonomie comme cela :

Recette (vocabulaire)
  - Type de plat (terme parent)
    - entrée
    - plat
    - ...
  - Type d'alimentation (terme parent)
    - Végétarien
    - Allégé
    - ...

1) Dans le moteur de recherche avancé tout est dans une même liste, je trouve pas cela très pratique j'aimerais 2 listes différentes.

2) Idem dans les 'exposed filters' ou encore quand on créer une recette, c'est tout dans une meme liste, c'est pas pratique.

Bien sur je pourrais Créer 2 vocabulaires comme cela :

- Type de plat (vocabulaire)
  - entrée
  - plat
  ..

- Type d'alimentation (vocabulaire)
  - Végétarien
  - Allégé
  ..

1) L'avantage c'est que ca résoudra mon problème dans les "exposed filters" et l'ajout de contenu, j'aurai bien 2 listes distinctes. Le soucis c'est le moteur de recherche, Avoir une catégorie 'Type d'alimentation' et 'Type d'envie' c'est pas génial.

Type d'envies :

Je pense que la problématique est la même que pour type d'alimentation

Par ingrédient :

La je penche clairement pour le champ CCK, il y a un champ qui permet de faire référence à un autre node, je peux donc faire référence à mes nodes de type produit autommatiquement.

Par difficulté : Je penche également pour le champ de type CCK, je peux faire 3 radio bouton à cocher, pas besoin d'en faire une catégorie je pense.

Par media : Idem difficulté, je peux faire 2 cases à cocher.

Voila, donc ma problématique principale c'est de savoir comment classer par type d'alimentation et type d'envie. Taxonomy ou CCK ? Quels serait les avantages et les inconvénients de chacunes des solutions.

Je sais mon poste est long, car j'ai voulu exprimer toute ma problématique et ma réfléxion autour de celle-ci, mais je pense qu'il peut être instructif pour mieux comprendre 2 choses fondamentales de Drupal, Taxonomy et CCK.

Merci de m'avoir lu !

Bonjour Drupalfrance et désolé pour le retard dans le suivi de mon post (la honte).

Non, je je refait pas le site de cuisineTV, mais je développe un site basé sur la gastronomie, comme vous pouvez le constater :).

Les questions de mon post sont toujours d'actualités.

D'avance merci

Zmove

Drupal 5 en local sur WAMP5 1.6.5
PHP 5.1.6 / Apache 2.0.59 / MySQL 5.0.24a /phpmyadmin 2.8.2.4

Désolé de faire remonter ce sujet, mais il a été créer il y a 1 semaine et j'ai réellement besoin de réponses/d'avis rapidement maintenant.

Si il n'est pas assez clair/précis, n'hésitez pas à me dire ce qu'il ne va pas.

Drupal 5 en local sur WAMP5 1.6.5
PHP 5.1.6 / Apache 2.0.59 / MySQL 5.0.24a /phpmyadmin 2.8.2.4

Salut,

En gros, la taxonomie est intéressante si :

1) tu souhaites utiliser par la suite d'autres modules qui s'appuient sur la taxonomie (taxonomy_menu, taxonomy_access, taxonomy_theme...) ;
2) tu souhaites pouvoir rattacher le même vocabulaire de taxo à plusieurs types de contenus différents ;
3) tu veux permettre aux webmasters du site de pouvoir éditer facilement les valeurs d'une liste.

Si ta liste de valeurs ne porte que sur un seul type de contenu (les recettes), qu'elle n'a pas d'autre utilité que de permettre à l'utilisateur de choisir une ou plusieurs valeurs parmi une liste, et que les valeurs de la liste ne sont pas amenées à changer beaucoup, alors un champ CCK fera très bien l'affaire.

Merci pour ces réponses qui me donnent une piste.

Je pense que je vais partir sur une taxonomie comme cela :

Recettes (vocab)
- entrées
- plats
- etc...

Les autres, j'utiliserai CCK. Mais je suis preneur d'autres opinions si vous avez des remarques..

Drupal 5 en local sur WAMP5 1.6.5
PHP 5.1.6 / Apache 2.0.59 / MySQL 5.0.24a /phpmyadmin 2.8.2.4

Vincent, juste une question.

Quelle est l'impact en terme de performance d'utiliser un champ CCK et un exposed filter?

Que je sache, les valeurs des champs CCK ne sont pas indexées, non? Cela signifie que le moteur de base de données aura à parcourir les noeuds un par un à chaque affichage de page...

et pourquoi pas plusieurs vocabulaires:

Type de plat (vocabulary)
- entrée (term)
- plats
- Désserts
...

Type d'alimentation (vocabulary)
- Végétatrien (term)
- Sans oeufs
- Allégé
...

etc ...

pour ce qui est des ingrédients, tout dépend si tu veux VRAIMENT avoir des noeuds ingrédients: par exemple 1 noeud "tomate" qui decrive ce qu'est une tomate, photo à l'appui etc, comment ca peut se cuisiner etc etc

alors là oui, nodereference peut t'etre utile, sinon tu pourrais tres bien tout faire avec taxonomy. ensuite via ton theme, tu affiches les termes appartenant aux differents vocabulaires differemment.

je trouve que la frontiere est ténue entre CCK et taxonomy: j'ai un autre exemple: qu'est qu'il vaut mieux faire:

1) utiliser le content type "story" et associer un vocabulaire "content type" avec comme terms "article" et "blog"

2) utiliser deux content types CCK: "blog" et "article" sachant qu'ils ont potentiellement les memes fields

si tu veux passe en discutter sur #drupal-support

Selon moi, c'est un choix de conception, il n'y a pas de "meilleure" solution.

Si tes contenus sont structurellement équivalents (même champs), alors tu peux utiliser le même type de noeud pour tous et typer tes noeuds grâce à la taxo.

Mais comme le "coût" de création d'un nouveau type de contenu avec CCK est quasi nul et que les champs CCK sont réutilisables d'un type de contenu à l'autre, pourquoi ne pas utiliser CCK ?

Personnellement, j'ai une préférence pour la 2e solution car :

1) Les requêtes pour remonter les contenus d'un certain type sont plus simples.

2) Il est beaucoup plus facile de personnaliser l'affichage des contenus. Pour reprendre ton exemple, si tu veux que les articles ne soient pas affichés comme les billets de blog, il te suffira de créer 2 nouveaux templates node-article.tpl.php et node-blog.tpl.php. Pour arriver au même résultat avec la taxonomie, ça serait plus compliqué.

J'ai finalement opté pour la solution suivante :

Recettes (vocab)
- type de plat
-- entrée
-- plat
- Type d'envie
-- pour les enfants
-- en amoureux
etc...

Cela me parait plus logique de regrouper tout cela sous le vocabulaire recette, cela me gènait un peu de mettre Type de plat comme vocabulaire directement.

J'ai pu résoudre mon problème de séparer ensuite les termes parents en plusieurs champs grace au module content taxonomy. J'ai pu créer des cases à cocher pour chaque term parent.

Merci de votre aide, cela m'a bien aidé à comprendre un peu plus le fonctionnement de ce formidable CMS

Drupal 5 en local sur WAMP5 1.6.5
PHP 5.1.6 / Apache 2.0.59 / MySQL 5.0.24a /phpmyadmin 2.8.2.4

Les frenchies sont friant de ce module : content_taxonomy ^^

T'as résolu ton problème :

"Hi,

I just update the content taxonomy module to test the taxonomy hiding and it don't works.

When I add a content taxonomy field in my content type, it don't hide the original taxonomy list, and I didn't see options to apply this change.

Do I make something wrong ?"

Asmo ou Axmodeux

Oui, j'ai vidé mon cache, rebooté mon PC et ca a marché. (attention dans le poids de tes field, il faut bien mettre content taxonomy AVANT taxonomy).

Drupal 5 en local sur WAMP5 1.6.5
PHP 5.1.6 / Apache 2.0.59 / MySQL 5.0.24a /phpmyadmin 2.8.2.4

J'ai poster un nouveau message dans support de content_taxonomy.
http://drupal.org/node/169563

As-tu rencontré le même problème ?

"Oui, j'ai vidé mon cache, rebooté mon PC et ca a marché. (attention dans le poids de tes field, il faut bien mettre content taxonomy AVANT taxonomy)."

C'est à dire ? Au niveau des poids des modules ?
Chez moi, j'ai plus eut de problème avec les champs par défaut en mettant tous les modules à O (Weight).
Mais peut-être que mon problème vient encore d'une histoire de poids ?