Create custom route in plugin
-
You define routes in your load hook. So your library.js might look like this:
var Plugin = module.exports = {}; Plugin.load = function (params, callback) { var router = params.router; var middleware = params.middleware; // Define the function that renders the custom route. function render(req, res, next) { // Get whatever data you want to send to the template here. var data = {whatever: 33}; // This is the path to your template without the .tpl, relative to the templates directory in plugin.json var template = 'templatename' // Send the page to the user. res.render(template, data); } // This actually creates the routes, you need two routes for every page. // The first parameter is the actual path to your page. router.get('/yourpage', middleware.buildHeader, render); router.get('/api/yourpage', render); callback(); };
And your plugin.json would look something like this:
{ "library": "library.js", "hooks": [ { "hook": "static:app.load", "method": "load" } ], "templates": "./public/templates", "staticDirs": { "public": "public" } }
and you would have a template here:
/nodebb-plugin-yourplugin/public/templates/templatename.tpl<h2>My Awesome Custom Page</h2> The Magic Number is: {whatever}
I'm pretty sure I posted about this before, with more details even. Have to start using those canned responses.
Copyright © 2024 NodeBB | Contributors