Astuces 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.

Première astuce

Lorsque vous créez un nouveau type avec CCK, donnez son nom en deux étapes.

Par exemple, mettons que je veuille créer un type "gros événement" :

  • je crée d'abord le type avec le nom "gros_evenement"
  • je modifie ensuite son nom pour "gros événement"

CCK utilise le nom donné en premier pour créer ses tables en supprimant les accents, en remplaçant les espaces par des '' et en ajouter 'content' au début. Une fois les tables créées, CCK ne modifie plus leur nom. Donc avec l'astuce ci-dessus, on aura content_gros_evenement au lieu de content_gros_vnement. On aurait pu avoir aussi 'content_evt', vous êtes libre.

L'intérêt :

  • une base de données plus propre (pratique pour ceux qui ont souvent le nez dedans)
  • des droits d'accès plus parlant (avec des noms pouvant être moins long pour ceux qui ont des thèmes limités en largeur ou de petites résolutions)

Deuxième astuce

Si views ne vous satisfait pas toujours et que vous attaquiez vos tables directement en SQL, méfiez-vous des champs que vous utilisez. Lorsqu'un champ n'est utilisé qu'une fois, CCK enregistre son contenu directement dans la table du type l'utilisant. Si vous l'utilisez dans d'autres types de noeud, CCK enregistre son contenu dans une table spécifique.

Le schéma suivant peut se produire :

  • Je crée un type de noeud, par exemple 'fiche', donc CCK crée une table 'node_content_fiche'
  • Je lui attribue un champ 'telephone', donc CCK crée un champ 'field_telephone_value' dans la table 'content_fiche'
  • J'écris une requête SQL permettant d'afficher des 'fiche', tout va bien
  • Je crée un autre type de noeud, par exemple 'candidat', donc CCK crée une table 'node_content_candidat'
  • Je lui attribue également le champ 'telephone'
  • Et boum, ma requête SQL précédente ne fonctionne plus parce que CCK mutualise les valeurs des champs
    • le champ 'field_telephone_value' a été retiré de la table 'node_content_fiche'
    • la table 'node_data_field_telephone' a été créée et reçoit les valeurs de 'field_telephone_value'
Version de Drupal :