Gefilterte Themenlisten

:information_source: Zusammenfassung Ermöglicht das Erstellen benutzerdefinierter Themenlisten mithilfe von Filtern. Die Listen können dann in ausgewählten Plugin-Outlets für ausgewählte Seiten angezeigt werden.
:eyeglasses: Vorschau Theme Creator
:hammer_and_wrench: Repository https://github.com/gormus/discourse-filtered-topic-lists
:question: Installationsanleitung So installieren Sie ein Theme oder eine Theme-Komponente
:open_book: Neu bei Discourse Themes? Anfängerleitfaden zur Verwendung von Discourse Themes

Installieren Sie diese Theme-Komponente

Ermöglicht das Erstellen benutzerdefinierter Themenlisten mithilfe der Themenfilter. Die Listen können dann auf ausgewählten Seiten in ausgewählten Plugin-Outlets angezeigt werden.

Sie können so viele Listen erstellen, wie Sie benötigen, ihre Überschriften definieren, wie viele Themen aufgelistet werden sollen, welche Filter für die Abfrage verwendet werden sollen und vor allem, auf welchen Seiten sie angezeigt werden sollen und wo auf diesen Seiten.

Stellen Sie sicher, dass Sie die experimentelle Funktion für Themenlistenfilter und die unterstützten Filter überprüfen:

Einstellungen

  • Titel: Ein optionaler Überschriftstext; wenn angegeben, wird er über der Themenliste angezeigt.

  • Länge: Die Anzahl der anzuzeigenden Themen.

  • Abfrage: Die Abfrage zum Filtern der Liste

  • Plugin Outlet: Die kuratierten Themenlisten können in folgenden Plugin-Outlets/Regionen platziert werden:

    • below-site-header
    • above-main-container
    • before-topic-list
    • after-topic-list
    • topic-list-bottom
    • main-outlet-bottom
    • before-main-outlet
  • Anzeigen auf: Die Seite, auf der die Liste angezeigt werden soll.

    • everywhere: Auf jeder Seite anzeigen, außer den /admin-Seiten.
    • homepage
    • top_menu: Überprüfen Sie Ihre Top-Menü-Einstellungen für aktivierte Seiten.
    • categories: Die /categories-Seite.
    • latest: Die /latest-Seite.
    • top
    • new
    • unread
    • read
    • posted
    • bookmarks
    • hot
    • selected_categories:
    • selected_tags
  • Ausgewählte Kategorien: Wenn die Einstellung “Anzeigen auf” auf “selected_categories” gesetzt ist, werden die in diesem Feld ausgewählten Kategorien verwendet. Die Themenliste wird nur auf diesen Kategorieseiten angezeigt.

  • Ausgewählte Tags: Wenn die Einstellung “Anzeigen auf” auf “selected_tags” gesetzt ist, werden die in diesem Feld ausgewählten Tags verwendet. Die Themenliste wird nur auf diesen Tag-Seiten angezeigt.

Plugin Outlets

Alle verfügbaren Plugin-Outlets werden mit einer roten gestrichelten Linie um sie herum gerendert.

Inspiration

Ich wurde von der Featured Lists Theme-Komponente inspiriert. Aber am Ende brauchte ich eine weniger meinungsbezogene und flexiblere Lösung für mein Projekt.

Schauen Sie sie sich unbedingt an:

23 „Gefällt mir“

Das ist ziemlich cool

Verwendet es dieselben zielbaren Klassen, damit Sie Ihre Komponente gestalten können?

Könnten Sie ein paar Beispiele für benutzerdefinierte Listen in ein paar Outlets einfügen?

Danke

1 „Gefällt mir“

Ja, die Tabellen der gefilterten Themenliste verwenden dieselben CSS-Klassen wie die Haupttabelle der Themenliste. Zusätzlich gibt es umschließende DIV-Elemente mit Klassen, die Ihnen helfen würden, die Themenlistentabellen in jedem Plugin-Outlet anzupassen.

Unten sehen Sie die Hierarchie, und beachten Sie, dass .topic-list der Standardidentifikator für das TABLE-Element ist. Sie können auch bestimmte Plugin-Outlets ansprechen, um bei Bedarf unterschiedliche Stile anzuwenden; siehe den zweiten Codeblock;

.filtered-topics-list {
    &__wrapper {
    }

    &__header {
        h2 {
        }
    }

    &__content.topic-list {
    }
}

.filtered-topics-list {
    &.below-site-header,
    &.above-main-container,
    &.before-topic-list,
    &.after-topic-list,
    &.topic-list-bottom,
    &.main-outlet-bottom,
    &.before-main-outlet {

        &__wrapper {
        }

        &__header {
            h2 {
            }
        }

        &__content.topic-list {
        }
    }
}

Ich habe keine Demo-Site, um Ihnen das zu zeigen, aber ich habe einen Screenshot geteilt, der alle verfügbaren Plugin-Outlets mit verschiedenen gefilterten Themenlisten zeigt.

