С помощью другого вопроса: Показать новейшие узлы для каждого термина таксономии в представлениях. Мне удалось создать требуемое представление, кроме того, что оно отображает все сообщения для каждого термина (сгруппированные по термину)? Как ограничить каждый термин, чтобы отображать только 3 своих последних сообщений.
например
Срок 1
- Пост 1
- Пост 2
- Пост 3
Срок 2
- Пост 1
- Пост 2
- Пост 3
Срок 3
- Пост 1
- Пост 2
- Пост 3
источник
После дальнейшего исследования кажется, что Peek Summary может быть именно тем, что вам нужно. Снимки экрана в документации относятся к Drupal 6, а в Drupal 7 они немного отличаются, поэтому я добавил несколько обновленных снимков экрана.
Вам нужно будет отредактировать пейджер для каждой группы, которую вы хотите ограничить, что очень печально.Когда вы редактируете пейджер для одной группы, он меняет настройки для всех групп. Если вы хотите отобразить количество узлов в группе, отличное от общего количества групп, переопределите это в настройках «Формат» в «Контекстных фильтрах» (на первом снимке экрана, выделенном фиолетовым цветом).У него есть недостаток, заключающийся в том, что он по существу создает [n] представлений для [n] группировок, что может быть проблемой производительности в зависимости от того, сколько у вас группировок, но он ограничивает запрос только числом, отображаемым для отображения. Это может улучшить вашу производительность, в зависимости от вашего варианта использования. Как всегда, кеш ответственно.
источник
Чтобы ограничить это в коде, можно добавить что-то вроде следующего в пользовательский модуль:
Это для просмотра терминов таксономии, которые связаны с узлами через отношения. Если вы просто просматриваете узлы, ваш пробег может отличаться.
Хотя он предотвращает отображение более 3 за термин, это не помешает запросу возвращать все результаты для каждого термина, поэтому он вообще не повышает производительность SQL. Если у вас есть очень большое количество результатов для каждого термина, создайте отдельные панели просмотра и разместите их все в одном регионе, используя что-то вроде CTools Page Manager, чтобы не выполнять большие запросы.
Как всегда, вы захотите кэшировать эти вещи на производстве.
источник
Hook_views_pre_build()
илиhook_build_pre_execute()
может использоваться для чего-то подобного, что снижает производительность, но я не настолько знаком с этим. Или вам может понравиться мой ответ на этот вопрос ранее .