Benutzerdefinierte Kopfzeilen-Links

:discourse2: Zusammenfassung Custom Header Links ermöglicht es Ihnen, auf einfache Weise benutzerdefinierte textbasierte Links in die Kopfzeile einzufügen.
:eyeglasses: Vorschau Vorschau im Discourse Theme Creator
:hammer_and_wrench: Repository-Link GitHub - discourse/discourse-custom-header-links · GitHub
:open_book: Neu bei Discourse Themes? Anfängerleitfaden zur Verwendung von Discourse Themes

Dieses Theme-Komponente installieren


Funktionen

Desktop

Mobil


(Aufgrund des sehr begrenzten Platzes wird das Hinzufügen von mehr als einem Link auf Mobilgeräten nicht empfohlen)


Einstellungen

Einstellung Beschreibung
custom_header_links Die strukturierte Liste von Links, die in der Kopfzeile angezeigt werden sollen. Jeder Link wird über ein Formular mit einzelnen Feldern konfiguriert (siehe unten).
links_position Steuert, ob die Links rechts (Standard) oder links neben dem Logo in der Kopfzeile erscheinen. Wenn auf left gesetzt, werden alle Links auf Themenseiten automatisch ausgeblendet, um Platz für den Themientitel zu schaffen – unabhängig von den individuellen hide_on_scroll-Einstellungen der Links.

Links hinzufügen

Links werden über ein strukturiertes Formular in den Theme-Komponenten-Einstellungen konfiguriert. Klicken Sie auf Hinzufügen, um einen neuen Link hinzuzufügen. Jeder Link hat die folgenden Felder:

Feld Erforderlich Beschreibung
Text :white_check_mark: Ja Die sichtbare Beschriftung für den Link. Maximal 100 Zeichen. Bestimmt auch die CSS-Klasse, die auf den Link angewendet wird (siehe CSS-Anpassung unten).
Titel :x: Nein Der Tooltip-Text, der beim Überfahren des Links angezeigt wird. Maximal 1000 Zeichen.
URL :white_check_mark: Ja Die URL, auf die der Link verweist. Kann ein relativer Pfad sein (z.B. /faq) oder eine vollständige URL. Maximal 2048 Zeichen.
Ansicht :x: Nein Steuert, auf welchem Gerät der Link angezeigt wird. Wenn nicht festgelegt, wird der Link auf allen Geräten angezeigt (wie bei vdm). Siehe Werte unten.
Ziel :x: Nein Steuert, wie der Link geöffnet wird. Wenn nicht festgelegt, wird standardmäßig in einem neuen Tab geöffnet (wie bei blank). Siehe Werte unten.
Beim Scrollen ausblenden :x: Nein Steuert, ob der Link ausgeblendet wird, wenn der Themientitel in der Kopfzeile auf Themenseiten sichtbar wird. Standardmäßig keep. Gilt nur, wenn links_position auf right gesetzt ist – siehe Hinweis unten. Siehe Werte unten.
Locale :x: Nein Wenn festgelegt, wird der Link nur angezeigt, wenn die Seitensprache der Website mit diesem Wert übereinstimmt. Leer lassen, um den Link bei allen Locales anzuzeigen. Details siehe unten.

\u003cbr\u003e

Werte für Ansicht:

Wert Verhalten
vdm Auf Desktop und Mobilgeräten sichtbar
vdo Nur auf dem Desktop sichtbar
vmo Nur auf Mobilgeräten sichtbar
(nicht festgelegt) Wie vdm – auf allen Geräten sichtbar

Werte für Ziel:

Wert Verhalten
blank Öffnet sich in einem neuen Tab
self Öffnet sich im selben Tab
(nicht festgelegt) Standardmäßig Öffnen in einem neuen Tab (wie bei blank)

Werte für Beim Scrollen ausblenden:

Wert Verhalten
keep Link bleibt sichtbar, auch wenn der Themientitel in der Kopfzeile angezeigt wird (Standard)
remove Link wird ausgeblendet, wenn der Themientitel auf Themenseiten sichtbar wird

