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

Générer le contenu de la page

Référence en anglais sur drupal.org : 12 octobre 2009 - 06h17
http://drupal.org/node/206762


Nous avons maintenant un bloc opérationnel et une page de paramétrage pour ce bloc. Le bloc affiche un nombre donné de liens. Cependant, il peut y avoir davantage de liens que le maximum à afficher. Nous allons donc créer une page qui liste tout le contenu créé il y a juste une semaine. Cela demande trois étapes, que vont être décrites sur cette page et sur les deux prochaines.

Dans la première étape, décrite ci-dessous, nous ajoutons une nouvelle fonction au fichier onthisdate.module qui affichera la liste complète des contenus créés il y a une semaine. Nous appellerons cette fonction onthisdate_all (nous pourrions choisir un autre nom, mais il devra toujours commencer par onthisdate_).

Un petit rappel des conventions Drupal sur le nom des fonctions : si vous créez une fonction strictement privée (c'est à dire qu'aucun autre module ne devra l'appeler), faites débuter son nom par _votre_nom_de_module_. Si votre fonction est publique (c'est à dire qu'elle peut être appelée par un autre module, et vous ne modifierez pas ses arguments ou son comportement souvent), débutez son nom par votre_nom_de_module_. Si vous implémentez un hook Drupal, vous devrez toujours appeler la fonction votre_nom_de_module_hookname. De même, si vous n'implémentez pas de hook Drupal, vérifiez les hooks pour vous assurer que vous n'avez pas choisi un nom de fonction identique à celui d'un hook existant.

Revenons à notre fonction onthisdate_all() du fichier onthisdate.module. Elle ne fera qu'afficher le contenu du bloc avant que nous n'instaurions le nombre maximum de liens à afficher, et nous voulons que la fonction renvoie le contenu de la page en HTML. Notez que nous n'avons pas à nous préoccuper des headers HTML, des titres de la page, des menus, pieds de page, etc. Nous devons juste générer la section contenu de la page, Drupal et notre thème s'occupant du reste.

Voici une partie de la fonction, copié-collé depuis la fonction bloc :

<?php
function onthisdate_all() {
  
// variable contenu qui sera retournée pour affichage 
  
$page_content '';

  
// Obtenir la date du jour
  
$today getdate();

  
// Calculer minuit il y a une semaine 
  
$start_time mktime(000$today['mon'], ($today['mday'] - 7), $today['year']);

  
// nous ne voulons que les éléments du jour en question
  // on calcule donc un jour
  
$end_time $start_time 86400;
  
// 60 * 60 * 24 = 86400 secondes dans une journée

  
$query "SELECT nid, title, created FROM " .
           
"{node} WHERE created >= '%d' " .
           
" AND created <= '%d'";

  
// obtenir les liens (pas de limite ici)
  
$queryResult =  db_query($query$start_time$end_time);
  while (
$links db_fetch_object($queryResult)) {
    
$page_content .= l($links->title'node/'.$links->nid) . '<br />';
  }

  
// À suivre....
}
?>

Comme nous en parlions précédemment, nous avons incorporé la mise en page dans ce code-source et nous n'aurions pas dû. Une bien meilleure pratique Drupal est de rendre les affichages de votre modules stylisables. Cette question étant hors du sujet de ce tutoriel, nous irons au plus simple et inclurons la mise en page dans notre contenu.

Comme nous en parlions également précédemment dans le cas d'un bloc, vous voudrez peut-être indiquer un autre intervalle de temps si votre site n'a pas de contenu pour la date d'il y a une semaine.

Le reste de la fonction vérifie s'il y a du contenu et le signale à l'utilisateur. Cela vaut mieux que d'afficher une page blanche qui pourrait troubler l'utilisateur.

<?php
function onthisdate_all() {

  
// Mettez ici la précédente partie de la fonction ! 

  // vérifier s'il y a du contenu avant
  // de retourner la  page
  
if ($page_content == '') {
    
// pas de  contenu il y a une semaine, en informer l'utilisateur
    
$page_content "pas d'événement dans l'historique du site pour la date indiquée .";
  }
  return 
$page_content;
}
?>

Bien que cette fonction affiche les liens des contenus créés il y a une semaine, nous n'avons pas spécifié l'URL qui affichera cette page. C'est l'objet de la prochaine étape.