Collegamenti header personalizzati

:discourse2: Riepilogo Custom Header Links ti consente di aggiungere facilmente collegamenti testuali personalizzati all’intestazione.
:eyeglasses: Anteprima Anteprima su Discourse Theme Creator
:hammer_and_wrench: Link Repository GitHub - discourse/discourse-custom-header-links · GitHub
:open_book: Nuovo sui Temi di Discourse? Guida per principianti all’utilizzo dei temi di Discourse

Installa questo componente tema


Funzionalità

Desktop

Mobile


(a causa dello spazio molto limitato, non è consigliabile aggiungere più di un link su dispositivi mobili)


Impostazioni

Impostazione Descrizione
custom_header_links L’elenco strutturato di link da visualizzare nell’intestazione. Ogni link è configurato tramite un modulo con campi individuali (vedi sotto).
links_position Controlla se i link appaiono sul lato destro (predefinito) o sinistro dell’intestazione vicino al logo. Quando impostato su left, tutti i link vengono automaticamente nascosti nelle pagine dei topic per fare spazio al titolo del topic — indipendentemente dalle singole impostazioni hide_on_scroll del link.

Aggiunta di Link

I link sono configurati tramite un modulo strutturato nelle impostazioni del componente tema. Clicca su Aggiungi per aggiungere un nuovo link. Ogni link ha i seguenti campi:

Campo Obbligatorio Descrizione
Testo :white_check_mark: L’etichetta visibile per il link. Max 100 caratteri. Determina anche la classe CSS applicata al link (vedi Personalizzazione CSS sotto).
Titolo :x: No Il testo del tooltip mostrato quando si passa il mouse sopra il link. Max 1000 caratteri.
URL :white_check_mark: L’URL a cui punta il link. Può essere un percorso relativo (es. /faq) o un URL completo. Max 2048 caratteri.
Vista :x: No Controlla su quale dispositivo appare il link. Se lasciato non impostato, il link viene mostrato su tutti i dispositivi (stesso di vdm). Vedi i valori sotto.
Target :x: No Controlla come si apre il link. Se lasciato non impostato, per impostazione predefinita si apre in una nuova scheda (stesso di blank). Vedi i valori sotto.
Nascondi durante lo scorrimento :x: No Controlla se il link si nasconde quando il titolo del topic diventa visibile nell’intestazione nelle pagine dei topic. Impostazione predefinita su keep. Si applica solo quando links_position è impostato su right — vedi nota sotto. Vedi i valori sotto.
Locale :x: No Se impostato, il link viene mostrato solo quando la lingua della pagina del sito corrisponde a questo valore. Lasciare vuoto per mostrare il link su tutte le lingue. Vedi i dettagli sotto.

Valori di Vista:

Valore Comportamento
vdm Visibile sia su desktop che su mobile
vdo Visibile solo su desktop
vmo Visibile solo su mobile
(non impostato) Stesso di vdm — visibile su tutti i dispositivi

Valori di Target:

Valore Comportamento
blank Si apre in una nuova scheda
self Si apre nella stessa scheda
(non impostato) Per impostazione predefinita si apre in una nuova scheda (stesso di blank)

Valori di Nascondi durante lo scorrimento:

Valore Comportamento
keep Il link rimane visibile anche quando il titolo del topic è mostrato nell’intestazione (predefinito)
remove Il link si nasconde quando il titolo del topic diventa visibile nelle pagine dei topic

:information_source: hide_on_scroll si applica solo quando links_position è right. Quando links_position è left, tutti i link vengono nascosti insieme nelle pagine dei topic indipendentemente dalla loro impostazione individuale hide_on_scroll.

Ecco un esempio di hide_on_scroll in azione (con links_position impostato su right):

Most Liked e Privacy sono impostati su keep, quindi rimangono visibili quando il titolo si espande. Gli altri link sono impostati su remove, quindi si nascondono quando il titolo diventa visibile. Questo comportamento interessa solo le pagine dei topic.


Filtraggio per Locale

