Enlaces de encabezado personalizados

:discourse2: Summary Custom Header Links allows you to easily add custom text-based links to the header.
:eyeglasses: Preview Preview on Discourse Theme Creator
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-custom-header-links
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component

Features

Desktop

Mobile

(due to very limited space I don’t recommend adding more than one link on mobiles)


Settings

Name Description
custom header links Custom links to be displayed in the header
links position Note that when links are displayed on the left, they’re automatically hidden while scrolling within topics to make room for the title

Adding links is straightforward. Every link needs 6 items. You enter comma delimited values in this order:

link text, link title, URL, view, target, hide on scroll

Link text: the text for the link.
Link title: the text that shows when the link is hovered.
URL: The path for the link (can be relative).
View: vdm = desktop and mobile, vdo = desktop only, vmo = mobile only.
Target: blank = opens in a new tab, self = opens in the same tab.
Hide on scroll: remove = hides the link when the title is expanded on topic pages keep = keeps the link visible even when the title is visible on topic pages.

If you’re not sure what hide on scroll does, here’s an example:

Most Liked and Privacy are set to keep and so they remain visible. The other links are set to remove, and so are hidden when the title expands in the header. This only affects topic pages.

Links position: This setting allows you to change the default layout so links will appear on the left near the logo instead of on the right. Note that when positioned to the left, links will automatically be hidden when scrolling within topics to make room for the topic title.


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

Last edited by @JammyDodger 2024-06-11T20:31:00Z

Check documentPerform check on document:
82 Me gusta

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 Me gusta

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

1 me gusta

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 Me gusta

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 me gusta

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

1 me gusta

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

6 Me gusta

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

2 Me gusta

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

3 Me gusta

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 Me gusta

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 Me gusta

¡Gracias por esto! Lo acabo de encontrar después de probar varios otros banners y componentes. ¡Es exactamente lo que necesito!

Una solicitud/sugerencia: capacidad para reordenar los enlaces. Acabo de crear un montón y me di cuenta de que me gustaría añadir uno en la parte superior. Ahora tendré que copiarlos y pegarlos manualmente, lo cual es bastante engorroso ya que siguen sincronizándose/actualizándose otras entradas a medida que los copio.

La funcionalidad de arrastrar y soltar o los botones de subir/bajar serían muy útiles para futuros usuarios (o futuras ediciones).

4 Me gusta

[quote=“Nick_Chomey, post:131, topic:90588”]
Arrastrar y soltar o los botones arriba/abajo serían muy útiles para futuros usuarios (o futuras ediciones).
[/quote]Ya puedes manipular el orden muy fácilmente con algunas líneas de CSS ya que usamos la propiedad flex.

Por ejemplo:

  • Orden predeterminado
    image

  • Orden personalizado
    image

Ejemplo de 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 Me gusta

@Nick_Chomey A menudo me he encontrado necesitando hacer esto, no solo para este componente temático sino para muchos otros componentes temáticos que usan la configuración type: list. Estaba planeando enviar una solicitud de función antes, pero la olvidé por completo, pero ya que me la has recordado, he agregado una aquí:

3 Me gusta

@dax ¡Gracias! ¡No tenía idea de que esto fuera posible!

@keegan ¡se ve genial, espero que se agregue en algún momento!

2 Me gusta

Estoy buscando la misma solución, ¿descubriste cómo lo hicieron todavía?
¡Gracias!

1 me gusta

Hola @Johani
¡Gracias por crear un componente tan increíble!

¿Es posible que un enlace solo sea visible si el usuario ha iniciado sesión?
Será un enlace externo.

1 me gusta

Hola @andreas_can, bienvenido a Meta :wave:

Este componente añade una clase CSS a cada enlace basándose en su texto. La clase añadida es la misma que el texto que le das al enlace, excepto que los espacios se reemplazan por un guion (-) y el texto se pone en minúsculas. Luego, la cadena -custom-header-links se añade al final.

Así que, si añades un enlace con el texto

privacy

entonces el elemento del enlace tendrá la clase

privacy-custom-header-links

Si el texto de tu enlace es

Visit Shop

entonces la clase CSS sería

visit-shop-custom-header-links

Así que, ahora ya conoces la clase que se añade a cada enlace. Volviendo a tu pregunta.

Discourse añade una clase CSS a la etiqueta <HTML> cuando el usuario no ha iniciado sesión. Esa clase es

anon

Así que, puedes usar eso para ocultar ciertos enlaces a usuarios que no han iniciado sesión. Digamos que tengo un enlace con el texto

Customer Support

y no quiero que se muestre a usuarios que no han iniciado sesión.

Entonces añadiría este CSS

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

en la pestaña common > CSS de mi tema principal.

Esto ocultará ese enlace en particular para los usuarios que no han iniciado sesión.

11 Me gusta

¡Muchas gracias por una respuesta tan rápida y completa!
Esto es exactamente lo que estaba buscando.

Lo intentaré :slightly_smiling_face:

3 Me gusta

Tenga en cuenta que el display: none; de CSS solo oculta el enlace de la representación del navegador, pero siempre es completamente visible para cualquiera que mire el código fuente de la página, para los rastreadores web y los motores de búsqueda.

3 Me gusta