\u003e :information_source: hide_on_scroll gilt nur, wenn links_position auf right gesetzt ist. Wenn links_position auf left gesetzt ist, werden alle Links auf Themenseiten gemeinsam ausgeblendet, unabhängig von ihrer individuellen hide_on_scroll-Einstellung.

Hier ist ein Beispiel für hide_on_scroll in Aktion (wenn links_position auf right gesetzt ist):

Most Liked und Privacy sind auf keep gesetzt, sodass sie sichtbar bleiben, wenn der Titel erweitert wird. Die anderen Links sind auf remove gesetzt, sodass sie ausgeblendet werden, wenn der Titel sichtbar wird. Dieses Verhalten betrifft nur Themenseiten.


Locale-Filterung

Das Feld Locale ermöglicht es Ihnen, einen Link nur anzuzeigen, wenn die Website auf eine bestimmte Sprache eingestellt ist. Dies ist nützlich für mehrsprachige Communities, die unterschiedliche Header-Links pro Sprache wünschen.

  • Setzen Sie das Feld auf einen Locale-Code wie en, de, fr, zh_CN usw.
  • Die Übereinstimmung ist nicht case-sensitiv, und sowohl - als auch _ Trennzeichen werden gleich behandelt – sodass en-US, en_US und en_us gleichermaßen übereinstimmen.
  • Wenn das Locale-Feld leer gelassen wird, wird der Link bei allen Locales angezeigt. Dies ist die empfohlene Einstellung für die meisten Sites mit einer einzigen Sprache.
  • Dem Link-Element wird auch eine CSS-Klasse headerLink--{locale} hinzugefügt, die für zusätzliche CSS-Selektion verwendet werden kann.

\u003e :warning: Häufiges Problem: Wenn Ihre Links nicht angezeigt werden, prüfen Sie, ob Sie versehentlich einen locale-Wert festgelegt haben, der nicht mit der konfigurierten Sprache Ihrer Website übereinstimmt. Das Leerlassen des Locale-Feldes ist sicher und zeigt den Link immer an.


CSS-Anpassung

Jeder Link erhält automatisch eine CSS-Klasse, die sich aus seinem Text-Wert ableitet: Leerzeichen werden durch Bindestriche ersetzt, der Text wird in Kleinbuchstaben umgewandelt und -custom-header-links wird angehängt.

Zum Beispiel:

  • Ein Link mit dem Text Privacy erhält die Klasse privacy-custom-header-links
  • Ein Link mit dem Text Visit Shop erhält die Klasse visit-shop-custom-header-links

Alle Header-Links stylen:

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

Einen bestimmten Link stylen (z.B. einen Link mit dem Text „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);
}

Link basierend auf dem Anmeldestatus anzeigen oder ausblenden:

Discourse fügt der \u003chtml\u003e-Tag eine anon-Klasse für abgemeldete Benutzer hinzu. Sie können dies verwenden, um Links bedingt anzuzeigen oder auszublenden:

/* "Dashboard" für abgemeldete Benutzer ausblenden */
html.anon .dashboard-custom-header-links {
  display: none;
}

/* "Sign Up" für angemeldete Benutzer ausblenden */
html:not(.anon) .sign-up-custom-header-links {
  display: none;
}

\u003e :warning: CSS display: none ist ein nur visuelles Ausblendmechanismus. Der HTML-Code des Links ist weiterhin im Seitenquelltext vorhanden. Verwenden Sie dies nicht, um sensible oder zugriffsgeschützte URLs zu schützen.

Links mit CSS neu anordnen (unter Verwendung der Flexbox order):

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

Verwenden Sie den Pfad /my für benutzerspezifische Links, um einen Benutzernamen hart zu kodieren:

/my/messages     → der Posteingang des aktuellen Benutzers
/my/activity     → die Aktivität des aktuellen Benutzers

\u003e :discourse2: Bei uns gehostet? Theme-Komponenten sind für unsere Pro-, Business- und Enterprise-Tarife verfügbar.


