Почему мне так сложно настроить Discourse?

Если я хочу отредактировать CSS, мне нужно создать компонент, создать CSS-файл, и тогда всё работает. Но если я добавлю ещё один компонент, например «Discourse Topic Cards», а затем вернусь к файлу пользовательского CSS, внесу изменения, нажму «Сохранить» и обновлю страницу, пользовательский CSS не применится.

Также почему нет возможности редактировать шаблоны в админ-панели? Если я хочу отредактировать шаблоны «Discourse Topic Cards», мне нужно подключиться по SSH к Docker-контейнеру Discourse и внести изменения вручную?

Вам более знаком WordPress? Если да, то это проще понять: вы никогда не редактируете напрямую ядро, плагины или темы, потому что все изменения будут утеряны при следующем обновлении.

Так что многие из этих трудностей на самом деле связаны не с Discourse, а с тем, как устроен мир :smirking_face:

Возможно, вам потребуется добавить !important к вашим CSS-правилам, чтобы они имели приоритет над другими правилами, определёнными в других местах. Такая ситуация возникает, когда несколько компонентов загружаются в определённом порядке. Это распространённая проблема и не обязательно специфичная для Discourse. Не уверен, что мы могли бы внедрить систему взвешивания для указания «этот компонент должен загружаться в конце», но это звучит крайне неуправляемо.

Именно поэтому важно, чтобы темы и компоненты тем не использовали !important в CSS, если это абсолютно необходимо.

Если вы хотите отредактировать компонент удалённой темы, вы можете свободно сделать его форк на GitHub и создать свою версию. Это самый простой способ! Однако вы не будете получать обновления от оригинальной версии. Редактировать удалённые компоненты нельзя, так как ваши изменения могут конфликтовать с обновлениями (и это настоящий кошмар в плане поддержки).

Кастомизация Discourse достаточно доступна. Всё зависит от того, какой уровень кастомизации вы ожидаете. Что именно вы хотите здесь достичь? Возможно, мы сможем помочь. Команда Discourse обычно открыта, если какая-то область допускает возможности кастомизации.

Я управляю сайтами в интернете уже несколько лет. Я считаю, что если создать что-то более уникальное, это обычно работает лучше. Я хотел бы настроить шаблон «Discourse Cards Topic» и включить в него информацию об авторах, количестве ответов, просмотров и статистику активности из общего списка тем.

Что вы можете сделать:

  • Предложить новые функции (в соответствующей теме, как вы уже сделали)
  • Опубликовать сообщение в Marketplace, если это уместно
  • Изучить, как писать код и работают компоненты тем (см. #documentation:theme-developers) и не стесняйтесь обращаться за помощью к Development!

Есть ли какая-либо документация для программистов?

Вот несколько ресурсов, которые могут быть вам интересны для ознакомления с Discourse:

Не торопитесь, читая! Некоторые руководства содержат ссылки на внешние материалы.

Если у вас возникнут вопросы, задавайте их в канале Development :+1:.

Если вы хотите внести изменения поверх компонента темы Discourse Topic Cards, вы можете сделать следующее:

  1. Установите Discourse Topic Cards и добавьте его в активную тему.
  2. Создайте новый компонент темы.
  3. Добавьте новый компонент темы в активную тему.

Вам не нужно подключаться к серверу по SSH, изменять исходный код или делать форк репозитория.

В качестве примера вот что я сделал, чтобы внести некоторые изменения в Discourse Topic Cards для темы Minima:

Таким образом, вы продолжаете получать обновления темы, а все компоненты темы остаются организованными и разделёнными (чтобы их можно было легко отключать/включать для отладки).

Но да, я действительно думаю, что этот процесс можно было бы описать немного лучше для администраторов.