嘿,
抱歉,如果答案已经在那里等着我了,但我花了几个小时也没能找到或自己弄清楚。
所以我想我理解了 widgets 和 components 的含义,但我找到的每个示例结构都相似。
一个 widget 或 component 被挂载到一个已存在的组件、连接器或出口上。
我想做的是:
我正在使用 组件 Dark/Light Toggler,但用户很难直观地找到它。
其他主题切换组件(包括 我自己的)总是附加到现有的 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">
Player online on 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">Server Time</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 Get help">
Need help?
</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",
// dark-light stuff
});
</script>
然后将其注入到我的 HTML 中,例如:
<script type="text/x-handlebars" inject-to-my-class-selector(.sidebar-counterTitleWrapper)>
{{mount-widget widget="my-dark-light-widget"}}
</script>
我想这很简单,只是我漏掉了什么……
任何帮助都将不胜感激!