Il campo Locale ti permette di mostrare un link solo quando il sito è impostato su una lingua specifica. Questo è utile per community multilingue che desiderano link di intestazione diversi per lingua.

  • Imposta il campo su un codice locale come en, de, fr, zh_CN, ecc.
  • La corrispondenza è case-insensitive, e sia i separatori - che _ sono trattati allo stesso modo — quindi en-US, en_US e en_us corrispondono tutti ugualmente.
  • Se il campo locale viene lasciato vuoto, il link viene mostrato su tutte le lingue. Questa è l’impostazione consigliata per la maggior parte dei siti monolingua.
  • Viene aggiunta anche una classe CSS headerLink--{locale} all’elemento link, che può essere utilizzata per un targeting CSS aggiuntivo.

:warning: Problema comune: Se i tuoi link non vengono visualizzati, controlla se hai impostato accidentalmente un valore locale che non corrisponde alla lingua configurata del tuo sito. Lasciare vuoto il campo locale è sicuro e mostrerà sempre il link.


Personalizzazione CSS

Ogni link riceve automaticamente una classe CSS derivata dal suo valore Testo: gli spazi vengono sostituiti con trattini, il testo viene convertito in minuscolo, e viene aggiunto -custom-header-links.

Per esempio:

  • Un link con testo Privacy riceve la classe privacy-custom-header-links
  • Un link con testo Visit Shop riceve la classe visit-shop-custom-header-links

Stilizza tutti i link dell’intestazione:

.custom-header-links .headerLink a {
  font-size: var(--font-up-1);
  color: var(--header_primary);
}

Stilizza un link specifico (es. un link con testo “Privacy”):

.custom-header-links .headerLink.privacy-custom-header-links a {
  color: var(--tertiary);
}
.custom-header-links .headerLink.privacy-custom-header-links a:hover {
  color: var(--tertiary-high);
}

Mostra o nascondi un link in base allo stato di accesso:

Discourse aggiunge una classe anon al tag <html> per gli utenti non loggati. Puoi usarlo per mostrare o nascondere condizionalmente i link:

/* Nasconde "Dashboard" agli utenti non loggati */
html.anon .dashboard-custom-header-links {
  display: none;
}

/* Nasconde "Sign Up" agli utenti loggati */
html:not(.anon) .sign-up-custom-header-links {
  display: none;
}

:warning: display: none in CSS è un meccanismo di occultamento puramente visivo. L’HTML del link è ancora presente nel sorgente della pagina. Non usarlo per proteggere URL sensibili o soggetti a controllo degli accessi.

Riordina i link con CSS (usando order di flexbox):

.custom-header-links li {
  &:nth-child(1) { order: 3; }
  &:nth-child(2) { order: 1; }
  &:nth-child(3) { order: 2; }
}

Usa il percorso /my per i link specifici dell’utente, per evitare di codificare un nome utente:

/my/messages     → la posta in arrivo dell'utente corrente
/my/activity     → l'attività dell'utente corrente

:discourse2: Ospitato da noi? I componenti tema sono disponibili per l’uso sui nostri piani Pro, Business e Enterprise.


Novità salienti (Changelog):

  • L’impostazione custom_header_links è stata migrata da un formato a elenco delimitato da virgole a un’interfaccia utente modulo strutturata type: objects. Se in precedenza hai configurato i link utilizzando il vecchio input di testo separato da virgole, la migrazione dovrebbe aver preservato automaticamente i tuoi dati
83 Mi Piace
How can I add custom hamburger menu
Header Submenus
Structuring a multilingual community
Display StatusPage status on as a header link
Control CSS based on user's logged in state
Looking for a freelancer to implement a custom Discourse theme (based on an existing mockup)
Add a global header between Discourse & Website
How to make custom setting type
Is it possible to have users' job titles next to their names on posts?
Link to find all deleted posts by all users in a particular period
Dropdown links in existing Header
Insert Link to External Website
Is anyone here using their Discourse instance as their entire website?
How to fire on every footer load (or page load?)
Custom links above header bar
Custom Header Links (icons)
Pre seeded posts all missing - Missing Terms of Service, FAQ and Privacy pages
Dropdown header links in the existing Header
Add a "curated personal learning" page for users
Redirect search icon to search page
Possible to change main logo URL?
2021: The Year in Review
How to add breadcrumb?
How to add contact us page?
Navigation bar above all post
Adding link to blog on main page
Customizing your site with existing theme components
Show "new topic" when not logged in
How can I add a new button to the topbar?
⬇️ Dropdown Header
How to fix logo size?
Links into the header block
Customize the header with links, icons, or menus
Privacy Policy does't meet Google's requirements
Custom Header Links and New Topic Header Button don't play nice
Customize Your Site Branding
Nextcloud support
How to override the site-header.hbs file from custom theme?
Sidebar link / top button to PM admin
Toolbar under site header per category
Privacy Policy does't meet Google's requirements
Link buttons on the top disappear when scrolling around the site
Disclaimer section on the "about" page
What Themes are being used for these Discourse forums?
Alternative component (plugin?) to categories navbar
Add button in header for logged in users
Use decorateWidget to add text link to header
[PAID] Expert Wanted for Forum Redesign
Add social media handles on home page
Create hyperlink from home logo
Configure a custom sidebar link to open in a new tab
2023: The Year in Review
Modifying Header
Fully Theme
Visiting /admin/upgrade may lead to a server error
Header Submenus
How do I go about making a very customized theme?
How to Integrate a Custom Plugin in discourse UI
Embedding a whole Discourse forum on another site in an <iframe>
Memberstack + Webflow + Discourse OpenID Connect
Custom website header with forum
Custom Header Links (icons)
Brave default Theme
Why does the logo navigate to Discourse home not main site home
Structuring a multilingual community
How to make sidebar sticky?
Forum navbar is repeating
Adding my Nav into the header bar
Best place(s) to link back to a non-forum homepage?
Allow non-members to pm the administrator
Adding a header link for Guests Only
Link on Top header to Go to Home page of main site
How to finely scroll out custom header?
Can I add a icon and link back to my homesite at the top bar
Custom Header links was automatically hide when scrolling topic page contents
Link behavior inconsistent
Upcoming Header Changes - Preparing Themes and Plugins
How to add a "button" which composes a pre-filled topic
Where to place project external URL?
Change destination of logo link
External header links are not opening in a new tab
How to split the forum into two main parts (general/groups) and how to display only subcategories I can create a new post in?
Add secondary url / embed into Wordpress
"An empty string is not a valid JSON string" when updating theme component #2
How can I add a button to the header?
Showing categories statically above most recent posts
How to add a button to the header area?

don’t know if this has been suggested, tried reading back but couldn’t find it.

was thinking that maybe adding the ability to create “sub-links” thus creating the idea of a list that you could edit (text color, background hover etc.) to get results similar to what zoom has

8 Mi Piace

the links that have the arrow to the right like developer means that it has “sub-links”

1 Mi Piace

Is it possible to add some basic dropdown menu to an any item?

I couldn’t create a dropdown menu with “Custom header links”. It seems Zoom did that. I reviewed their dropdown menu via console, but I couldn’t figure out how they interfere with the html of this component for adding dropdown to any item.

Is there a way to add this dropdown to item? @Johani

<div id="dropdown">
  <a title="Zoom Developer Documentation" href="https://marketplace.zoom.us/docs" target="_blank">Developer</a>
  <span class="caret"></span>
  <div class="dropdown-content">
    <a title="Zoom API Docs" href="https://marketplace.zoom.us/docs/api-reference/introduction" target="_blank">API</a>
    <a title="Zoom SDK Docs" href="https://marketplace.zoom.us/docs/sdk/native-sdks/introduction" target="_blank">SDK</a>
    <a title="Zoom Developer Blog" href="https://medium.com/zoom-developer-blog" target="_blank">Blog</a>
    <a title="Zoom Developer Changelog" href="https://marketplace.zoom.us/docs/changelog" target="_blank">Changelog</a>
    <a title="Zoom Developer Survey" href="https://docs.google.com/forms/d/e/1FAIpQLSeJPLhNuxjtkxyyV276R8S_nYz99fpMbbS8VWkC8Hwi7-2Byg/viewform" target="_blank">Survey</a>
  </div>
</div>
5 Mi Piace

Has anyone run into any issues with links not opening when setting links position to “left”?

Links work on Preview but not when I apply it to a theme.
Right alined links work fine though.

1 Mi Piace

Hi! Thanks for creating this.
Is it possible to add an SVG before the text link? If so - how?

1 Mi Piace

Have you found a solution for this? I am look for the same solution.

6 Mi Piace

how can the title convert **formatting code** into actual formatting? also how about Font Awesome icons before the text?

2 Mi Piace

Could be possible to add a flag to show or hide links as specific groups of users?

3 Mi Piace

Is there a way this theme component can allow for dropdown navigation? That means, when I hover over a header link, it has sub-items that appear underneath it. I know that this can be done via html/css as shown here:

2 Mi Piace

Thank you for creating this component!
One question and potentially a feature request: can we show a specific link for a specific group?
For example, if a user is in group customers I’d like to show a link to the customer’s control panel, if a user is in group workers I’d like to add a link to a different panel.
I think this would be a very useful feature.
The group name could be the last (optional) parameter.

2 Mi Piace

Grazie per questo! L’ho appena trovato dopo aver provato vari altri banner e componenti. È esattamente quello di cui ho bisogno!

Una richiesta/suggerimento: possibilità di riordinare i link. Ne ho appena creati alcuni e mi sono reso conto che vorrei aggiungerne uno in cima. Ora dovrò copiarli e incollarli tutti manualmente, il che è in realtà piuttosto macchinoso poiché continuano a sincronizzarsi/aggiornare altre voci mentre li copio verso il basso.

Il trascinamento della selezione o i pulsanti su/giù sarebbero molto utili per gli utenti futuri (o per modifiche future).

4 Mi Piace

[quote=“Nick_Chomey, post:131, topic:90588”]
Drag and drop o pulsanti su/giù sarebbero molto utili per gli utenti futuri (o per modifiche future).
[/quote]Puoi già manipolare l’ordine molto facilmente con alcune righe di CSS poiché utilizziamo la proprietà flex.

Ad esempio:

  • Ordine predefinito
    image

  • Ordine personalizzato
    image

Esempio CSS:

.custom-header-links li {
  &:nth-child(1) {
    order: 3;
    background: red;
  }

  &:nth-child(2) {
    order: 1;
    background: green;
  }

  &:nth-child(3) {
    order: 2;
    background: yellow;
  }
}
5 Mi Piace

@Nick_Chomey Mi sono spesso trovato nella necessità di farlo, non solo per questo componente del tema ma per molti altri componenti del tema che utilizzano l’impostazione type: list. Avevo pianificato di inviare una richiesta di funzionalità prima, ma l’ho completamente dimenticata, ma dato che me l’hai ricordato, ne ho aggiunta una qui:

3 Mi Piace

@dax Grazie! Non avevo idea che fosse possibile!

@keegan sembra fantastico, speriamo che venga aggiunto prima o poi!

2 Mi Piace

Sto cercando la stessa soluzione, hai scoperto come hanno fatto?
Grazie!

1 Mi Piace

Ciao @Johani
Grazie per aver creato un componente così fantastico!

È possibile che un link sia visibile solo se l’utente ha effettuato l’accesso?
Sarà un link esterno.

1 Mi Piace

Ciao @andreas_can benvenuto in Meta :wave:

Questo componente aggiunge una classe CSS a ciascun link in base al suo testo. La classe aggiunta è la stessa del testo che assegni al link, tranne per il fatto che gli spazi vengono sostituiti da un trattino (-) e il testo viene impostato in minuscolo. Quindi, alla fine viene aggiunta la stringa -custom-header-links.

Quindi, se aggiungi un link con il testo

privacy

allora l’elemento del link avrà la classe

privacy-custom-header-links

Se il testo del tuo link è

Visit Shop

allora la classe CSS sarebbe

visit-shop-custom-header-links

Quindi, ora conosci la classe aggiunta a ciascun link. Tornando alla tua domanda.

Discourse aggiunge una classe CSS al tag <HTML> quando l’utente non è connesso. Quella classe è

anon

Quindi, puoi usarla per nascondere determinati link agli utenti che non sono connessi. Diciamo che ho un link con il testo

Customer Support

e non voglio che venga mostrato agli utenti che non sono connessi.

Aggiungerei quindi questo CSS

.anon {
  .customer-support-custom-header-links {
    display: none;
  }
}

nella scheda common > CSS del mio tema principale.

Questo nasconderà quel particolare link agli utenti che non sono connessi.

11 Mi Piace

Grazie per una risposta così rapida e completa!
È esattamente quello che stavo cercando.

Ci proverò :slightly_smiling_face:

3 Mi Piace

Nota che display: none; in CSS nasconde il link solo dal rendering del browser, ma è sempre completamente visibile a chiunque esamini il codice sorgente della pagina, ai crawler e ai motori di ricerca.

3 Mi Piace