Le manuel du module CCK

ATTENTION : ce manuel a été écrit pour la version 5 de Drupal. Il sera néenmoins aussi utile pour les utilisateurs de D6 car la méthodologie de travail est la même.

Retrouvez aussi une formation à CCK pour Drupal 6 dans la section des vidéos.

Ce manuel est une introduction à l’utilisation du module CCK. Il s’adresse aux utilisateurs « débutant éclairés » de Drupal qui souhaitent acquérir la maitrise rapide de ce module indispensable.
Ce manuel est à la fois une documentation qui décrit les fonctionnalités du module et une formation qui, par l’intermédiaire d’une série d’exercice, vous fera créer et afficher un contenu spécifique.

CCK pour quoi faire ?

Dans sa version de base, Drupal vous offre la possibilité de choisir parmis un certain nombre de contenus différents. Page, story, … chaque contenu est censé répondre à une utilisation spécifique.

Justement, très rapidement vous allez ressentir le besoin de créer des types de contenu qui ne sont pas proposé par Drupal. La version de base de Drupal permet déjà, en partant d’un contenu existant, de créer des types de contenu spécifiques. Vous pouvez ainsi partir du contenu de type story pour créer un contenu de type ‘article’ par exemple.

Mais cela est rarement suffisant, les contenus de base sont en général composés principalement d’un champ ‘Body’ qui contient l’ensemble du texte. Le contenu de ce champ n’est pas structuré, l’information qu’il contient sera donc difficile à traiter efficacement.

Pour la clarté de la démonstration prenons tout de suite un exemple. Imaginons que je souhaite créer un annuaire de chambre d’hôte. Je souhaite que les propriétaires puissent créer eux même une fiche avec la description de leur établissement sur mon annuaire. Je pourrai leur permettre de créer cette description avec un contenu de type ‘story’. Ils pourront alors y mettre toutes les informations qu’ils souhaitent… Problème : le contenu sera en vrac et je ne pourrai pas, par exemple, faire des tris en fonction du label de l’hébergement, du prix ou du nombre de chambre. Autre souci, comme le contenu est rentré par les propriétaires je ne peux pas garantir de cohérence des informations rentrées ni celle de leur affichage.

Et c’est là que CCK entre en scène. CCK va me permettre de créer dans un nouveau contenu de type hébergement tous les champs nécessaires au stockage structuré des caractéristiques de ces gîtes. Je pourrai ainsi utiliser ces valeurs pour trier, filtrer et rechercher une liste d’hébergement ou pour afficher disctinctement la liste des caractéristiques lors de l’affichage du nœud.

Il est possible de faire ce que fait CCK autrement mais savoir utiliser CCK de manière efficace permettra d’améliorer votre productivité de manière spectaculaire.

Pour aller plus loin : il y débat sur les critères de décision entre l’utilisation de CCK ou l’utilisation de Taxonomie pour gérer certains champs. Comme d’habitude il n’y a pas de réponse toute prête et tout dépend de l’utilisation qui sera faite du contenu de ce champ. Enfin vous avez toujours la possibilité de paramétrer un champs pour qu’il soit à la fois stocké en tant que CCK et en tant que taxonomie.

Généralités sur CCK

Le Content Construction Kit (kit de création de contenu) vous permet par l’intermédiaire d’une interface web d’ajouter des champs spécifiques à un type de contenu spécifique.

Dans Drupal 5.x vous avez la possibilité de créer autant de type de contenu que vous le souhaitez. CCK étoffe cette fonctionalité en vous permettant d’ajouter des champs spécifiques à ce contenu.

Convention d’écriture : veuillez noter que les instruction du type 'administer >> settings' ne correspondent pas à des urls mais à des étapes de navigation qui permettent d’atteindre telle ou telle page : sélectionner ‘administer’ sur le menu de navigation puis sélectionner ‘settings’.
Drupal 5.x