\u003e Änderungsprotokoll-Highlights:
\u003e
\u003e * Die Einstellung custom_header_links wurde von einem kommagetrennten Listenformat in eine strukturierte Formular-UI vom Typ type: objects migriert. Wenn Sie zuvor Links mit dem alten Textfeld mit Komma-Trennung konfiguriert haben, sollten Ihre Daten automatisch übernommen worden sein.

83 „Gefällt mir“
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?

weiß nicht, ob das schon einmal vorgeschlagen wurde. Ich habe versucht, zurückzulesen, konnte es aber nicht finden.

Ich habe darüber nachgedacht, die Möglichkeit hinzuzufügen, „Unterlinks" zu erstellen, um so die Idee einer bearbeitbaren Liste zu schaffen (Textfarbe, Hintergrund-Hover-Effekt usw.), um Ergebnisse zu erzielen, die denen von Zoom ähneln.

8 „Gefällt mir“

Die Links, die einen Pfeil nach rechts haben – wie „Developer" – bedeuten, dass sie „Unterlinks" enthalten.

1 „Gefällt mir“

Ist es möglich, ein einfaches Dropdown-Menü zu einem beliebigen Element hinzuzufügen?

Ich konnte kein Dropdown-Menü mit „Benutzerdefinierte Kopfzeilen-Links" erstellen. Anscheinend hat das Zoom so gemacht. Ich habe ihr Dropdown-Menü über die Konsole überprüft, konnte aber nicht herausfinden, wie sie in den HTML-Code dieser Komponente eingreifen, um ein Dropdown zu jedem Element hinzuzufügen.

Gibt es eine Möglichkeit, dieses Dropdown zu einem Element hinzuzufügen? @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 „Gefällt mir“

Hat jemand Probleme damit, dass Links nicht geöffnet werden, wenn die links position auf „links" gesetzt wird?

Links funktionieren in der Vorschau, aber nicht, wenn ich sie auf ein Theme anwende.
Rechts ausgerichtete Links funktionieren jedoch einwandfrei.

1 „Gefällt mir“

Hallo! Vielen Dank, dass du das erstellt hast.
Ist es möglich, vor den Textlink ein SVG hinzuzufügen? Wenn ja – wie geht das?

1 „Gefällt mir“

Hast du dafür schon eine Lösung gefunden? Ich suche nach der gleichen Lösung.

6 „Gefällt mir“

Wie kann der Titel **formatting code** in eine tatsächliche Formatierung umwandeln? Und wie sieht es mit Font Awesome-Icons vor dem Text aus?

2 „Gefällt mir“

Wäre es möglich, ein Flag hinzuzufügen, um Links für bestimmte Benutzergruppen anzuzeigen oder auszublenden?

3 „Gefällt mir“

Gibt es eine Möglichkeit, dass diese Theme-Komponente Dropdown-Navigation unterstützt? Das bedeutet, dass beim Überfahren eines Header-Links mit der Maus Unterpunkte darunter erscheinen. Ich weiß, dass dies über HTML/CSS möglich ist, wie hier gezeigt:

2 „Gefällt mir“

Vielen Dank, dass Sie diese Komponente erstellt haben!
Eine Frage und möglicherweise eine Funktionsanfrage: Können wir einen bestimmten Link für eine bestimmte Gruppe anzeigen?
Zum Beispiel möchte ich, wenn ein Benutzer in der Gruppe customers ist, einen Link zum Kunden-Steuerungsbereich anzeigen, und wenn ein Benutzer in der Gruppe workers ist, einen Link zu einem anderen Panel hinzufügen.
Ich denke, das wäre eine sehr nützliche Funktion.
Der Gruppenname könnte der letzte (optionale) Parameter sein.

2 „Gefällt mir“

Vielen Dank dafür! Ich habe es gerade gefunden, nachdem ich verschiedene andere Banner und Komponenten ausprobiert hatte. Es ist genau das, was ich brauche!

