Всем привет,
Я разрабатываю тему для кастомизации нескольких аспектов стандартного Discourse. С этой целью мне нужно изменить компонент topic-list-item, который, на первый взгляд, выглядит довольно просто. Я добавил в свою тему файл по пути javascripts/discourse/templates/components/topic-list-item.hbs и могу размещать там свой код. Однако именно здесь начинаются вопросы.
В компоненте для этого шаблона есть метод renderTopicListItem, который устанавливает свойство topicListItemContents, используемое для стандартного рендеринга. Проверьте:
Первый вопрос: ПОЧЕМУ? Зачем нам это нужно? Почему нельзя просто использовать код Handlebars как обычно?
Чтобы не вмешиваться слишком сильно в исходный код ядра, я решил оставить topic-list-item как есть, а вместо этого заменить файл topic-list-item.raw.hbs в своей теме. Это работает без проблем.
Тем не менее, я ожидал, что добавление файла javascripts/discourse/templates/mobile/list/topic-list-item.raw.hbs в мою тему заменит мобильное представление, но этого не происходит.
Метод findRawTemplate по-прежнему возвращает стандартный мобильный шаблон из Discourse, который содержит:
Даже при ручном редактировании в рамках моего локального проекта Discourse мне не удаётся обновить мобильную версию с внесёнными изменениями.
Надеюсь, объяснение понятно, и кто-то обладает знаниями в этой области. На данный момент всё выглядит сломанным, и, возможно, это стоит исправить, если оно действительно сломано (я могу это сделать, если лучше пойму, что происходит).
Пока я продолжу искать ответ самостоятельно и буду обновлять информацию о новых находках. Ниже небольшая GIF-анимация того, что у меня отображается локально.
http://g.recordit.co/AtOJlltJ8o
ОБНОВЛЕНИЕ: Я также изменил расширение raw на .hbr, так как в недавнем коммите файлы были изменены, но мне всё ещё не удаётся заставить это работать.


