Liens de navigation supérieure personnalisés

:discourse2: Summary Custom Top Navigation Links allows you to add links to Discourse top navigation.
:eyeglasses: Preview Preview on Discourse Theme Creator
:hammer_and_wrench: Repository Link https://github.com/discourse/Discourse-nav-links-component
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component

Features

Desktop

Mobile

Settings:

Name Descriptions
Nav links Semicolon delimited in this order: display name;description;URL
Hide dropdowns Hide category and tag dropdowns
Hide default links Hide the default links on both mobile and desktop.
  • Nav links — these need 3 parts:

    • Name
    • Description
    • Path or URL

    Name is the text for the link that shows up on the menu. Description shows up when you hover the name like this:

    Path/URL is where you want the link to go.

    You can add links as semicolon delimited values in theme settings following this order

    name;description;URL

    URL can also be relative like

    /c/staff, /t/232, /groups/plugin_authors, /about, /tags/official

  • Hide dropdowns

    Hides the default category and tag dropdowns

    Screenshot 2023-05-11 at 3.10.55 PM

  • Hide default links

    Hides the default links in this section

    Screenshot 2023-05-11 at 3.11.29 PM


:discourse2: Hosted by us? Theme components are available to use on our Standard, Business, and Enterprise plans.

64 « J'aime »
Categories in "top menu"?
Add /groups to top nav
How to add breadcrumb?
What about adding tags in the top menu?
How to make some categories like Bugs and Features here visible in top menu?
What is the proper way to extend categories route and filter topics?
Link to find all deleted posts by all users in a particular period
Adding link to blog on main page
Create a Tag filter like 'Make & Model' on community.cartalk.com
How can I add a menu item
A playful approach to category moderation
Simple Unread List
Displaying all non-solved topics
Volunteer Activities - a simple setup for non-hierarchical collaboration
Discourse Docs
How to make the recommanded topics collection
Reply reminder - Remind users to reply to new users topics with zero replies
How to add a topic in top nav in a specific category?
Following tags and top feed for followed tags
Show latest list sorted by creation date
Following tags and top feed for followed tags
Change Topic List home router - from Latest to Following
Missing category and tags breadcrumbs
A "Votes" option for the top menu in main page
Adding a chat link in the top navigation links?
Add a specific class for wikis (when first post) at the topic list level
How to add an icon in a navigation link?
Customizing your site with existing theme components
Show Latest topics, not by comment on home page
Custom Button For Discourse
Add Follow feed to top navigation
Improvements i want for my discourse for making it less overwhelming/noisy for newcomers
Sidebar link / top button to PM admin
Adding 'Upcoming Events' to top navigation
Strange repetition in menu items
Disclaimer section on the "about" page
FKB Pro - Social theme
2023: The Year in Review
Is it possible to have the Board view as the only view?
How to add Button in Section
Brave default Theme
Air Theme
Provide a way to access tracked/watched topics (outside search)
Discourse Solved
The first Custom Top Nav link inappropriately appears selected
Add another tab to menu bar
Can we add "Groups" to top menu?
How to Disable ALL User-to-User DMs/Chat without breaking Other Features?
Disable personal message between members
Add category in Top Menu?
How can I remove the Category and tag filter?
How can I add a link to the top menu area?
Why we can't add groups to top menu
How to add links on home page menu to other site?
Traditional multi level hierarchy vs flat discourse hierarchy
Ordering topics - how do the links work?
Force Mobile Homepage
Knowledge Base
Automatically fill category with topics? "Best of" category?
How to add new button in different color
Adding "Category" as a topic list option within categories
Docs: Add link to top menu
New Theme: Tag-Pages Navigation
Custom nav bar options
Topic list sidebar navigation
Where can I see posts created by me?
Discourse Docs
Showing categories statically above most recent posts
Custom nav items no longer showing after recent update
Add /groups to top nav
Add topics-sorted-by-create-time to `top menu`
Categories Customization

Hi

