Могу ли я создать динамическую главную страницу, например такую:
10 недавно активных тем (на этой неделе)
5 самых последних созданных тем (сегодня)
5 более новых тем (на этой неделе)
5 тем с наибольшим количеством ответов (на этой неделе)
5 тем с наибольшим количеством лайков (на этой неделе)
5 самых последних созданных тем (вчера или сегодня)
В Discourse есть компонент темы «Filtered Topics List», с помощью которого можно создать главную страницу такого вида, но, на мой взгляд, его недостаток в том, что он работает только с определённым временным диапазоном, поэтому мне пришлось бы ежедневно менять этот диапазон.
То есть сейчас это работает на основе указания дат, например:
activity-before:YYYY-MM-DD — темы с последним обновлением до указанной даты
activity-after:YYYY-MM-DD — темы с последним обновлением после указанной даты
created-before: YYYY-MM-DD — темы, созданные до указанной даты
created-after:YYYY-MM-DD — темы, созданные после указанной даты
Но тогда мне постоянно придётся менять даты. Есть ли в форуме какая-либо альтернатива?
Требуется ли в вашем случае, чтобы это были именно темы с наибольшим количеством ответов/лайков? Если вы используете список тем /top, можно настроить автоматические временные периоды… основные факторы — просмотры, лайки и количество постов (и вы можете немного скорректировать эти веса в настройках сайта).
Да, это усложнение при использовании нескольких списков тем: компоненту необходимо сопоставлять каждый список и удалять дубликаты. Это не очень сложно, но, насколько я знаю, это не реализовано ни в одном из доступных компонентов.
Да, добавить функцию «скрыть дубликаты» к Filtered Topic Lists было бы не слишком сложно, если @gormus заинтересован. Действие findFilteredTopics можно доработать так, чтобы оно сохраняло все идентификаторы тем в список, а затем удаляло дубликаты.
Недостаток в том, что если вы запросите список из 10 тем, то после удаления дубликатов можете получить только 5… но это можно частично избежать, например, подгружая немного больше тем, чем указано в настройках.
Я уже добавлял фильтрованные списки на домашние страницы нескольких проектов и должен предупредить: чтобы наполнить несколько списков «самое свежее» с перекрывающимися фильтрами, вам изначально нужна очень активная сообщество. Однако, когда ваше сообщество действительно активно, у вас также будет гораздо более богатый набор контента для создания динамичной домашней страницы. В таком случае блок с разными списками может выглядеть скорее статичным и не особенно привлекательным визуально.
Однако, если посмотреть под другим углом, можно рассмотреть вариант с одним или двумя списками с ручным фильтром по времени. Это может даже казаться пользователям более динамичным. Например, как на этом изображении: