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

Déclarer le bloc de contenu

Référence en anglais sur drupal.org : 3 Avril 2010 - 13h24 - http://drupal.org/node/206758


Les modules sont écrits pour faire toutes sortes de choses : certains modules créent des blocs (résumés qui apparaissent souvent sur la droite ou la gauche de la page), d'autres créent des types de contenus spéciaux (pour du contenu de page, tel celui que vous lisez en ce moment), d'autres tracent des données back-end, et certains font tout ce qui précède.

Vous pourrez entendre les expressions « Block modules » pour décrire des modules qui créent essentiellement du contenu de bloc (comme le module menu) ou « Node modules » pour décrire les modules qui génèrent du contenu de page (comme les modules blog ou forums). À cette étape, ce module est un « block module », puisqu'il génère un bloc.

Dans cette page du tutoriel, le module déclarera un bloc qui affichera (après la prochaine page du tutoriel) les publications récentes de blog et du forums. Le hook pour créer les blocs s'appelle, avec beaucoup d'à-propos, hook_block. Pour l'implémenter, créez une fonction appelée onthisdate_block() dans le fichier onthisdate.module.

Voici le modèle :

<?php
/**
* Implementation of hook_block
* @param string $op one of "list", "view", "save" and "configure"
* @param integer $delta code to identify the block
* @param array $edit only for "save" operation
**/
function onthisdate_block($op 'list'$delta 0$edit = array()) { 

  
// VOTRE CODE DE GENERATION DE BLOC ICI 

// function onthisdate_block
?>

La fonction prend ces trois paramètres :

  • $op (ou operation : les fonctions hook_block() sont appelées pour réaliser quatre opérations différentes, qui sont list,, view, save et configure. Ce paramètre indique à la fonction quelle opération est appelée. Nous parlerons de l'opération list ci-dessous et de l'opération view dans la prochaine page du tutoriel. Les opération configure et save permettent à votre bloc d'avoir une page de configuration et de sauvegarder les paramètres - nous ne les utiliserons pas dans ce tutoriel.
  • $delta : votre module peut définit plus d'un bloc dans son opération list. Chaque bloc a un code delta, qui est normalement un nombre, et Drupal passe ce nombre pour les autres opérations afin que vous puissiez identifier le bloc du module sur lequel effectuer l'opération. Notre module exemple n'aura qu'un seul bloc. Le module user du core Drupal est un exemple de module qui a plusieurs blocs : bloc de login user, bloc utilisateurs récents et bloc qui est en ligne.
  • $edit : utilisé avec l'opération save seulement. Non abordé dans ce tutoriel.

La première opération est list, qui énumère les blocs fournis par le module, et déclare comment ils seront vus dans la page Administrer » Construction du site » Blocs (le module Blocks appellera cette fonction avec $op='list' lorsqu'il construit la liste des blocs pour la page d'administration des blocs)

Voici le détail de la fonction onthisdate_block() (la prochaine page du tutoriel en contient davantage) :

<?php
/**
* Implementation of hook_block
* @param string $op one of "list", "view", "save" and "configure"
* @param integer $delta code to identify the block
* @param array $edit only for "save" operation
**/
function onthisdate_block($op 'list'$delta 0$edit = array()) { 
if (
$op == "list") {
    
// Generate listing of blocks from this module, for the admin/block page
    
$block = array();
    
$block[0]["info"] = t('On This Date');
    return 
$block;
  }
// function onthisdate_block
?>

Note pour le débutants : la balise ouvrante n'apparaît qu'une fois dans votre fichier module, au début, et la balise fermante ?> ne doit pas figurer du tout dans votre fichier.

Ok, maintenant regardons ce code...

$block

$block est juste une variable utilisée pour stocker les données nécessaires, avant d'être renvoyée.

Un module peut déclarer plusieurs blocs (par exemple, un bloc qui affiche des données détaillées, et un autre bloc qui n'affiche qu'un résumé). Pour cette raison, la variable Bloc est un tableau, et chaque élément du tableau représente un bloc fourni par votre module.

$bloc[0]

Notre module exemple ne fournit qu'un bloc, qui est stocké dans l'élément 0 du tableau (le premier élément du tableau).

L'index de tableau 0 est passé à la fonction onthisdate_block via la valeur du paramètre $delta qui sera utilisée par la suite dans les traitements.

Si nous avions déclaré plusieurs blocs, nous aurions $block[0], $block[1], $block[2] etc; nous aurions également dû vérifier la valeur de $delta passée à la fonction pour les traitements ultérieurs.

$block[0]["info"]
Chaque élément (0, 1, 2) représentant un bloc est également un tableau de clé = valeurs. Certaines de ces clés sont info, cache, weight, status. Ça fait un peu beaucoup pour une première leçon, aussi nous allons traiter de info qui est le nom lisible et compréhensible par un humain qui est affiché en regard du bloc dans la page d'administration. Aussi, dans hook_block() notre bloc est connu comme $delta = 0, mais dans la page d'administration il est connu sous le nom On This Date.

La prochaine page du tutoriel traitera de la génération du bloc, par l'implémentation de l'opération view.

Voir aussi