I use this theme component. One of the items in the menú points to a category and I would like to inform the unread topics for this category.

image

Instead of Agora I would like Agora (3) for an user who has three unread topics in this category (same behaviour as standard link “Unread”).

Any idea?

Thanks in advance.

Quelqu’un sait comment je pourrais ajouter un lien de tag qui est en fait relatif à la route actuelle ? J’aimerais utiliser un tag About et l’offrir comme lien principal vers un sujet About relatif à la catégorie dans laquelle se trouve un utilisateur.

Par exemple, l’utilisateur est dans la catégorie /c/feedback/7. Choisir About dirigera vers /tags/c/feedback/7/about.

2 « J'aime »

Je voudrais utiliser le composant sur une instance mais plusieurs comportements ne fonctionnent pas :

  • Lorsque vous utilisez “Masquer les liens par défaut”, cela masque les deux premiers éléments enfants (Derniers et Catégories). Mais lorsque l’on navigue vers une catégorie, le lien par défaut “Catégories” n’est déjà plus affiché dans le menu. Ensuite, ce paramètre masque un élément de navigation supplémentaire, celui qui serait autrement le troisième de la liste.

Screenshot from 2022-05-10 18-29-05

  • J’ai ajouté un élément de menu pour un lien de catégorie direct (/c/game-talk). Lorsque je navigue vers celui-ci, il n’obtient pas de classe active et n’est pas mis en surbrillance. Au lieu de cela, le lien “Derniers” est mis en surbrillance et possède une classe active. Ce n’est cependant pas le lien “Derniers” par défaut, mais un que j’ai ajouté via le composant (ne pointant que vers /latest).

Screenshot from 2022-05-10 18-25-39

  • En fait, le lien “Derniers” n’obtient pas non plus de classe active lorsqu’il n’est pas nommé “Derniers”. La classe active sur la route actuelle ne semble donc pas fonctionner du tout à cause du composant. Voici la vue sur /latest mais avec un autre nom pour le lien Derniers :

Screenshot from 2022-05-10 18-39-15

1 « J'aime »

Question rapide -
J’essaie de créer ceci et de faire en sorte que l’URL soit ?order=created afin que les utilisateurs puissent parcourir les sujets récents.

Cela fonctionne parfaitement sur ordinateur, mais échoue sur mobile - la barre de navigation se recharge simplement et n’affiche pas le menu déroulant.

J’ai la même question… Est-ce une solution ? :face_with_monocle:

Je pense savoir pourquoi c’est arrivé…
le composant contient la ligne ci-dessous :

if (window.location.pathname.match(sec2)) {
          $(navHeader).html(filter + markd);
        }

À cause de l’expression régulière… ? est lui-même utilisé comme marque spéciale d’expression régulière, et le paramètre est censé être comparé à window.location.search.
J’ai forké le composant, l’ai modifié comme suit et cela fonctionne.

if (sec[2].indexOf("?") === -1) {
        if (window.location.pathname.match(sec[2])) {
          $(navHeader).html(filter + markd);
        }
      } else {
        // reg ?->/?
        sec[2] = sec[2].replace(/\?/g, "/?");
        const pathWithSearch = window.location.pathname + window.location.search;
        if (pathWithSearch.match(sec[2])) {
          $(navHeader).html(filter + markd);
        }
      }
1 « J'aime »

Oh wow, bien joué :clap:

Où avez-vous mis ce morceau de code ?

Discourse-nav-links-component/mobile/head_tag.html , remplacez le code correspondant. :face_with_peeking_eye:

1 « J'aime »

Pourquoi ne pas en faire une PR pour que tout le monde en profite ?

4 « J'aime »

Puis-je faire ça ? Je pense toujours que mon niveau de code est trop faible… et je me sens un peu embarrassé de faire ça. Merci pour le conseil !!! Je vais le réviser et faire une PR !

1 « J'aime »

Je pense la même chose de mes tentatives de contribution !!

