Add button to top navigation bar

I’m developing a plugin which needs to be able to append an extra button to the top navigation bar:

list-controls > .container > div > .ul.nav

I also need to remove the new-topic button at the far right.

What is the proper way to do this? Plugin.rb? Javascript?

You could hide the New Topic button via CSS and to add navigation you can do that in the Customize JavaScript sections. See the below post as an example (there are others in that topic too)

2 Likes

CSS will not work, so I resorted to the following solution which I happed to find elsewhere on the forum:


Discourse.ExternalNavItem = Discourse.NavItem.extend({
    href : function() {
        return this.get('href');
    }.property('href')
});

// Add navigation button 'Mijn berichten'

Discourse.NavItem.reopenClass({
    buildList : function(category, args) {
        console.log(`NavItem#buildList(), category="${category?category.get('name'):'null'}", args="${JSON.stringify(args)}"`);
        var list = this._super(category, args);
        if (!category && args.filterMode !== 'posted') {
            console.log('NavItem#buildList() => add posted button ');
            list.push(Discourse.ExternalNavItem.create({href: '/posted', name: 'posted'}));
        }
        return list;
    }
});

It should for hiding the New Topic button, but for adding links, you are correct, it won’t which is why I linked to that topic (to show you how to add buttons)