Listes de sujets filtrés

:information_source: Résumé Permet de créer des listes de sujets personnalisées à l’aide de filtres. Les listes peuvent ensuite être affichées dans un point de sortie de plugin sélectionné pour des pages sélectionnées.
:eyeglasses: Aperçu Theme Creator
:hammer_and_wrench: Dépôt https://github.com/gormus/discourse-filtered-topic-lists
:question: Guide d’installation Comment installer un thème ou un composant de thème
:open_book: Nouveau aux thèmes Discourse ? Guide pour débutants sur l’utilisation des thèmes Discourse

Installer ce composant de thème

Permet de créer des listes de sujets personnalisées à l’aide des filtres de sujets. Les listes peuvent ensuite être affichées sur des pages sélectionnées, dans des points de sortie de plugin sélectionnés.

Vous pouvez créer autant de listes que nécessaire, définir leurs titres, le nombre de sujets à afficher, les filtres à utiliser pour la requête, et surtout les pages sur lesquelles elles doivent être affichées, et où sur ces pages.

Assurez-vous de consulter la fonctionnalité expérimentale de filtre de liste de sujets et les filtres pris en charge :

Paramètres

  • Titre : Un texte de titre facultatif ; lorsqu’il est fourni, il est affiché au-dessus de la liste des sujets.

  • Longueur : Le nombre de sujets à afficher.

  • Requête : La requête pour filtrer la liste

  • Point de sortie du plugin : Les listes de sujets organisées peuvent être placées dans les points de sortie/régions de plugin suivants :

    • below-site-header
    • above-main-container
    • before-topic-list
    • after-topic-list
    • topic-list-bottom
    • main-outlet-bottom
    • before-main-outlet
  • Afficher sur : La page sur laquelle afficher la liste.

    • everywhere : Afficher sur toutes les pages, à l’exception des pages /admin.
    • homepage
    • top_menu : Vérifiez vos paramètres top menu pour les pages activées.
    • categories : La page /categories.
    • latest : La page /latest.
    • top
    • new
    • unread
    • read
    • posted
    • bookmarks
    • hot
    • selected_categories :
    • selected_tags
  • Catégories sélectionnées : Lorsque le paramètre show on est défini sur selected_categories, les catégories sélectionnées dans ce champ sont utilisées. La liste des sujets ne sera affichée que sur ces pages de catégorie.

  • Tags sélectionnés : Lorsque le paramètre show on est défini sur selected_tags, les tags sélectionnés dans ce champ sont utilisés. La liste des sujets ne sera affichée que sur ces pages de tags.

Points de sortie du plugin

Tous les points de sortie de plugin disponibles sont rendus avec une ligne pointillée rouge autour d’eux.

Inspiration

J’ai été inspiré par le composant de thème Featured Lists. Mais à la fin, j’avais besoin d’une solution moins contraignante et plus flexible pour mon projet.

Assurez-vous de le consulter :

23 « J'aime »

C’est plutôt cool

Utilise-t-il les mêmes classes ciblables pour que vous puissiez styliser votre composant ?

Pourriez-vous ajouter quelques exemples de listes personnalisées dans quelques points de sortie ?

Merci

1 « J'aime »

Oui, les tableaux de listes de sujets filtrés utilisent les mêmes classes CSS que le tableau principal de listes de sujets. De plus, il existe des éléments DIV englobants avec des classes qui vous aideraient à personnaliser les tableaux de listes de sujets dans n’importe quel plugin-outlet.

Vous pouvez voir ci-dessous la hiérarchie, et notez que .topic-list est l’identifiant par défaut de l’élément TABLE. Vous pouvez également cibler un plugin-outlet spécifique pour appliquer différents styles si nécessaire ; voir le deuxième bloc de code ;

.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 {
        }
    }
}

Je n’ai pas de site de démonstration pour vous le montrer, mais j’ai partagé une capture d’écran affichant tous les plugin-outlets disponibles avec diverses listes de sujets filtrés.