Eine Anfrage/ein Vorschlag: Möglichkeit, die Links neu zu ordnen. Ich habe gerade einige erstellt und festgestellt, dass ich einen oben hinzufügen möchte. Jetzt muss ich sie alle manuell kopieren und einfügen, was tatsächlich recht umständlich ist, da sie beim Kopieren und Einfügen andere Einträge synchronisieren/aktualisieren.

Drag-and-Drop- oder Auf-/Ab-Schaltflächen wären für zukünftige Benutzer (oder zukünftige Bearbeitungen) sehr nützlich.

4 „Gefällt mir“

[quote=“Nick_Chomey, post:131, topic:90588”]
Drag and drop oder Auf/Ab-Schaltflächen wären für zukünftige Benutzer (oder zukünftige Bearbeitungen) sehr nützlich.
[/quote]Sie können die Reihenfolge bereits sehr einfach mit einigen Zeilen CSS manipulieren, da wir die flex-Eigenschaft verwenden.

Z.B.:

  • Standardreihenfolge
    image

  • Benutzerdefinierte Reihenfolge
    image

CSS-Beispiel:

.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 „Gefällt mir“

@Nick_Chomey Ich habe oft festgestellt, dass ich dies tun muss, nicht nur für diese Theme-Komponente, sondern auch für viele andere Theme-Komponenten, die die Einstellung type: list verwenden. Ich hatte vor, eine Funktionsanfrage einzureichen, aber ich habe sie völlig vergessen, aber da Sie mich daran erinnert haben, habe ich hier eine hinzugefügt:

3 „Gefällt mir“

@dax Danke! Ich hatte keine Ahnung, dass das möglich ist!

@keegan sieht großartig aus, hoffentlich wird es irgendwann hinzugefügt!

2 „Gefällt mir“

Ich suche nach der gleichen Lösung, haben Sie schon herausgefunden, wie sie das gemacht haben?
Danke!

1 „Gefällt mir“

Hallo @Johani
Danke für die Erstellung einer so tollen Komponente!

Ist es möglich, einen Link nur dann sichtbar zu machen, wenn der Benutzer angemeldet ist?
Es wird ein externer Link sein.

1 „Gefällt mir“

Hallo @andreas_can, willkommen bei Meta :wave:

Diese Komponente fügt jedem Link eine CSS-Klasse hinzu, basierend auf seinem Text. Die hinzugefügte Klasse ist dieselbe wie der Text, den Sie dem Link geben, außer dass Leerzeichen durch einen Bindestrich (-) ersetzt und der Text in Kleinbuchstaben umgewandelt wird. Dann wird die Zeichenfolge -custom-header-links am Ende angehängt.

Wenn Sie also einen Link mit dem Text hinzufügen

privacy

dann hat das Linkelement die Klasse

privacy-custom-header-links

Wenn Ihr Linktext lautet

Visit Shop

dann wäre die CSS-Klasse

visit-shop-custom-header-links

Jetzt kennen Sie also die Klasse, die jedem Link hinzugefügt wird. Zurück zu Ihrer Frage.

Discourse fügt dem <html>-Tag eine CSS-Klasse hinzu, wenn der Benutzer nicht angemeldet ist. Diese Klasse ist

anon

Sie können dies also verwenden, um bestimmte Links für Benutzer auszublenden, die nicht angemeldet sind. Nehmen wir an, ich habe einen Link mit dem Text

Customer Support

und ich möchte nicht, dass er für Benutzer angezeigt wird, die nicht angemeldet sind.

Ich würde dann dieses CSS hinzufügen

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

im Tab common > CSS Ihres Hauptthemas.

Dies blendet diesen speziellen Link für Benutzer aus, die nicht angemeldet sind.

11 „Gefällt mir“

Vielen Dank für Ihre schnelle und ausführliche Antwort!
Das ist genau das, wonach ich gesucht habe.

Ich werde es ausprobieren :slightly_smiling_face:

3 „Gefällt mir“

Beachten Sie, dass CSS display: none; den Link zwar nur vor der Browser-Darstellung verbirgt, er aber für jeden, der den Seitenquelltext liest, für Web-Crawler und Suchmaschinen immer vollständig sichtbar ist.

3 „Gefällt mir“