How can I add a section in the Admin Menu?



  • Hey guys, looked at the documentation briefly and didn't see any ways to add a section
    to the Administration Menu.

    Something like this:
    lf5llfT[1].png


  • GNU/Linux

    To do this you want to:

    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. :)


  • Plugin & Theme Dev

    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"
    ]


  • This post is deleted!

Log in to reply
 

Looks like your connection to NodeBB was lost, please wait while we try to reconnect.