How to add a topic in top nav in a specific category?

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 forums…

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!

Откуда взялся этот прекрасный календарь??

Похоже, это больше не работает после устаревания Discourse.NavItem, и кто-то упомянул в этом посте, что кастомные ссылки верхней навигации могут решить проблему:

Однако этот компонент не создает динамические ссылки, где URL проверяется в зависимости от текущего местоположения.
В моем случае я хочу устанавливать разные ссылки для главной страницы и подкатегорий, например, чтобы отображать элемент навигации с фильтром тегов «не завершено/завершено» в зависимости от текущей категории. Раньше я мог использовать код ниже, но теперь он не работает:

<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 : "";
      // Главное меню и две конкретные категории будут иметь эти два элемента навигации с разными URL
      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>

Может ли кто-нибудь помочь обновить этот код с учетом текущего компонента navigation-item? Или более общий вопрос: как найти текущее использование замены Discourse.NavItem?

Спасибо!

Оно всё ещё работает? У меня не получилось, когда я пробовал. Может, стоит добавить версию для плагина?