Всем привет,
На этой неделе мы начали первый спринт по кастомизации нашей темы для Discourse. Мы понимали, что придётся изменить довольно много файлов, так как дизайн сильно отличается от стандартных тем Discourse.
Наш подход очень прост: пытаться решить задачу только с помощью SASS, а там, где это необходимо, переопределять соответствующие файлы .hbs/.hbr. Мы понимаем, что второй вариант вносит дополнительные риски в плане поддержки (если атрибуты, передаваемые в представление, будут переименованы или удалены, наши шаблоны перестанут работать). Мы оценили вероятность возникновения такой ситуации по сравнению с необходимостью поддерживать собственную инфраструктуру и пришли к выводу, что хостинг на discourse.org приносит больше пользы нашему клиенту из некоммерческого сектора. Мы добавим на сайт код для мониторинга и разработаем план действий на случай возникновения проблем. Кроме того, если такое случится, мы считаем, что это, скорее всего, будет легко исправить.
Теперь перейдём к сути поста. Нам нужно понять, как превратить представление списка тем в ленту, похожую на комментарии. То есть под каждой темой отвечающие посты должны отображаться как комментарии.
Вот изображение того, что нам нужно создать (сейчас показан только один комментарий на тему — иногда нам нужно будет показывать больше):
Где мы сейчас находимся
@iainbamboo углубился в детали, чтобы выяснить:
- Уже ли доступны данные постов в списке тем, и нам нужно лишь изменить шаблон? → Нет, не доступны.
- Как добавить данные постов каждой темы в список, чтобы затем отрендерить их в шаблоне?
- Правильно ли мы вообще выбираем этот подход?
- Стоит ли модифицировать Ruby-код, чтобы добавить эти данные в модель, которая передаётся дальше (возможно, в виде плагина), примерно так, как в Discourse Timeline? Если мы создадим плагин, сможем ли мы использовать его на discourse.org?
- Можно ли просто запрашивать данные из Ember и принять неизбежное замедление загрузки из-за множественных AJAX-запросов к серверу для получения постов каждой темы (существует риск превышения лимитов запросов)?
- Можно ли вообще реализовать это без модификации Ruby-кода?
После достаточно тщательного изучения документации для разработчиков Discourse и просмотра исходного кода мы пришли к выводу, что нам нужна консультация эксперта по поводу наилучшего способа решения этой задачи.
И вот мы здесь ![]()