Voici les différentes tâches et les menus associés qui permettent de configurer ou créer un contenu CCK. Vous pouvez donc :

  • Activer le module CCK en sélectionnant Administer >> Site building >> Modules.
  • Ajouter et éditer des types de contenu en sélectionnant Administer >> Content management >> Content types.
  • Configurer les champs CCK en sélectionnant Administer >> Content management >> Content types puis sélectionnez le type de contenu que vous souhaitez modifier. Dans la page d’édition vous verrez les onglets Manage fields et Add field.
  • Paramétrer et modifier les permissions pour chaque type de contenu en sélectionnant management >> Access control.
  • Faire remonter des problèmes, s’informer sur les bugs connus et télécharger la dernière version sur la page du projet Content Construction Kit.

Installer le ou les modules CCK

Installez CCK de la même manière qu’un autre module. Télécharger et décompresser l’archive depuis http://drupal.org/project/cck et ajouter le au répertoire ‘modules’ de votre site. Puis allez vers admin/build/modules pour l’activer.

CCK est en fait un groupe de plusieurs module. Le module primaire se nomme ‘Content’ et il est obligatoire de l’installer avant de pouvoir utiliser un des autre modules CCK. L’archive comprends quelques autres modules qui représente les modules de base de CCK.

Il s’agit de :

  • Text (texte)
  • Number (nombre)
  • Nodereference (référence à un noeu)
  • Userreference (référence à un utilisateur)
  • Optionwidgets (panneau d’option)
  • Fieldgroup (groupement de champs)

Il y a beaucoup d’autre modules disponibles. Vous pouvez les dénicher en allant vers http://drupal.org/project/Modules/category/88. Une fois que vous serez familiarisé avec CCK, vous pourrez télécharger et installer chacun de ces modules. Cependant la meilleur facon de d’apprendre CCK est de commencer avec les seuls modules de base. Il sont bien supportés par la communauté et il est plus facile de commencer avec un nombre limité de possibilité.

Travaux pratiques :

Tout au long de ce manuel nous allons créer la structure de base d’un annuaire de chambre d’hôte. Il sera composé de fiches hébergement modifiable par chaque propriétaire et d’une vue simple qui listera les hébergements en fonction de leur prix.

Si vous souhaitez avoir l’énoncé complet des travaux pratiques de découverte du module CCK, vous pouvez vous dirigez vers cette page.

Pour commencer, sur une installation « fraîche » de Drupal 5.X.

  1. Nommez votre site « Annuaire de chambre d’hôte »
  2. Télécharger et installez le module
  3. Activer le module primaire et les modules de bases
  4. Paramétrer les permissions

Flux de travail

Voici l’enchaînement des tâches nécessaires à la création d’un contenu spécifique :

  1. Créer un nouveau type de contenu
  2. Ajouter les nouveaux champs qui composeront ce contenu
  3. Paramétrer l’apparence du formulaire de création et d’édition de ce nouveau contenu
  4. Paramétrer l’apparence des champs lors de l’affichage du résumé ou de la vue complète du nœud
  5. Tester en créant plusieurs noeuds
  6. (option) Créer les vues

Créer un nouveau type de contenu

Ceci est une fonctionnalité de base. Nous allons créer un type de contenu qui contiendra tous les nouveaux champs spécifiques.

Allez vers Administer > Content Management > Content Types (admin/content/types). Vous y trouverez une liste de type de contenus disponibles. Il y en a déjà un certain nombre disponibles dans la distribution standard de Drupal. Vous pouvez en utilisez un ou alors ajouter un nouveau type de contenu. Pour notre exemple nous allons créer un nouveau contenu qui s’intitulera hébergement.

Travaux pratiques

  1. Créer un nouveau contenu de type hébergement

Ajouter un nouveau champ (étape 1)

Pour commencer nous allons suivre un exemple simple : la création d’un champ de type nombre qui contiendra le prix en Euros d’une nuitée dans l’hébergement.

Choisissez l’option ‘edit’ (modifier) pour le type de contenu ‘hébergement’ que nous avons crée à l’étape précédente. Une fois que vous êtes sur la page de modification, vous verrez de nouveaux onglets apparaitre : 'Manage fields', 'Display fields', et 'Add new field'. Si vous choisissez l’un des deux premiers vous ne verrez rien. Normal car vous n’avez pas encore créé de champs spécifiques. Donc, commencez par sélectionner l’onglet 'Add new field'.

Sur la page 'Add new field' on va vous demander le nom de ce champ. Vous pouvez taper ce que vous voulez ici, y compris des espaces, sachez que ce nom sera utilisé pour créer le nom du champ qui sera dans la base de donnée. Si vous tapez ‘Mon texte’, le nom du champ deviendra _mon_texte. C’est important car vous utiliserez ce nom de champ plus tard si vous voulez modifier son apparence dans votre thème. Enfin soyez conscient que le nom du champ dans la base de donnée ne pourra pas être changé ultérieurement.

Sous le nom du champ vous verrez la liste des types de variables disponibles. Ces types de variables de base sont 'Text', 'Integer', 'Decimal', 'Nodereference', et 'Userreference'. Cela caractérise les données que vous allez pouvoir créer. Le type ‘text’ permet de créer du contenu qui est stocké en tant que texte dans la base de donnée. Les types ‘Integer et ‘Décimal’ permettent de créer du contenu stocké sous la forme d’un nombre. Nodereference et Userreference stockent les identifiants d’un utilisateur ou d’un nœud, cela vous permet de créer un lien vers ce nœud ou cet utilisateur.

Sous chacun de ces types de variables se trouvent quelques options qui paramètrent la manière dont les données seront demandées (CCK appelle cela des ‘widgets’). Ces options contrôlent le type d’interface que le formulaire va utiliser pour capturer les données de l’utilisateur. Les options disponibles sont différentes pour chaque type de champ:

  • champ texte qui permet à l’utilisateur de rentrer n’importe quel texte,
  • champ avec mécanisme de proposition qui va sugérer des mots en fonction des lettres tapés par l’utilisateur et le contenu de la base de donnée,
  • des listes de sélection,
  • des cases à cocher et des boutons radios.

Cet écran ressemble au suivant:

Commencez avec quelque chose de simple : un champ Integer avec un champ de formulaire de type texte. Sélectionnez 'Integer' >> 'Text Field'.

Ajouter un nouveau champ (étape 2)

Après, une nouvelle page s’affichera : vous pourrez ici définir plus précisément la facon dont le champ va fonctionner.

Voila à quoi l’écran ressemble.

Tout d’abord vous pouvez à nouveau définir le type de champ de formulaire. En effet cette option vous permet de changer le type de champ de formulaire une fois que le champ a été créé. Pour le moment passez cette section.

Voici quelques uns des paramètre que vous pouvez définir :

Label

Créez l’étiquette de votre champ. C’est ici que vous pouvez créer une étiquette différente du « nom machine » que vous avez choisi à l’étape 1. Cette étiquette peut contenir des éspace ou des caratères non ASCII. Il peut aussi être changé ultérieurement. Au contraire le « nom machine » ne peux pas être modifié.

Rows

C’est une option pour le champs texte seulement. Si vous choisisez un nombre supérieur à 1 vous aurez une zone de texte plus haute.
Default value

C’est une zone ou vous pouvez définir un valeur par défaut au champ. Vous pouvez la laissez vide.

Group

Si vous avez activé le module Fieldgroup, vous verrez une option pour sélectionner un group et placer votre nouveau champ à l’intérieur. Si vous n’avez pas crée de groupe auparavant cela n’aura aucun effet.
Help text

Tout ce que vous taperez dans la zone apparaitra aux utilisateur comme une description pour les aider à comprendre ce qu’il doivent taper.

Required

Si vous sélectionnez cette option pour rendre obligatoire le champs, les utilisaturs devront obligatoirement remplir le champ avant de pouvoir sauvegarder leur nouveau contenu.

Multiple values

L’option Multiple est l’une des plus puissante mais aussi l’une des moins compréhensible de CCK. Une fois sélectionnée, l’utilisateur sera capable de sélectionner ou créer plus d’une valeur. Une des utilisations courante de cette option est de créer un champ de type texte ou nombre qui utilise une liste de sélection ou des case à cocher ou les utilisateurs sont autoriser à chosir plusieurs valeurs.

