在了解了一些特殊之处后,构建 Discourse 插件会非常简单。本文的目标是创建一个骨架插件并向您介绍基础知识。
您的开发环境
请确保您的计算机上运行着 Discourse 的开发环境。我建议您使用相应的设置指南,并在完成后再回来。
plugin.rb
使用 GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins 在您的 plugins 目录中创建一个完整的 Discourse 插件骨架
该骨架现已捆绑在 Discourse 核心中,
rake plugin:create[plugin-name]将使用该骨架创建一个插件
当 Discourse 启动时,它会在 plugins 目录中查找包含 plugin.rb 文件的子目录。plugin.rb 文件有两个用途:它是插件的清单,包含有关插件的必要信息,包括:名称、联系信息和描述。第二个用途是初始化运行插件所需的任何 Ruby 代码。
在我们的例子中,我们不会添加任何 Ruby 代码,但仍然需要 plugin.rb。让我们创建目录 basic-plugin,并在其中创建文件 plugin.rb,内容如下:
basic-plugin/plugin.rb
# name: basic-plugin
# about: A super simple plugin to demonstrate how plugins work
# version: 0.0.1
# authors: Awesome Plugin Developer
# url: https://github.com/yourusername/basic-plugin
创建此文件后,您应该重启本地服务器,插件就会被加载。
一个重要的陷阱!
如果您习惯于常规的 Rails 开发,您可能会注意到插件在重新加载方面并不那么方便。通常,当您对插件进行更改时,您应该按住 \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ec\u003c/kbd\u003e 停止服务器运行,然后使用 bin/ember-cli -u 再次运行它。
我的更改没有生效!
有时缓存不会完全清除,尤其是在您创建新文件或删除旧文件时。要解决此问题,请删除您的 tmp 文件夹并重新启动 Rails。在 Mac 上,您可以用一个命令完成:rm -rf tmp; bin/ember-cli -u。
检查插件是否已加载
重启本地服务器后,访问网址 /admin/plugins(请确保您以管理员帐户登录后,因为只有管理员才能看到插件注册表)。
如果一切正常,您应该会在列表中看到您的插件:
\u003cimg src="//assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com/original/3X/4/7/47a4b274553bd1fb0bba2d2df699ac136ad6a5cc.png" width="690" height="104"\u003e
恭喜,您刚刚创建了您的第一个插件!
让我们添加一些 Javascript
目前您的插件没有任何作用。让我们添加一个 Javascript 文件,它将在 Discourse 加载时弹出一个警告框。这对任何用户来说都非常烦人,不建议作为实际插件,但这将展示如何将 Javascript 插入到我们正在运行的应用程序中。
创建以下文件:
plugins/basic-plugin/assets/javascripts/discourse/initializers/alert.js
export default {
name: "alert",
initialize() {
alert("alert boxes are annoying!");
},
};
现在,如果您重启本地服务器,屏幕上应该会出现“alert boxes are annoying!”。(如果未出现,请参阅上面的“我的更改没有生效”标题)。
让我们逐步分析它是如何工作的:
-
放置在
assets/javascripts/discourse/initializers中的 Javascript 文件在 Discourse 应用程序加载时会自动执行。 -
此特定文件
export一个对象,该对象具有name和initialize函数。 -
name必须是唯一的,所以我只是称它为alert。 -
initialize()函数在应用程序加载时被调用。在我们的例子中,它所做的只是执行我们的alert()代码。
您现在是一名官方的 Discourse 插件开发者了!
系列中的更多内容
第 1 部分:本主题
第 2 部分:插件插口
第 3 部分:站点设置
第 4 部分:git 设置
第 5 部分:管理界面
第 6 部分:验收测试
第 7 部分:发布您的插件
\u003csmall\u003e本文档已版本控制 - 在 github 上 建议更改。\u003c/small\u003e


