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 !
Articles en lien
- Tutoriel : Créer un bloc "Articles similaires" ou "En relation" avec Views 3
- Tutorial : Vue Calendrier avec Drupal 7 et Views 3, gestion des événements
0 commentaire