Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

Écrire des fichiers.info (Drupal 7x.)

Traduction de la page http://drupal.org/node/542202
actualisée sur Drupal.org le 17 Janvier 2011


Vue d'ensemble

Drupal utilise des fichiers .info pour mémoriser les metadonnées des modules et des thèmes.

Pour les modules, le fichier .info sert à :

  • mettre en forme les données sur les pages d'administration de l'interface graphique utilisateur de Drupal
  • fournir des critères pour contrôler l'activation et la désactivation de modules
  • informer Drupal de l'existence d'un module
  • l'administration générale dans d'autres contextes

La présence du fichier .info est obligatoire pour que le système détecte la présence d'un module.

Exemple

Voici un exemple de fichier .info

; $Id$
name = Example module
description = "Gives an example of a module."
core = 7.x
package = Views
dependencies[] = views
dependencies[] = panels
files[] = example.test
configure = admin/config/example

Ce fichier .info doit porter le même nom que le fichier .module et doit se trouver dans le même dossier. Par exemple, si votre module s'appelle example.module, votre fichier .info devra s'appeler example.info.

Ce fichier est au format normé des fichiers .ini qui dispose les éléments en paires clé/valeur séparés par un signe égal. Vous pouvez placer les valeurs entre guillemets, elles peuvent alors contenir des retours à la ligne.

description = "Fred's crazy, crazy module; use with care!"

Les fichiers .info peuvent contenir des commentaires. Le caractère marquant le début d'un commentaire est le point-virgule. Il est d'usage de placer l'ID CVS au début d'un fichier .info, marqué comme commentaire :

; $Id$

Champs

Le fichier .info peut contenir les champs suivants :

name (obligatoire)

Le nom de votre module qui sera affiché. Il doit respecter les normes de mise en majuscules de Drupal : seule la première lettre du premier mot doit être en majuscule («Exemple module», pas «Exemple Module» ni «exemple module»). Les espaces sont autorisées puisque le nom est surtout utilisé pour l'affichage.

name = "Forum"

description (obligatoire)

Une courte description, de préférence sur une seule ligne, qui dira, sur la page d'administration des modules, ce que fait le module. Souvenez-vous que des descriptions trop longues peuvent causer des difficultés d'utilisation de cette page, soyez donc le plus concis possible. Ce champ est limité à 255 caractères.

description = "Permet la mise en place de discussions générales sur beaucoup, beaucoup de sujets. Et plus encore".

Les descriptions peuvent contenir des liens vers les documentations et les code-source. L'exemple qui suit montre un lien vers un auteur. Cela pourrait être un lien vers de la documentation sur Drupal.org. Cela sert lorsque la doc en ligne est meilleure que le fichier Readme et lorsque vous voulez vous renseigner sur le module avant de l'activer.

description = Domain manager by <a href="http://petermoulding.com">Peter Moulding .com</a>.

core (obligatoire)

La version de Drupal pour laquelle votre module est destiné. Pour Drupal 7 ce sera 7.x, etc. Les modules ne doivent pas spécifier la branche de Drupal. 6.x est correct, 6.2 ne l'est pas.

core = 7.x

Fichiers (obligatoire)

Drupal supporte maintenant un registre de code chargeable dynamiquement. Pour son fonctionnement, tous les modules doivent maintenant déclarer leurs fichiers de code dans le fichier .info comme ceci :

name = Module Exemple
description = "Un module Exemple."
...
files[] = exemple.test

Lorsqu'un module est activé, Drupal parcourra tous les fichiers déclarés et indexera toutes les fonctions et toutes les classes qu'il trouvera. Les classes seront chargées automatiquement par PHP lors de leur premier accès.

dependencies (facultatif)

Un tableau des modules requis pour le fonctionnement du vôtre. Si ces modules ne sont pas présents, le vôtre ne pourra pas être activé. Si ces modules sont présents mais pas activés, l'administrateur en sera averti grâce à une liste des modules requis et pourra les activer, ou abandonner toute l'opération.