Cependant, l’@équipe (et leurs outils automatisés) semblent assez bons pour nettoyer le code.

Une fois que vous l’avez transformé en PR, vous pouvez poster le lien du PR ici dans Meta et il affiche une mise à jour en direct impressionnante intégrée du statut du PR.

5 « J'aime »

Avez-vous pu résoudre ce problème ? J’ai un problème similaire.

Je ne peux pas dire avoir trouvé une solution idéale, mais j’ai trouvé quelle était la cause du problème pour moi.

Le problème se trouve ici :
https://github.com/discourse/Discourse-nav-links-component/blob/main/desktop/head_tag.html

Spécifiquement, cette partie :

    api.modifyClass("component:navigation-item", {
      pluginId: "discourse-nav-links-component",
      active: Ember.computed("contentFilterMode", "filterMode", function() {
        let contentFilterMode = this.get("content").get("filterMode");

        if (window.location.pathname === location) {
          return contentFilterMode === filter;
        } else {
          return this._super(contentFilterMode, this.get("filterMode"));
        }
      })
    });

Il semble que cela définisse “active” sur chaque élément de navigation. Franchement, la logique de la façon dont il décide et de ce que sont toutes ces variables m’est assez opaque. Mais le problème se situe ici :

        if (window.location.pathname === location) {
          return contentFilterMode === filter;
        } else {
          return this._super(contentFilterMode, this.get("filterMode"));
        }

Pour moi, cela vérifie si l’URL de la page est identique à la location de l’URL de la barre de navigation, et si c’est le cas, il renvoie le résultat de contentFilterMode === filter, les deux variables étant un peu floues pour moi. Si la condition échoue, il semble qu’il exécute simplement la logique normale pour déterminer si quelque chose doit être marqué comme actif (c’est pourquoi mes liens non personnalisés semblent fonctionner correctement). Le problème est que, bien que ce code s’exécute correctement une fois par élément de navigation, la variable location est toujours égale à “categories”, de sorte que l’instruction if est toujours fausse pour les liens personnalisés. De plus, même si je corrige la variable “location” en la remplaçant par this.get("content").href, la valeur de retour est également toujours fausse car la variable filter est également toujours définie sur “categories”.

Normalement, je ferais une PR pour corriger cela, mais le véritable problème de fond m’échappe toujours. J’ai trouvé une solution de contournement qui fonctionne pour moi, mais qui modifie légèrement la fonctionnalité documentée de ce composant, je préférerais donc ne pas la PR. Je pense qu’il y aura des cas limites où cela ne fonctionnera pas non plus, par exemple si votre page d’accueil est définie sur /latest.

    api.modifyClass("component:navigation-item", {
      pluginId: "discourse-nav-links-component",
      active: Ember.computed("contentFilterMode", "filterMode", function() {
        return window.location.pathname.includes(this.get("content").href);
      })
    });

Essentiellement, cela vérifie si l’URL actuelle inclut l’URL de la barre de navigation comme sous-chaîne. Si oui, il la met en surbrillance.

4 « J'aime »

4 messages ont été déplacées vers un nouveau sujet : Filtre de balise relative personnalisé dans la barre de navigation

Bonjour. J’itère sur ce post. Y a-t-il un moyen d’indiquer les sujets non lus s’il vous plaît ? Merci.

Bonjour,
Comment configurer l’ouverture d’une URL dans un nouvel onglet ?
Merci !

Ceci est potentiellement un composant vraiment utile, mais il semble que quelques bugs basiques (mais au-delà de ma capacité à corriger) l’empêchent d’être plus largement utilisé. Est-ce que certains d’entre eux seront corrigés ?

Pouvez-vous être plus précis sur les bogues qui vous empêchent d’utiliser le composant ?

Oui, désolé, le principal que j’ai rencontré est le suivant :

Je suppose qu’il a juste besoin d’un CSS mieux ciblé, mais je pourrais me tromper !

1 « J'aime »