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.
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.
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 :
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 :
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.
Voici l’enchaînement des tâches nécessaires à la création d’un contenu spécifique :
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
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:
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'.
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 :
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 :
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 :
Travaux pratiques :
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 :
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 :
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).
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