NodeBB SEO is in fine fettle.
cloudflare is bad for trafficReturns this thread as the #1 result in duckduckgo 😳
Does this answer the question?
Hey guys, looked at the documentation briefly and didn't see any ways to add a section
to the Administration Menu.
Something like this:
To do this you want to:
filter:admin.header.build
in a plugin.First, add
<!-- IF custom_menu.length -->
<div class="sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header"><i class="fa fa-fw fa-th"></i>Your List Category</li>
<!-- BEGIN custom_menu -->
<li>
<a href="{relative_path}/admin{custom_menu.route}">
<!-- IF custom_menu.icon -->
<i class="fa {custom_menu.icon}"></i>
<!-- ENDIF custom_menu.icon -->
{custom_menu.name}
</a>
</li>
<!-- END custom_menu -->
</ul>
</div>
<!-- ENDIF custom_menu.length -->
to /src/views/admin/partials/menu.tpl.
Then, add
custom_menu: results.custom_header.custom_menu,
to
var data = {
relative_path: nconf.get('relative_path'),
configJSON: JSON.stringify(results.config),
user: userData,
userJSON: JSON.stringify(userData).replace(/'/g, "\\'"),
plugins: results.custom_header.plugins,
authentication: results.custom_header.authentication,
scripts: results.scripts,
'cache-buster': meta.config['cache-buster'] ? 'v=' + meta.config['cache-buster'] : '',
env: process.env.NODE_ENV ? true : false,
};
(around line 100) in /src/middleware/admin.js.
As for the plugin: I've created a quick and dirty example you can have a look at over at GitHub.
In a nutshell, the same aproach as you would add a normal "Installed Plugins" entry, with the exception that you define your own array that is passed to the template, hence the need to change two core files.
I know this is an old topic, but I just ran into this today and wanted to add an admin nav section in the minimally invasive way possible. This technique worked for me and I'm wondering if anybody has any thoughts about this being a good or bad approach to quickly adding a custom admin navigation menu from a plugin. Any critiques appreciated!
plugin/static/js/admin/custommenu.js:
var adminInitialized = false;
$(window).on('action:ajaxify.start', function(data) {
if (!adminInitialized) {
$('ul#main-menu').append('\
<li class="dropdown menu-item">\
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Custom Menu</a>\
<ul class="dropdown-menu" role="menu">\
<li><a href="/admin/my-custom-route">Custom Route</a></li>\
</ul>\
</li>');
adminInitialized = true;
}
});
plugin.json:
"acpScripts": [
"static/js/admin/custommenu.js"
]