Comment apporter des modifications côté backend d'une application discourse en utilisant rails

J’apporte des modifications à l’application Discourse où je veux montrer des sujets en fonction du nombre de réponses. J’ai créé une requête Rails mais je n’arrive pas à trouver la partie vue, où dois-je montrer et ajouter cette portée.

Si vous souhaitez modifier le comportement de Discourse, vous devrez consulter Développement de plugins Discourse - Partie 1 - Créer un plugin de base ou peut-être Guide pour débutants sur le développement de thèmes Discourse.

Je ne veux pas créer de nouveau plugin, je veux juste modifier les requêtes de catégorie et de sujet côté backend et les afficher dans la vue, mais je ne trouve pas où sont affichés les liens de la liste des sujets.

Il existe un paramètre de catégorie qui pourrait fonctionner pour cela :

Si vous avez besoin de modifier le code, vous devriez apporter vos modifications dans un plugin. Modifier le code principal vous causera des problèmes à l’avenir.

2 « J'aime »

D’accord Simon, merci. Je pense que cela m’aidera.

Je veux trier ces liens de sujets du côté droit pour une catégorie particulière en fonction du plus grand nombre de sujets. Cela nécessitera une modification du côté backend, n’est-ce pas ?

Je ne pense pas que vous ayez besoin de modifier le code pour cela, mais vous devrez peut-être exécuter une commande depuis la console Rails de votre site pour que les sujets s’affichent dans le nouvel ordre sur la page d’accueil de votre site.

Lorsque vous sélectionnez « Catégories avec sujets mis en avant » pour le paramètre de site style de page de catégorie de bureau, l’ordre dans lequel les sujets mis en avant sont affichés doit être défini par la valeur du paramètre « Trier la liste des sujets par » de chaque catégorie. Malheureusement, si vous modifiez le paramètre « Trier la liste des sujets par » d’une catégorie, cette modification n’est pas immédiatement visible sur la page d’accueil du site. Je ne sais pas où Discourse met en cache les sujets mis en avant qui sont affichés sur la page d’accueil, ni quelle action Discourse utilise pour vider le cache.

D’après mes tests sur mon propre site, je constate que le cache peut être vidé en exécutant la commande suivante depuis la console Rails :

# Assignez la catégorie pour laquelle vous souhaitez corriger les résultats à une variable, par exemple :

c = Category.find(42)

# Ensuite, exécutez
CategoryFeaturedTopic.feature_topics_for(c)

Après avoir exécuté cela, les sujets devraient s’afficher sur la page d’accueil dans l’ordre que vous avez sélectionné pour le paramètre « Trier la liste des sujets par » de la catégorie. Je ne pense pas que l’exécution de cette commande puisse causer de problèmes, mais soyez toujours prudent lorsque vous exécutez des commandes depuis la console Rails.

Je suis sûr qu’il existe un moyen plus simple de le faire. Il est possible que vous deviez simplement attendre jusqu’à 24 heures pour que Discourse vide le cache de l’ancienne liste de sujets mis en avant. Je ne vois pas où dans le code le cache est vidé. Le code pertinent semble se trouver ici : discourse/app/models/category_featured_topic.rb at main · discourse/discourse · GitHub.

2 « J'aime »

J’ai exécuté cette requête, mais le problème principal est de savoir où ces sujets mis en avant sont affichés sur la page d’accueil, dans quel fichier .html se trouve le code pour afficher ces données sur l’interface utilisateur.
J’ai déjà créé les requêtes pour trier les données dont j’ai besoin, mais le problème est de savoir où insérer la requête dans quel modèle.