Comment ajouter un sujet dans la navigation principale dans une catégorie spécifique ?

I want to add a topic to a top menu but not on all categories, just a specific one.
What code should I write?
Thanks

Found those topics but none of them was for a specific category…

https://meta.discourse.org/t/how-to-add-external-link-on-top-menu/9508/6

https://meta.discourse.org/t/best-way-to-customize-top-menu/35336

https://meta.discourse.org/t/after-add-a-link-to-top-menu-how-can-custom-the-link-showed-on-mobile/20679

Tested this solution a bit more (modified from this post) try this (replace “Travel” with your category name):


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

  I18n.translations.en.js.filters.bugs = { title: "Bugs", help: "Open Bugs" };
  I18n.translations.en.js.filters.google = { title: "Google", help: "Navigate to Google" };

  Discourse.NavItem.reopenClass({
    buildList : function(category, args) {
      var list = this._super(category, args);
      if(category && category.name == "Travel") {
        list.push(Discourse.ExternalNavItem.create({href: '/category/bug', name: 'bugs'}));
        list.push(Discourse.ExternalNavItem.create({href: 'https://google.com', name: 'google'}));
      }
      return list;
    }
  });
</script>

Maybe a bug with translation [fr.filters.Liste.title]

And is it possible to move it here?

I18n.translations.en.js.filters.bugs = { title: "Bugs", help: "Open Bugs" };
I18n.translations.en.js.filters.google = { title: "Google", help: "Navigate to Google" };

Those are for english based forum…

Your forum is french so use I18n.translations.fr instead

Still the same thing with translations.fr

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

  I18n.translations.fr.js.filters.liste = { title: "Liste", help: "Liste des formations" };

  Discourse.NavItem.reopenClass({
    buildList : function(category, args) {
      var list = this._super(category, args);
      if(category && category.name == "Formations") {
        list.push(Discourse.ExternalNavItem.create({href: '/t/liste-2-0-des-formations-sur-lautosuffisance-et-la-consommation-ecoresponsable-en-2018/306', name: 'Liste'}));
      }
      return list;
    }
  });
</script>

Try name: 'liste'instead

It’s working, perfect! Doesn’t matter if it’s here. Thanks so much!

Where has that lovely calendar come from??

Cela semble ne plus fonctionner depuis la dépréciation de Discourse.NavItem, et quelqu’un a mentionné dans ce post que liens de navigation personnalisés en haut peut faire l’affaire :

Cependant, ce composant ne génère pas de lien dynamique selon l’endroit où vous souhaitez vérifier l’URL du lien en fonction de l’emplacement actuel.
Pour mon cas d’utilisation, je veux définir des liens différents pour la page principale et les sous-catégories, par exemple pour afficher un élément de navigation de filtre d’étiquettes « en cours / terminé » en fonction des catégories actuelles. J’utilisais le code ci-dessous, mais il ne fonctionne plus maintenant :

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

  I18n.translations.en.js.filters.unfinished = { title: "tbc", help: "placeholder" };
  I18n.translations.en.js.filters.finished = { title: "finished", help: "placeholder" };

  Discourse.NavItem.reopenClass({
    buildList : function(category, args) {
      var list = this._super(category, args);
      var url = category ? category.url : "";
      // Le menu principal et 2 catégories spécifiques auront ces 2 éléments de navigation avec des URL différentes
      if(!category || (category && url && (url.includes("mix") || url.includes("other")))) {
        var tbc_url = category ? "/tags" + url + "/tbc" : "/tags/tbc";
        var finish_url = category ? "/tags" + url + "/finished" : "/tags/finished";
        
        list.push(Discourse.ExternalNavItem.create({href: tbc_url, name: 'tbc'}));
        list.push(Discourse.ExternalNavItem.create({href: finish_url, name: 'finish'}));
      }
      return list;
    }
  });
</script>

Pouvez-vous m’aider à mettre à jour ce code en fonction du composant navigation-item actuel ? Ou, plus généralement, comment puis-je trouver l’utilisation actuelle du remplacement de Discourse.NavItem ?

Merci !

Ça fonctionne toujours ? Ça n’a pas marché quand je l’ai essayé. Devrions-nous ajouter une version plugin ?