Drupal 8 & Drupal 9 - Views - Utiliser un view_mode spécifique pour un seul élément

Cet article a été écrit il y a plus de quatre ans, son contenu n'est peut-être plus d'actualité.

Dans la continuité de Drupal 8 & Drupal 9 - Views - créer un Pager personnalisé.

Sur un de mes projets j'ai une vue qui liste des nœuds de type « Article » avec le mode d'affichage (view_mode) « Teaser », mais j'avais besoin d'afficher le premier élément de la première avec un autre mode d'affichage, le contenu prendra toute la largeur, au lieu d'un tiers pour les suivants.

J'ai pour cela utilisé le hook HOOK_views_post_render :

function MON_MODULE_views_post_render(ViewExecutable $view, &$output, \Drupal\views\Plugin\views\cache\CachePluginBase $cache) {
  if ($view->id() === 'front_actualites' && $view->current_display === "page" && \Drupal::request()->query->get('page', 0) === 0) {
    $output['#rows'][0]['#rows'][0]['#view_mode'] = 'teaser_pinned';
  }
}

avec

$view->id() === 'front_actualites' && $view->current_display === "page"

Je teste si je suis bien sur la bonne vue avec le bon mode d'affichage

\Drupal::request()->query->get('page', 0) === 0

Me permet de tester le paramètre GET ?page= (qui gère la pagination) en fournissant la valeur par défaut 0, afin de tester que je sois bien sur la première page.

Enfin je change le view_mode de la première ligne de mes résultats :

$output['#rows'][0]['#rows'][0]['#view_mode'] = 'teaser_pinned';

 

Contenus en rapport

snippet · 8 Oct 2020 Drupal 8 & Drupal 9 - Views - créer un Pager personnalisé Pour un projet j'avais besoin d'afficher une pagination particulière sur une vue. La première page devait afficher 9 éléments, et les suivantes 12. J'ai donc… snippet · 7 Fév 2020 Drupal 8 - Views - Créer un filtre contextuel personnalisé Les contextual filters ou filtres contextuels sont une fonctionnalité très utile du module views de drupal : il permettent, comme le nom l'indique de filtrer… snippet · 14 Mar 2019 Drupal 7 - Créer un champ calculé pour Views (et oui des fois on doit retourner sous drupal 7) Voici comment créer un champ calculé pour un type d'entité (ici Node) qui sera accessible comme n'importe…

Commentaires (2)

Comments

Simon Georges (non vérifié)

Pourquoi ne pas utiliser un attachment ? ;-)

phildid (non vérifié)

Tiens, je suis retomber sur ce post, les hooks c'est vraiment un bon sujet de vidéo. Cette ancienne version de drupal qui permettait de faire beaucoup de choses intéressantes; par contre dés que j'ai essayé de bricoler avec le fichier .theme et d'utiliser certaines fonctions, à chaque fois çà plantait. Un bon tuto s'impose avec des exemples simples. ta démarche est super, on commence à surfer dans ton labyrinthe.