À l'aide d'une autre question: Afficher les nœuds les plus récents pour chaque terme de taxonomie dans les vues J'ai pu créer la vue dont j'ai besoin, sauf qu'elle affiche tous les messages pour chaque terme (regroupés par terme)? Comment limiter chaque terme pour afficher seulement 3 de leurs derniers messages.
par exemple
Durée 1
- Post 1
- Post 2
- Post 3
Durée 2
- Post 1
- Post 2
- Post 3
Durée 3
- Post 1
- Post 2
- Post 3
la source
Après une enquête plus approfondie, il semble que Peek Summary soit exactement ce que vous voulez. Les captures d'écran sur la documentation sont pour Drupal 6, et c'est légèrement différent dans Drupal 7, j'ai donc joint quelques captures d'écran mises à jour.
Vous devrez modifier le pager pour chaque groupe que vous souhaitez limiter, ce qui est regrettable.Lorsque vous modifiez le pager pour un groupe, il modifie les paramètres de tous les groupes. Si vous souhaitez afficher un nombre de nœuds par groupe différent du nombre total de groupes, remplacez-le dans les paramètres 'Format' sous 'Filtres contextuels' (sur la première capture d'écran en violet).Il présente l'inconvénient de créer essentiellement [n] vues pour [n] regroupements, ce qui pourrait être un problème de performances en fonction du nombre de regroupements dont vous disposez, mais il limite la requête au seul ensemble de nombres à afficher. Cela pourrait améliorer vos performances, selon votre cas d'utilisation. Comme toujours, cachez de manière responsable.
la source
Un moyen de limiter cela dans le code serait d'ajouter quelque chose comme ce qui suit à un module personnalisé:
Il s'agit d'une vue des termes de taxonomie qui est connectée aux nœuds via une relation. Si vous n'avez qu'une vue des nœuds, votre kilométrage peut varier.
Bien qu'il empêche l'affichage de plus de 3 par terme, cela n'empêchera pas la requête de renvoyer tous les résultats pour chaque terme, ce qui n'améliore pas du tout les performances SQL. Si vous avez un très grand nombre de résultats pour chaque terme, faites des affichages de panneau d'affichage séparés et mettez-les tous dans une seule région en utilisant quelque chose comme CTools Page Manager afin de ne pas exécuter d'énormes requêtes.
Comme toujours, vous voudrez mettre ce contenu en cache en production.
la source
Hook_views_pre_build()
ouhook_build_pre_execute()
pourrait être utilisable pour quelque chose comme ça qui réduit les performances, mais je ne les connais pas aussi bien. Ou vous pourriez aimer ma réponse à cette question précédemment .