La valeur qui indique chaque dépendance doit être le nom du module (sans l'extension .module) et doit être écrite en minuscules, comme dans les exemples ci-dessous. Les espaces ne sont pas autorisées.

dependencies[] = taxonomy
dependencies[] = comment

Si vous devez indiquer qu'un numéro de version donné d'un module est requis, Drupal 7 prévoit le cas dans le champ dependencies[]. Les numéros de version sont facultatifs et ne sont obligatoires que si un module a absolument besoin d'une version ou branche précise d'un autre module.

Voici la syntaxe pour le champ dependencies[] :

dependencies[] = modulename (majeure.mineure)

majeure est le numéro de version majeure et mineure est le numéro de version mineure, numérique ou alphanumérique. x peut être utilisé pour annoncer une version mineure quelconque. Voici quelques exemples :

name = Example
description = An example module
version = 1.0
dependencies[] = exampleapi (1.x)
...

Dans ce code du fichier .info, le module Example exige un module Example API dont le numéro de version majeur est 1 et le numéro de version mineure sans importance.

dependencies[] = exampleapi (1.0)

Cette ligne indique que le module a besoin de la version 1.0 (et seulement la version 1.0) du module Example API.

dependencies[] = exampleapi (1.x)

Le module précédent a besoin de n'importe quelle version mineure du module dont la branche est 1.x (1.0, 1.1, 1.2-beta4, etc).

Le champ dependencies[] du fichier .info peut également mentionner des opérateurs :

  • = ou == égal (égal est la valeur par défaut)
  • > supérieur à
  • < inférieur à
  • >= supérieur ou égal à
  • <= inférieur ou égal à
  • != différent de
dependencies[] = exampleapi (>1.0)

Le module précédent a besoin de n'importe quelle version supérieure à la version 1.0.

Vous pouvez également mentionner la version du noyau :

dependencies[] = exampleapi (>7.x-1.5)

Le module précédent a besoin de n'importe quelle version mineure de Drupal 7 et n'importe quelle version de module supérieure à la version 1.5.

De plus, des dépendances de version multiples peuvent être déclarées par des valeurs entre parenthèses, séparées par des virgules :

dependencies[] = exampleapi (>1.0, <=3.2, !=3.0)
package (facultatif)

Si votre module est livré avec d'autre modules, ou est destiné à fonctionner exclusivement avec d'autres modules existants, indiquez le nom du groupe (package) ici.

Si vous n'indiquez rien, le module sera listé dans le groupe Autres.

En général, ce champ ne devrait être utilisé que par des packages multi-modules, ou par des modules étendant ces packages, comme CCK, Views, E-commerce, Organic Groups et ainsi de suite. Tous les autres modules ne devraient pas renseigner ce champ.

À titre d'exemple, quatre modules ou plus qui dépendent les uns des autres sont des bons candidats pour un package. Mais pas vraiment s'il y en a moins. L'exception à cette règle est le groupe « Development », qui devrait être utilisé pour tout module servant d'outil de développement.

Si elle existe, la chaîne package sera utilisée pour grouper les modules dans la page d'administration des modules; la chaîne package servira d'en-tête pour le groupe et devra donc être homogène (en orthographe et casse) dans tous les fichiers .info où elle apparaîtra. Elle ne devra pas utiliser de ponctuation et devra se conformer aux normes de mise en majuscules de Drupal, comme indiqué précédemment.

package = Views

Voici quelques suggestions de groupes possibles :

  • Admnistration
  • Commerce
  • Development
  • Media
  • User Interface
  • Video
  • Views
  • Voting (s'il utilise/a besoin de VotingAPI)

Le wiki Package names for contributed modules essaie de lister les nom de groupes en cours; cela ne veut pas dire qu'ils sont conseillés.

php (facultatif)

Depuis la version 6.x, les modules et les thèmes doivent spécifier la version PHP minimale requise pour leur fonctionnement. Cela se fait par l'ajout d'un ligne comme celle-ci dans le fichier .info :

php = 5.3

Cette ligne indique que le module ou le thème ne fonctionneront pas avec une version de PHP antérieure à la 5.3. C'est utile si le module fait appel à des caractéristiques ajoutées dans les dernières versions de PHP (manipulation de XML améliorée, itération d'objets, JSON, etc).

Si aucune version n'est indiquée, on suppose qu'on utilise la même version que celle demandée par le noyau de Drupal.

Les modules ne devraient pas indiquer de version de PHP à moins qu'ils n'aient besoin d'une version plus récente que celle demandée par le core. Reportez-vous au manuel de PHP pour d'autres informations sur les chaînes de version PHP.

version (déconseillé)

La chaîne version sera automatiquement ajoutée par Drupal.org quand une release est créée et un tarball empaqueté. Cependant, si votre module n'est pas hébergé par Drupal.org, vous pouvez donner n'importe quelle valeur à cette clé, du moment qu'elle vous semble parlante.

Les utilisateurs obtenant leurs modules directement depuis le CVS n'auront pas de chaîne de version car les fichiers .info enregistrés dans le CVS ne déclarent pas de version. Les utilisateurs sont encouragés à utiliser le module CVS deploy afin de fournir aux modules checked out directement depuis le CVS des chaînes de version exactes pour les pages d'administration de modules.

Comme le noyau Drupal utilise un processus d'empaquetage légèrement différent des modules tiers, le modules du noyau ont une ligne version pré-déclarée. c'est une exception à la règle, pas un modèle à suivre pour les modules tiers.

configure (facultatif)

Depuis la version 7.x, le chemin de la page de configuration principale du module.

Si le module est activé, des liens « Configure » et « Droits d'accès » apparaîtront. Voici le chemin du lien « Configure », d'un module donné, affiché pour ce module dans la page des modules.

configure = admin/config/example
required (facultatif)

Depuis la version 7.x, en ajoutant required = TRUE, les modules et les thèmes peuvent déclarer qu'ils sont absolument obligatoires et ne doivent jamais être désactivés. Ces modules seront automatiquement activés pendant l'installation. La plupart du temps, cela ne sera utilisé qu'avec les modules requis du noyau Drupal (e.g. Node, User, etc).

hidden (facultatif)

Depuis la version 7, en ajoutant hidden = TRUE, les modules et les thèmes peuvent indiquer qu'ils ne sont pas visibles sur la page des modules. C'est généralement utilisé avec des modules de tests avec SimpleTest, lorsque les utilisateurs finaux ne doivent pas activer les modules de tests.

project (déconseillé, uniquement à l'usage du packaging)

Les développeurs du module ne devraient pas du tout utiliser cette clé. Le script de packaging de drupal.org placera automatiquement une chaîne à cet endroit pour identifier le projet d'où vient le module. C'était initialement utilisé pour le module Update status, les installations de Drupal pouvaient ainsi surveiller les versions de packages installés et avertir les administrateurs quand de nouvelles versions étaient disponibles.

Pour plus d'information sur le fichier .info, voir la documentation drupal_parse_info_file().

Dépannage

J'ai ajouté la ligne core = 7.x mais la pages des modules, mon module me dit « Cette version est incompatible avec la version 7.x du core Drupal ». Que faire ?

Faites attention au fait que le format de dépendances a été modifié entre les versions 5.x et 6.x de Drupal.

Incorrect :

name = Example
description = Example description
dependencies = foo bar   ; 5.x dependency format.
core = 6.x

Correct :

name = Example
description = Example description
dependencies[] = foo     ; Notez le [], et également le fait que chaque dépendance est sur sa propre ligne.
dependencies[] = bar
core = 6.x

Description et accents

Une remarque pour tous les développeurs non anglophones... Si vous devez utiliser des accents, utilisez la forme ASCII. C'est la seule façon d'éviter de tronquer ce champ dans la base de données. On ne peut évidemment pas utiliser utf8_encode à cet endroit.

Voir également