Links de Cabeçalho 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 curtidas

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 curtidas

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

1 curtida

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 curtidas

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 curtida

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

1 curtida

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

6 curtidas

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

2 curtidas

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

3 curtidas

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 curtidas

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 curtidas

Obrigado por isso! Acabei de encontrá-lo depois de tentar vários outros banners e componentes. É exatamente o que eu preciso!

Uma solicitação/sugestão: capacidade de reordenar os links. Acabei de criar vários e percebi que gostaria de adicionar um no topo. Agora terei que copiar e colar manualmente todos eles, o que é bastante complicado, pois eles continuam sincronizando/atualizando outras entradas à medida que os copio para baixo.

Arrastar e soltar ou botões de subir/descer seriam muito úteis para futuros usuários (ou futuras edições).

4 curtidas

Você já pode manipular a ordem com muita facilidade com algumas linhas de CSS, já que usamos a propriedade flex.

Exemplo:

  • Ordem padrão
    image

  • Ordem personalizada
    image

Exemplo 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 curtidas

@Nick_Chomey Muitas vezes me vi precisando fazer isso, não apenas para este componente de tema, mas para muitos outros componentes de tema que usam a configuração type: list. Eu estava planejando enviar uma solicitação de recurso antes, mas me esqueci completamente, mas como você me lembrou, adicionei uma aqui:

3 curtidas

@dax Valeu! Eu não fazia ideia de que isso era possível!

@keegan ficou ótimo, espero que seja adicionado em algum momento!

2 curtidas

Estou procurando a mesma solução, você descobriu como eles fizeram isso ainda?
Obrigado!

1 curtida

Olá @Johani
Obrigado por criar um componente tão incrível!

É possível que um link só fique visível se o usuário estiver logado?
Será um link externo.

1 curtida

Olá @andreas_can, bem-vindo à Meta :wave:

Este componente adiciona uma classe CSS a cada link com base em seu texto. A classe adicionada é a mesma do texto que você dá ao link, exceto que os espaços são substituídos por um hífen (-) e o texto é definido como minúsculo. Em seguida, a string -custom-header-links é anexada no final.

Portanto, se você adicionar um link com o texto

privacy

então o elemento do link terá a classe

privacy-custom-header-links

Se o texto do seu link for

Visit Shop

então a classe CSS seria

visit-shop-custom-header-links

Então, agora você sabe a classe adicionada a cada link. Voltando à sua pergunta.

O Discourse adiciona uma classe CSS à tag <HTML> quando o usuário não está logado. Essa classe é

anon

Portanto, você pode usá-la para ocultar certos links para usuários que não estão logados. Digamos que eu tenha um link com o texto

Customer Support

e eu não quero que ele apareça para usuários que não estão logados.

Eu então adicionaria este CSS

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

na aba common > CSS do meu tema principal.

Isso ocultará esse link específico para usuários que não estão logados.

11 curtidas

Obrigado por uma resposta tão rápida e completa!
É exatamente o que eu estava procurando.

Vou tentar :slightly_smiling_face:

3 curtidas

Observe que o display: none; do CSS apenas oculta o link da renderização do navegador, mas ele está sempre totalmente visível para quem visualiza o código-fonte da página, para rastreadores e mecanismos de busca.

3 curtidas