Veuillez ignorer les règles en pointillés rouges autour d’eux, je les ai seulement ajoutées pour mettre en évidence les tableaux et les régions dans lesquelles ils se trouvent.

2 « J'aime »

J’utilise /latest comme page d’accueil. J’ai ajouté les derniers sujets de catégories spécifiques à ma page d’accueil avec ce composant, mais je veux supprimer le composant standard et à défilement infini des derniers sujets de Discourse. Je l’ai fait avec CSS, mais cela affecte également d’autres pages. Est-il possible de cibler le composant des derniers sujets avec des sélecteurs CSS uniquement sur la page d’accueil ?

3 « J'aime »

Je pense que vous devez interroger la route et ajouter une classe personnalisée à l’aide de javascript. Voici un exemple que vous pourriez suivre :

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

3 « J'aime »

Bug trouvé (ou comportement attendu ?) :

Définir Filtre de liste par défaut : aucune sous-catégorie dans une catégorie empêche l’affichage de toute liste de sujets filtrée dans l’un des points de vente.

Testé sur la dernière version stable 3.3.1.

3 « J'aime »

Salut @jrgong, pourriez-vous partager une capture d’écran de votre préréglage ?

2 « J'aime »

Je vous ai envoyé un message privé avec mon préréglage

Une autre question : Quelle serait la meilleure façon de masquer la liste des sujets principaux lors de l’affichage de la liste filtrée dans une catégorie spécifique ?
La seule façon que j’ai trouvée via CSS est de cibler la balise span, mais cela pourrait se déclencher dans différentes situations :

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

Salut @jrgong, je peux confirmer vos découvertes.

Étapes pour reproduire :

  1. Créez une catégorie et une sous-catégorie. Par exemple, Catégorie de niveau supérieur et Catégorie de niveau supérieur > Sous-catégorie.
  2. Modifiez les paramètres de la Catégorie de niveau supérieur (/c/top-level-category/edit/settings).
  3. Sous Apparence, trouvez le paramètre Filtre de liste par défaut.
  4. Changez la valeur de tous les sujets à aucune sous-catégorie.
  5. Configurez un nouveau préréglage dans le composant Listes de sujets filtrés pour y répertorier son contenu dans ces deux catégories, niveau supérieur et sous-catégorie ;
    1. Définissez Afficher sur = selected_categories
    2. Définissez Catégories sélectionnées = Catégorie de niveau supérieur, Sous-catégorie
    3. Définissez Plugin Outlet = (any)
  6. Affichez les pages de chaque catégorie.

Ce qui est attendu :

Les deux pages de catégorie doivent afficher les résultats du préréglage configuré sur le point de sortie sélectionné.

Ce qui est trouvé :

  1. Toute catégorie avec le paramètre Filtre de liste par défaut = aucune sous-catégorie n’affiche pas les Listes de sujets filtrés ; qu’elle ait des sous-catégories ou non.
  2. Cependant, si Afficher sur = everywhere est défini, la Liste de sujets filtrés est affichée dans le point de sortie sélectionné.

Problèmes similaires :

2 « J'aime »

Lorsque j’ajoute un champ personnalisé, disons un filtre nommé X, avec 10 sujets récents, et lorsque ces 10 sujets sont parcourus, et disons que « Derniers » commence et si un ou plusieurs de ces sujets sont toujours là, ils sont affichés dans les deux. Y a-t-il un moyen de les masquer dans « Derniers » ou dans le filtre ?

1 « J'aime »

Excellente fonctionnalité de plugin ! :+1:

Q : Plugin Outlet : before-main-outlet

Comment faire pour afficher cela, je ne le vois pas. Dois-je activer/désactiver quelque chose dans le thème standard pour qu’il occupe le côté droit de l’écran comme le font les graphismes de Layton ?

Hmm, je l’ai trouvé ou du moins je l’ai aperçu brièvement, car il apparaît en bas du défilement infini, et non sur le côté droit comme prévu ou anticipé par le guide visuel.