Aller au contenu principal
loading

Tuturiel Drupal 7, vue et pager (programmation) : faire une vue sans Views

POSTÉ DANS Drupal 7 TAGS Drupal 7 AUTEUR herve COMMENTAIRES 0

Sous Drupal 7 (et déjà sous Drupal 6), il est très facile de coder une vue paginée sans passer par l'usine à gaz Views, et ainsi d'avoir le markup que l'on souhaite, avec une requête SQL optimisée, qui ne mette pas trois plombes à s'exécuter.

Pour ça, il suffit d'avoir 2-3 connaissances en PHP et SQL, et de suivre ce tuto :

Premièrement, on écrit sa requête SQL (pour l'exemple je vais faire simple, sélectionner les "title" de la table "node", avec un order by sur le paramètre "sticky") :

$query = db_select('node','n'); 
$intermediate = $query->fields('n',array('title'))    
  ->orderBy('n.sticky', 'DESC');

 
Ensuite, je rajoute la condition du pager dans la requête (20 résultats par page) :

$maxCount = $intermediate->countQuery()->execute()->fetchField(); 
$num_per_page = 20; // j'affiche 20 résultats d'un coup 
$page = pager_default_initialize($maxCount, $num_per_page); 
$offset = $num_per_page * $page; $query->range($offset, $num_per_page);

Et voilà, c'est fait, j'ai plus qu'à exécuter la requête :

$nodes = $query->execute()->fetchAll();

 
Donc à partir de là on peut faire ce que l'on veut sur nos données (ici je vais simplement faire un echo du title)

$output = ''; 
foreach ($nodes as $node) {   
  $output .= $node->title.'<br />'; 
}

Le dernier truc à faire, c'est de rajouter le pager à la fin du code HTML :

$output .= theme('pager'); 
echo $output;

Voilà, c'est ultra simple, et plus besoin de Views !

 



0 commentaire