通过前几天的学习和探索我知道要向nodebb里添加“回复post”的功能就要编写新的插件,参考nodebb编写插件,以及源码里现有插件的编写方式,目录结构如下:
具体写法可分为以下几步:
- 找到合适的钩子放在plugin.json里,我找到三个要用的钩子,其中
"hook": "filter:post.getPosts"
可以在用户点击某一个topic是获取到整个页面所有topic的信息
{
"id": "nodebb-plugin-post-comments",
"library": "./library.js",
"hooks": [ { "hook": "filter:scripts.get", "method": "addScripts" },
{ "hook": "static:app.load", "method": "init" },
{ "hook": "filter:post.getPosts", "method": "showPosts" }
],
"staticDirs": { "lib": "public/lib" }
}
- 去library.js里实现
hooks
里的method
,addScripts函数主要负责将main.js文件加入进来;init是一个初始化函数,showPosts函数中要用到init传过来的app;showPosts里是一个get请求,当用户触发一个topic页面时,将所有posts数据传至main.js(前端)进行处理(处理这个get请求的前提是在main.js里有一个对应的ajax请求)
var bodyParser = require('body-parser');
var app;
var comments = {
addScripts: function(scripts, callback) {
scripts.push('plugins/nodebb-plugin-post-comments/lib/main.js');
callback(null, scripts);
},
init: function(params, callback) {
app = params.router,
callback();
},
showPosts: function(data,callback) {
app.get('/post/getComments',function(req,res,callback) {
res.json(JSON.stringify(data));
})
callback(null, data);
},
};
module.exports = comments;
- 对后端传过来的数据进行渲染(目前未实现,后续更新......)