Где должна располагаться общая папка (для html) в плагине?

Я хочу изменить базовый HTML в плагине, который я тестирую (было бы удобно внести все изменения в один плагин). Это был бы HTML, который я бы разместил в разделе header настраиваемых параметров темы в панели администратора, если бы использовал эту панель вместо плагина.

В теме у вас была бы просто обычная папка с названием common, содержащая различные файлы, например header.html.

Я знаю, что общие стили для плагина можно разместить в plugin/assets/stylesheets/common. Где мне разместить файл header.html в плагине?

Что находится в вашем «html»?

Скрипты обычно размещаются в инициализаторе или запускаются событием в компоненте.

Вызовы API плагина должны выполняться в инициализаторе.

Изменения шаблонов, скорее всего, следует привязать к коннектору плагина (или, в крайнем случае, переопределить их в папке шаблонов).

Также вы можете декорировать или расширять виджеты в инициализаторе.

Вам не следует размещать «голый HTML» нигде, ведь по сути вы модифицируете веб-приложение, а не веб-страницу?

В любом случае, запуск нескольких плагинов и TC одновременно не нанесёт никакого вреда…

Мы постоянно добавляем новый HTML в темы и в пользовательизатор. Я хочу добавить это в свой плагин (вместо темы), чтобы у меня была единая кодовая база.

Где в плагине следует размещать HTML, который при создании темы вы бы поместили в «header» в общей папке?

Насколько я знаю, прямого аналога нет.

Вам он и не нужен.

Перенесите то, что вы пытаетесь сделать.

Для CSS эквивалентом в плагине является [plugin]/assets/stylesheets/common/[file.scss]

Следуя этому формату, я попытался добавить файл по пути [plugin]/assets/views/layouts/common/header.html, но это не сработало (также не сработал вариант views/header.html).

Я могу изменять шаблоны, но для простых изменений HTML, подобных тем, что мы делаем в темах, было бы удобно вносить простые правки в header.html (или его аналог). Например, где в плагине (который уже выполняет сложную серверную логику, отсюда и необходимость в плагине) следует разместить следующее:

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

Думаю, вам нужно добавить строку в файл plugin.rb, которая подключит нужный файл. Я обычно клонирую репозиторий all-the-plugins из GitHub-репозитория Discourse и ищу там пример с помощью grep.

Круто. Спасибо. Да, я подумал, что, возможно, дело в том, что сейчас нет простого способа вносить изменения в HTML внутри плагина так, как это делается в теме — для правки HTML нужно заходить в шаблоны или коннекторы плагина (это не слишком сложно, но отличается от более простого подхода в темах, где обычно правят common/header.html).

Я изучу файл plugin.rb и посмотрю, будет ли это сейчас проще, чем идти стандартным путём через шаблоны или компоненты.

Смотрите How to override a template.hbs from a plugin - #4 by tshenry. Думаю, это именно то волшебство, которое вы ищете.

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

Редактирование: Привет, @JQ331. Я только что понял, что, кажется, сделал то, что вы хотите, в плагине вчера, но я так плохо это сделал, что не осознал, что это именно то, что вы ищете. Смотрите GitHub - literatecomputing/discourse-max-topics-per-month · GitHub. Это очень просто, поэтому ничто не мешает найти пример.