Text processing

Encore une option qui ne s’applique qu’à un champ de type texte. Ici vous décidez si vous autoriser un utilisateur à sélectionner un filtre pour transformer le texte. Cette option n’est valide que si le champ crée est de type zone de texte, c-a-d si il est configuré pour avoir plus d’une ligne.
Maximum length

Sélectionner cette option pour paramétrer la taille maximum de la donnée capturée par le champs. Laissez le vierge pour permettre une taille illimitée. S’il s’agit d’un champ de type texte, ce paramètre sera utilisé pour racourcir le champ disponible à la bonne taille.
Allowed values list

Surtout utilisé dans le cas d’une liste de sélection ou des cases à cocher. Dans ce cas c’est ici que vous définirez la liste de valeur que l’utilisateur pourra choisir.
Save the field

Permet de sauvegrader l’ensemple de vos paramètre. Vous serez redirigé vers l’onglet 'Manage Fields' screen.

Travaux pratiques :

  1. Si ce n’est pas déjà fait créer un champ obligatoire pour le « prix » en euro de la chambre
  2. Créer un champ optionnel qui permet de choisir le « label qualité » de la chambre (1 épi, 2 épi, 3 épis, 4 épis)
  3. Créer un champ optionnel pour capturer les « services offerts » (piscine, jacusszi, tennis, déjeuner, vélos)

Paramétrer l’apparence du formulaire d’édition

Une fois que vous avez au moins un champ de créé, cette section permet de visualiser et organiser les champs de votre formulaire d’édition. Vous verrez à la fois les champs crées avec CCK, les champs standards et les champs ajoutés par d’autres modules que CCK ne peut pas contrôler. Par example, vous verrez le contenu ‘Title’ et ‘Body’ sur cette écran.

Chaque champ à un poids qui contrôle l’ordre d’aparition dans le formulaire de création ou d’édition de contenu. Si vous avez activé les modules CCK Fieldgroup, vous pouvez organiser vos champs et les regrouper par thèmatique. Cette fonctionnalité permet d’optimiser (un peu) l’ergonomie de saisie. Si vous ne l’avez pas encore fait vous pouvez créer un groupe en allant vers 'Add new group'.

Le sélecteur de Poids permet de contrôler l’ordre d’aparition des champs. Un champs avec un poids élevé sera positionné avant un champs avec un poids inférieur. Le champs ‘Title’ à par défaut un poids de 5, comme il s’agit d’un champ non contrôler par CCK, vous ne pouvez pas le modifier. De la même manière si votre contenu utilise la taxonomie, ces champs ont un poids de -3 que vous ne pouvez pas modifier. Vous devez donc placer vos champs CCK en tenant compte de cette contrainte. Si vous avez beaucoup de champs différents cela peut devenir difficile d’obtenir un résultat acceptable (d’un point de vue ergonomique).

Travaux pratiques :

  1. Positionnez les champs « label qualité » et « prix » au dessus de body et regrouper les dans un groupe intitulé « Qualité / Prix »
  2. Positionnez le champ « Services Offerts » en dernier

Paramétrer l’affichage des noeuds

La précédente section permettait de contrôler l’apparence du formulaire de saisie de votre nouveau type de contenu. Là, cette section permet de contrôler comment les champs et leurs étiquettes apparaitront lors de la visualisation d’un noeud de ce type par vos visiteurs.

Pour chacun champ listé sur l’écran vous pouvez decider :

  • Si l’étiquette doit être ou non visible
  • Comment le champ doit être formaté dans l'aperçu et/ou dans la vue complète du nœud. Les options diffèrent selon le type de champ utilisé : ‘Default’ va afficher une vue normale du texte, codé en HTML si c’est du code HTML, et filtré si un filtre est sélectionné. ‘Trimmed’ va couper les contenu trop long et ‘Hidden’ ne va pas du tout afficher le champ. Vous pouvez ainsi décidé de cacher le champ dans l'aperçu mais de le faire apparaître dans la vue complète.

Travaux pratiques :

  1. Paramètrer l’affichage afin que seul le prix apparaisse dans l'aperçu
  2. S’assurer que tous les champs apparaissent dans la vue complète