Bitte ignorieren Sie die roten gestrichelten Linien darum herum, ich habe sie nur hinzugefügt, um Tabellen und die Regionen hervorzuheben, in denen sie sich befinden.

2 „Gefällt mir“

Ich verwende /latest als Homepage. Ich habe die neuesten Themen aus bestimmten Kategorien mit dieser Komponente zu meiner Homepage hinzugefügt, aber ich möchte die Standard- und Endlos-Scroll-Komponente für die neuesten Themen von Discourse entfernen. Ich habe dies mit CSS gemacht, aber es wirkt sich auch auf andere Seiten aus. Ist es möglich, die Komponente für die neuesten Themen mit CSS-Selektoren nur auf der Homepage anzusprechen?

3 „Gefällt mir“

Ich glaube, Sie müssen die Route abfragen und mit JavaScript eine benutzerdefinierte Klasse hinzufügen. Hier ist ein Beispiel, dem Sie folgen könnten:

https://gitlab.com/manuelkostka/discourse/helpers/css-classes/-/blob/main/javascripts/discourse/api-initializers/css-classes.js?ref_type=heads

3 „Gefällt mir“

Bug gefunden (oder erwartetes Verhalten?):

Wenn Standardlistenfilter: keine Unterkategorien in einer Kategorie gesetzt ist, werden in keinem der Auslässe gefilterte Themenlisten angezeigt.

Getestet auf der neuesten stabilen Version 3.3.1.

3 „Gefällt mir“

Hallo @jrgong, könntest du bitte einen Screenshot deiner Voreinstellung teilen?

2 „Gefällt mir“

Ich habe Ihnen eine PM mit meinem Preset geschickt

Noch eine Frage: Was wäre der beste Weg, die Kern-Themenliste auszublenden, wenn die gefilterte Liste in einer bestimmten Kategorie angezeigt wird?

Der einzige Weg, den ich über CSS gefunden habe, ist, das span-Tag anzusprechen, aber es könnte in verschiedenen Fällen ausgelöst werden:

span + table.topic-list.topic-thumbnails-grid {
  display: none;
}

Hallo @jrgong, ich kann Ihre Ergebnisse bestätigen.

Schritte zur Reproduktion:

  1. Erstellen Sie eine Kategorie und eine Unterkategorie. z. B. Top-Level-Kategorie und Top-Level-Kategorie > Unterkategorie
  2. Bearbeiten Sie die Einstellungen der Top-Level-Kategorie (/c/top-level-category/edit/settings)
  3. Suchen Sie unter „Darstellung“ die Einstellung Standard-Listenfilter.
  4. Ändern Sie den Wert von alle Themen auf keine Unterkategorien.
  5. Konfigurieren Sie eine neue Voreinstellung in der Komponente „Gefilterte Themenlisten“, um deren Inhalt in beiden Top-Level- und Unterkategorien aufzulisten.
    1. Setzen Sie Anzeigen auf = ausgewählte_kategorien
    2. Setzen Sie Ausgewählte Kategorien = Top-Level-Kategorie, Unterkategorie
    3. Setzen Sie Plugin-Auslass = (beliebig)
  6. Zeigen Sie die Seiten jeder Kategorie an.

Was wird erwartet?

Beide Kategorieseiten zeigen die konfigurierte Voreinstellungsergebnisse im ausgewählten Plugin-Auslass an.

Was wurde gefunden?

  1. Jede Kategorie mit der Einstellung Standard-Listenfilter = keine Unterkategorien zeigt die gefilterten Themenlisten nicht an, unabhängig davon, ob sie Unterkategorien hat oder nicht.
  2. Wenn jedoch Anzeigen auf = überall gesetzt ist, wird die gefilterte Themenliste im ausgewählten Auslass angezeigt.

Ähnliche Probleme:

2 „Gefällt mir“

Wenn ich ein benutzerdefiniertes Feld hinzufüge, sagen wir einen Filter namens X, mit 10 aktuellen Themen, und wenn diese 10 Themen durchgescrollt werden, und sagen wir, Neueste beginnt und wenn eines oder mehrere dieser Themen noch vorhanden sind, werden sie in beiden angezeigt. Gibt es eine Möglichkeit, sie entweder im Neuesten oder im Filter auszublenden?

1 „Gefällt mir“

Tolle Plugin-Funktionalität! :+1:

F: Plugin Outlet : before-main-outlet

Wie bekommen wir das angezeigt, ich sehe es nicht. Muss ich etwas im Standard-Theme aktivieren/deaktivieren, damit es wie bei Layton GFX auf der rechten Seite des Bildschirms erscheint?

Hmm, ich habe es gefunden oder zumindest kurz gesehen, da es am Ende des unendlichen Scrollens erscheint und nicht auf der rechten Seite, wie erwartet oder wie in der visuellen Anleitung vorgesehen.