Привет,
извините, если ответ уже где-то есть, но я потратил часы и не смог найти его или разобраться самостоятельно.
Я, кажется, понял смысл виджетов и компонентов, но все найденные мной примеры были построены схожим образом.
Виджет или компонент подключается к уже существующему элементу, разъёму или выходу.
Что я пытаюсь сделать:
Я использую компонент переключателя тёмной/светлой темы, но пользователям неудобно его искать.
Другие компоненты переключения тем (включая мой собственный) всегда прикрепляются к существующим элементам Discourse (заголовок, ссылки, навигация и т. д.).
Но я хочу разместить его в своём собственном HTML. В своём боковом меню:
Ваше боковое меню на экране выглядит так:
<div class="row">
<div class="sidebar-counterTitleWrapper">
<div class="sidebar-counterRefreshIcon" type="success" size="medium" circle>
<svg class="far fa-sync fa d-icon d-icon-sync svg-icon svg-node">
<use xlink:href="#sync"></use>
</svg>
</div>
<h3 class="sidebar-counterTitle">
Игроков онлайн на HWS
</h3>
</div>
<div class="sidebar-counterServers">
<span class="sidebar-counterPlayer">HWS EU:</span>
<strong class="sidebar-counterPlayer--eu">
</strong>
</div>
<div class="sidebar-counterServers">
<span class="sidebar-counterPlayer">HWS NA:</span>
<strong class="sidebar-counterPlayer--na">
</strong>
</div>
<div class="sidebar-counterServers">
<span class="sidebar-counterPlayer">HWS RE:</span>
<strong class="sidebar-counterPlayer--re">
</strong>
</div>
<br>
<h4 class="sidebar-server-title">Время на сервере</h4>
<div class="sidebar-server-time"></div>
</div>
<hr class="content-textLine">
<div class="need-help-wrapper">
<a href="https://help.hws.global" title="Получить помощь HWS">
Нужна помощь?
</a>
<hr class="content-textLine">
Как это сделать?
В идеале это должно быть что-то вроде:
<script type="text/discourse-plugin" version="0.8">
const h = require("virtual-dom").h;
api.createWidget("my-dark-light-widget", {
tagName: "div.my-widget",
// настройки тёмной/светлой темы
});
</script>
а затем внедрить это в свой HTML так:
<script type="text/x-handlebars" inject-to-my-class-selector(.sidebar-counterTitleWrapper)">
{{mount-widget widget="my-dark-light-widget"}}
</script>
Думаю, это что-то простое, что я упустил…
Буду признателен за любую помощь!