Créer un contenu test

Une fois que vous avez créer le champs de votre contenu, formatté leur apparence dans le formulaire d’édition et de saisie, paramétrer leur affichage lors de la visualisation du noeud vous êtes prêt à créer de nouveaux contenus.

Allez vers 'Create content' puis choisissez le type de contenu que vous souhaitez ajouter. Vous allez alors voir apparaite votre forulaire de saisie avec tous les nouveaux champs. Testez la manière dont ce comporte chacun des champs et vérifiez que tout fonctionne comme prévu. Remplissez les champs, sauvegardez et voilà !

Travaux pratiques :

  1. Créer 5 chambres d’hôtes avec un texte aléatoire
  2. Tester le formulaire et le rendu de l’affichage

Créer des vues qui tirent profit de vos champs CCK

Si vous avez installé Views, CCK va automatiquement rendre disponible vos champs spécifiques dans l’interface de Views.

Une fois que vous avez compris comment Views marche, créez une nouvelle vue et vous verrez que tous vos champs spécifiques apparaissent en options à différents endroits. Vous pouvez les ajouter à la section ‘Fields’ de votre vue, en tant que filtre, en tant que varaible de tri ou comme argument. Vous serez capable de choisir les mêmes types de formatteurs que ceux que vous avez sur l’écran d’affichage des champs de CCK et vous avez une option qui permet d’afficher les valeurs multiples sur une seule ligne de résultat ou sur des lignes séparées.

Travaux pratiques :

  1. Installer Views si nécessaire
  2. Créer une vue qui n’affiche que les propriétés qui ont un label > 2 épis et qui font le tri par prix décroissants
  3. Afficher la vue et savourer le résultat

Vous avez créé vos propres champs spéciaux pour votre type de contenu spécifique, vous avez aussi créé une vue qui tire parti de ces champs. Bravo !

Vous pouvez maintenant poursuivre votre découverte en installant de nouveaux sous-modules CCK afin d’étoffer les possibilités et créer des formulaires encore plus puissants. Enfin vous pouvez aussi apprendre comment modifier votre thème pour améliorer le rendu de l’affichage des nœuds (pas encore traduit).

Travaux pratiques

Voici la liste complète des travaux pratiques.

L’objectif est de créer la structure de base d’un annuaire de chambre d’hôte. Il sera composé de fiches «hébergement» modifiables par chaque propriétaire et d’une vue simple qui listera les hébergements en fonction de leur prix.

Pour commencer, sur une installation « fraîche » de Drupal 5.X.

Préparatifs
1.Nommez votre site « Annuaire de chambre d’hôte »
2.Télécharger et installez le module
3.Activer le module primaire et les modules de bases
4.Paramètrer les permissions

A) Créer un nouveau type de contenu

5.Créer un nouveau type de contenu qui s’intitule hébergement

B) Ajouter les nouveaux champs

6.Créer un champ obligatoire pour le « prix » en euro de la chambre
7.Créer un champ optionnel qui permet de choisir le « label qualité » de la chambre (1 épi, 2 épi, 3 épis, 4 épis)
8.Créer un champ optionnel pour capturer les « services offerts » (piscine, jacusszi, tennis, déjeuner, vélos)

C) Paramètrer l’apparence du formulaire

9.Positionnez les champs « label qualité » et « prix » au dessus de body et regrouper les dans un groupe intitulé « Qualité / Prix »
10.Positionnez le champ « Services Offerts » en dernier

D) Paramètrer l’affichage des noeuds

11.Paramètrer l’affichage afin que seul le prix apparaisse dans le teaser
12.S’assurer que tous les champs apparaissent dans la vue complète

E) Créer du contenu de test

13.Créer 5 chambres d’hôtes avec un texte aléatoire
14.Tester le formulaire et le rendu de l’affichage

F) Créer les vues

15.Installer Views si nécessaire
16.Créer une vue qui n’affiche que les propriétés qui ont un label > 2 épis et qui font le tri par prix décroissants
17.Afficher la vue et savourer le résultat