Когда использовать плагин, а когда компонент темы?

Мне нужно внести небольшие изменения в некоторые представления:
Например:

Нужно ли создавать плагин для каждого изменения, даже если оно очень маленькое, например, только CSS?
Спасибо за помощь.

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

Если речь идет лишь о локальном изменении, перейдите в Администрирование → Настроить → Тема и внесите изменения в новый компонент темы, а затем добавьте его в вашу текущую тему.

Посмотрите по адресу https://meta.discourse.org/c/documentation/theme-developers/127, особенно:

Спасибо!
Так, если мне нужно изменить метку или добавить всплывающую подсказку, мне нужно создать тему, но если мне нужно добавить новый столбец на страницу (например, в список тем), мне нужно создать плагин?

Разница заключается в следующем:

  • Если вам нужно изменить API, например, любые данные в маршруте .json, настройки авторизации или обработку данных на бэкенде, вам потребуется плагин.
  • Для многих изменений на стороне фронтенда, не требующих новых данных, достаточно только TC. Это относится к большинству изменений, связанных с отображением, или к любой логике в JavaScript, не требующей повышенной безопасности.

И есть ещё серая зона (которая, я думаю, к этому случаю не относится): если вам нужны данные, которые недоступны (например, пользовательские поля), вы можете либо использовать AJAX для получения этих данных с помощью JavaScript по мере необходимости, либо создать плагин, который добавит эти данные в сериализатор.

Окей, спасибо. В руководстве я не понимаю, как настроить и импортировать TC локально — там есть только пример для удалённого.

Я бы порекомендовал использовать этот замечательный инструмент для удобного создания TC локально:

Если вы не вносите очень небольшое изменение в CSS, я рекомендую использовать удалённую тему или инструмент CLI.

Однако, если вы нажмёте кнопку «Установить тему», откроется диалоговое окно, которое позволит создать тему (или компонент темы, если вы делаете это на странице компонентов).

В списке тем категории необходимо добавить новый столбец с полем «created_at» и изменить формат даты с «tiny» на расширенный (например, ДД/ММ/ГГГГ ЧЧ:ММ).

Если вы хотите добавить что-то новое в шаблон, я бы начал с GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes · GitHub, но не знаю, как добавить там колонку. Думаю, можно воспользоваться каким-то JavaScript-трюком, но это не моя специализация.

Вы же знаете, что эту информацию можно увидеть, наведя курсор мыши, верно?

Также см. Plugin outlet locations theme component, но там нет plugin outlet.

У вас есть следующие точки расширения для плагинов: topic-list-after-columns и topic-list-header-after.

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/list/topic-list-item.hbr#L90

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/topic-list-header.hbr#L27

Хорошее замечание. Казалось странным, что там нет точки расширения. Похоже, компонент темы просто не отображает её.

Компонент темы «Места для плагинов» в данный момент не отображает сырые выходы.

Этот компонент темы показывает, как добавить столбец: GitHub - discourse/discourse-add-category-column · GitHub