我想修改正在实验的插件中的一些基础 HTML(最好将所有更改都集中在一个插件中)。这些 HTML 内容如果我不使用插件而是使用主题自定义器仪表板,本应放在仪表板的 header 部分。
在主题中,你只需有一个名为 common 的直接文件夹,其中包含不同的文件,例如 header.html。
我知道插件的通用样式表可以放在 plugin/assets/stylesheets/common 中。那么,这个 header.html 文件在插件中应该放在哪里呢?
我想修改正在实验的插件中的一些基础 HTML(最好将所有更改都集中在一个插件中)。这些 HTML 内容如果我不使用插件而是使用主题自定义器仪表板,本应放在仪表板的 header 部分。
在主题中,你只需有一个名为 common 的直接文件夹,其中包含不同的文件,例如 header.html。
我知道插件的通用样式表可以放在 plugin/assets/stylesheets/common 中。那么,这个 header.html 文件在插件中应该放在哪里呢?
你的“html”里有什么?
脚本通常应放在初始化器中,或由组件中的事件触发。
对插件 API 的调用应放在初始化器中。
模板的更改通常会附加到插件连接器上(如果实在不得已,才在 templates 文件夹中覆盖它们)。
你也可以在初始化器中装饰或重新打开小部件。
你实际上并不需要放置任何“裸 html”,毕竟你正在修改的是一个 Web 应用,而不仅仅是一个网页?
无论如何,同时运行多个插件和 TC 通常不会造成任何特别的问题……
我们在主题和自定义器中经常添加新的 HTML。我想将其添加到我的插件中(而不是主题),以便我拥有单一代码库。
在插件中,如果你是在制作主题,你会将 HTML 放在“common”文件夹中的“header”里,那么应该把 HTML 放在哪里呢?
据我所知,没有直接对应的等价物。
你也不需要它。
直接移植你正在尝试实现的功能即可。
对于 CSS,插件中的等效路径是 [plugin]/assets/stylesheets/common/[file.scss]
按照此格式,我尝试在 [plugin]/assets/views/layouts/common/header.html 添加文件,但未能生效(直接在 views/header.html 添加也不起作用)。
我可以修改模板,但像我们在主题中那样进行简单的 HTML 修改时,如果能在 header.html(或其等效位置)直接进行简单的 HTML 修改就太好了。例如,在插件中(该插件已执行复杂的服务器端操作,因此需要插件)应该如何放置以下内容:
我也觉得在插件和主题中实现类似功能的方式存在差异,这令人困惑。你可以选择权宜之计,使用主题组件来处理这些内容,但听起来你更希望找到最佳方案,而非最快的方案(尽管将这些内容拆分出来以便单独维护也有一些优势)。
我认为你需要在 plugin.rb 中添加一行,以包含你所需的文件。我的做法是从 Discourse 的 GitHub 仓库克隆一个名为 all-the-plugins 的项目,然后在那里使用 grep 查找示例。
好的,谢谢。是的,我一直在想,目前可能确实没有一种像主题那样直接修改插件 HTML 的简便方法——要修改 HTML,你必须进入插件中的模板或连接器(这并不太复杂,但与主题中常见的 header.html 这种更简单的思路不同)。
我会查看一下 plugin.rb,看看这是否比走常规的模板/组件路线更简单。
请参阅 How to override a template.hbs from a plugin - #4 by tshenry
它并不在我之前说的位置,但你只需将其以正确的名称放入 assets 树中。在你理解之前,这很难搞懂;但一旦明白了,就会觉得非常显而易见。
编辑:嘿 @JQ331,我刚刚意识到,我昨天在一个插件中似乎做了你想要的功能,但我做得太糟糕,以至于没意识到这正是你在寻找的。请参阅 https://github.com/literatecomputing/discourse-max-topics-per-month。它非常简单,因此不会有什么障碍妨碍你找到示例。