(Ersetzt) Link zu externer Seite vom Haupt-Discourse-Logo

:information_source: Discourse bietet jetzt eine #offizielle Theme-Komponente, um diesen Anwendungsfall zu unterstützen:

Originalinhalt

Ich bin mir nicht sicher, ob es für die meisten Websites eine gute Idee ist, das Haupt-Discourse-Logo auf eine externe Website verlinken zu lassen, aber es gibt Ausnahmen, bei denen es sinnvoll ist, Benutzer beim Klicken auf das Haupt-Discourse-Logo auf eine externe Website weiterzuleiten. Wenn Sie das tun möchten, erfahren Sie hier, wie es geht.

Eine neue Theme-Komponente erstellen

:warning: Hinweis: Dieser Abschnitt der Anleitung wird bald in ein eigenes Thema extrahiert.

Klicken Sie auf der Seite “Admin / Anpassen / Themes” in der Seitenleiste auf den Link “Komponenten”. Klicken Sie dann am unteren Rand der Seitenleiste auf die Schaltfläche “Installieren”:

Klicken Sie im sich öffnenden Modal-Fenster auf den Link “Neu erstellen”:

Geben Sie Ihrer Theme-Komponente einen Namen und stellen Sie sicher, dass der Typ “Komponente” ausgewählt ist. Klicken Sie dann auf die Schaltfläche “Erstellen”:

Sie werden dann zur Hauptseite der Theme-Komponente weitergeleitet.

Code zur Theme-Komponente hinzufügen

Der Code zum Überschreiben der Standard-URL des Hauptlogos muss dem HEAD-Abschnitt Ihrer Theme-Komponente hinzugefügt werden. Um auf den Editor der Komponente zuzugreifen, klicken Sie auf die Schaltfläche “CSS/HTML bearbeiten”:

Klicken Sie im sich öffnenden Editor auf den Link “Head”:

Fügen Sie je nach verschiedenen Bedingungen die folgenden Code-Snippets in den HEAD-Abschnitt des Editors ein, um die URL zu ändern, auf die das Home-Logo verweist. Beachten Sie, dass Sie https://example.com im Code durch die vollständige URL der Homepage Ihrer externen Website ersetzen müssen:

  • um den Link zu einer statischen URL zu ändern:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => "https://example.com")
</script>
  • um eine dynamische URL basierend auf dem aktuellen Benutzer zurückzugeben:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      const currentUser = api.getCurrentUser();
      return `https://example.com/${currentUser.username}`;
    })
</script>
  • um eine URL basierend auf einer Theme-Komponenten-Einstellung zurückzugeben:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      return settings.example_logo_url_setting;
    })
</script>

Klicken Sie auf die Schaltfläche “Speichern”, um Ihre Änderungen zu speichern. Gehen Sie danach zurück zur Hauptseite der Theme-Komponente und klicken Sie auf den Link “Alle Themes hinzufügen”, um die neue Komponente zu allen Themes Ihrer Website hinzuzufügen:

11 „Gefällt mir“

: +1: Vielen Dank für das Teilen!


Ich habe es im Header-Tag hinzugefügt, aber es wurde nicht übernommen

Für mich funktioniert es einwandfrei.
Hast du einen „Hard Refresh“ auf deiner Seite mit Strg + F5 gemacht?


Ich habe Befehl+R verwendet und sogar den Inkognito-Modus aktiviert, aber es hat immer noch nicht funktioniert

1 „Gefällt mir“

Vielen Dank für diese Anleitung! Ich muss das Haupt-Header-Logo für eine Community ändern und es funktioniert perfekt mit dem Code-Snippet.

Ich habe jedoch festgestellt, dass dadurch auch der Link des kleinen Logos geändert wird, das das vollständige Logo ersetzt, wenn ein Thema im Header angezeigt wird. Z.B. das reine Symbol hier auf Meta:

image

Das fühlt sich eher unlogisch an. Ist es möglich, der Funktion ein weiteres Argument hinzuzufügen, damit sie das kleine Logo nicht beeinträchtigt?

Aufgrund von Upcoming Header Changes - Preparing Themes and Plugins denke ich, dass dies geändert werden muss zu

<script type="text/discourse-plugin" version="1.34.0">
    api.registerValueTransformer("home-logo-href", () => "<full_url_of_your_website_homepage>");
</script>
2 „Gefällt mir“