C’est un composant assez spécialisé pour mon site, mais je le partage ici car il pourrait être utile. Il ajoute un modèle au compositeur basé sur une chaîne dans l’URL.
Il y a eu beaucoup de discussions sur la possibilité d’avoir des modèles de compositeur pour les tags. Cela n’a pas fonctionné dans mon cas d’utilisation, alors j’ai construit ceci à la place. Il peut être utilisé en cas d’urgence, ou légèrement modifié pour fonctionner également avec les tags.
Modèles de Compositeur d’URL
Un composant de thème Discourse qui pré-remplit le compositeur avec du texte modèle basé sur les paramètres d’URL. Conçu pour fonctionner de manière transparente avec Docuss afin de fournir des modèles spécifiques au contexte pour différents types d’interactions.
Fonctionnalités
- Prise en charge des paramètres d’URL : Détecte automatiquement
?composer_template=Xdans les URL et applique le modèle correspondant - Types de modèles multiples : Configurez jusqu’à 6 modèles différents pour différentes fonctions (rapport, participation, invitation, modèles personnalisés)
- Ouverture automatique du compositeur : Ouvre éventuellement le compositeur automatiquement lors de la visite d’un lien Docuss sans fils de discussion existants
- Application flexible : Les modèles peuvent s’appliquer uniquement au premier message, à toutes les réponses, ou aux deux
- Persistance de session : Utilise
sessionStoragepour maintenir la sélection du modèle lors de la navigation entre les pages - Mode débogage : Active la journalisation détaillée dans la console pour dépanner l’application du modèle
Installation
-
Installez le composant de thème sur Discourse :
- Allez dans Admin → Personnaliser → Thèmes
- Cliquez sur « Installer » → « Depuis un dépôt Git »
- Entrez :
https://github.com/focallocal/url-composer-templates - Ajoutez le composant à votre thème actif
-
Aucune reconstruction de plugin requise ! La prise en charge du paramètre
composer_templateexiste déjà dansdcs-discourse-pluginetdcs-client. -
Déployez votre application React (fl-maps) avec les composants
DCSLinkmis à jour qui transmettent la propcomposerTemplate. -
Configurez les modèles dans les paramètres du composant (Admin → Personnaliser → Thèmes → votre thème → url-composer-templates → Paramètres).
Configuration
Paramètres des modèles
Chaque modèle possède trois options de configuration :
Modèle 1 (Rapport)
- template_1_id :
report- La valeur du paramètre d’URL pour déclencher ce modèle - template_1_text : Le texte à pré-remplir dans le compositeur
- template_1_use_for :
first_post- Appliquer uniquement lors de la création de nouveaux sujets
Modèle 2 (Participation)
- template_2_id :
going- Pour les interactions de type « Je participe » - template_2_text : Texte pré-rempli pour les confirmations de participation
- template_2_use_for :
all_replies- Appliquer à toutes les réponses (pas aux premiers messages)
Modèle 3 (Invitation)
- template_3_id :
invite- Pour les interactions d’invitation - template_3_text : Texte pré-rempli pour les invitations
- template_3_use_for :
all_replies- Appliquer à toutes les réponses
Modèles 4-6 (Personnalisés)
- Désactivés par défaut
- Peuvent être activés et personnalisés pour des cas d’utilisation spécifiques
- Configurez l’ID, le texte et la portée d’application selon les besoins
Paramètres d’ouverture automatique
- enable_auto_open_composer :
true- Lorsqu’il est activé, ouvre automatiquement le compositeur si :- Un lien Docuss est cliqué (l’URL contient
?composer_template=X) - Aucun fil de discussion n’existe encore pour cette combinaison de tags
- Aide les utilisateurs à démarrer des discussions immédiatement
- Un lien Docuss est cliqué (l’URL contient
Mode Débogage
- debug_mode :
false- Activez pour voir les journaux détaillés de la console avec des préfixes emoji :
Journaux d’application du modèle
Journaux d’ouverture automatique du compositeur
Intégration Docuss
Intégration automatique
Le composant url-composer-templates est conçu pour fonctionner automatiquement avec Docuss. Lorsque vous avez les deux :
- Ce composant installé sur votre instance Discourse
- Le client et le plugin Docuss mis à jour (avec prise en charge de
composer_template)
Les modèles seront appliqués automatiquement en fonction de :
- Mode d’interaction :
- Mode
DISCUSS→ Utilise les indicestriggerId(going, invite) ou utilisereportpar défaut - Mode
COMMENT→ Utilise le modèlereport
- Mode
Modèles personnalisés via attributs HTML
Pour un contrôle plus précis, vous pouvez spécifier des modèles directement dans votre HTML en utilisant l’attribut data-dcs-composer-template :
<!-- Exemple : Bouton de rapport -->
<div class="dcs-trigger"
data-dcs-trigger-id="issue-report"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="report">
Signaler un problème
</div>
<!-- Exemple : Bouton de participation -->
<div class="dcs-trigger"
data-dcs-trigger-id="event-rsvp"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="going">
Je participe !
</div>
<!-- Exemple : Bouton d'invitation -->
<div class="dcs-trigger"
data-dcs-trigger-id="invite-friends"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="invite">
Inviter des amis
</div>
<!-- Exemple : Modèle personnalisé -->
<div class="dcs-trigger"
data-dcs-trigger-id="feedback"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="custom1">
Donner un avis
</div>
Correspondance des ID de modèle
Le composant fait correspondre les ID de modèle du paramètre d’URL avec les ID de modèle configurés :
| Paramètre d’URL | Paramètre de modèle | Fonction par défaut |
|---|---|---|
?composer_template=report |
template_1_id |
Rapports de bugs, problèmes |
?composer_template=going |
template_2_id |
RSVP d’événements |
?composer_template=invite |
template_3_id |
Invitations |
?composer_template=custom1 |
template_4_id |
Utilisation personnalisée |
?composer_template=custom2 |
template_5_id |
Utilisation personnalisée |
?composer_template=custom3 |
template_6_id |
Utilisation personnalisée |
Fonctionnement
Flux d’application du modèle
- Détection de l’URL : Lorsqu’un utilisateur navigue vers une URL avec
?composer_template=X, le composant stocke l’ID du modèle danssessionStorage - Interception du compositeur : Lorsque le compositeur s’ouvre, le composant recherche un ID de modèle stocké
- Correspondance du modèle : Trouve le modèle correspondant en fonction de l’ID
- Validation de la portée : Vérifie si le modèle doit s’appliquer (premier message, réponse ou les deux)
- Insertion du texte : Pré-remplit le compositeur avec le texte du modèle
- Nettoyage : Marque le modèle comme appliqué pour éviter une nouvelle application
Flux d’ouverture automatique
- Détection du paramètre : Vérifie si l’URL contient
?composer_template=Xet si l’ouverture automatique est activée - Recherche de sujet : Recherche les sujets existants avec la combinaison de tags actuelle
- Ouverture du compositeur : Si aucun sujet n’est trouvé, ouvre automatiquement le compositeur
- Application du modèle : Le modèle est ensuite appliqué via le flux normal ci-dessus
Cas d’utilisation d’exemple
Site Web d’événement
# settings.yml
template_2_id: "going"
template_2_text: "Je prévois d'assister ! 🎉\n\nAu plaisir de vous y voir."
template_2_use_for: "all_replies"
template_3_id: "invite"
template_3_text: "J'aimerais inviter des amis à cet événement.\n\nPersonnes invitées :\n- \n\nPourquoi ils devraient venir :\n"
template_3_use_for: "first_post"
Suivi des problèmes
template_1_id: "bug"
template_1_text: "**Description du bug :**\n\n**Étapes pour reproduire :**\n1. \n2. \n3. \n\n**Comportement attendu :**\n\n**Comportement actuel :**\n"
template_1_use_for: "first_post"
template_4_enabled: true
template_4_id: "feature"
template_4_text: "**Demande de fonctionnalité :**\n\n**Cas d'utilisation :**\n\n**Solution proposée :**\n"
template_4_use_for: "first_post"
Engagement communautaire
template_1_id: "question"
template_1_text: "**Ma question :**\n\n**Ce que j'ai essayé :**\n\n**Contexte supplémentaire :**\n"
template_1_use_for: "first_post"
template_2_id: "answer"
template_2_text: "Voici ce qui a fonctionné pour moi :\n\n**Solution :**\n\n**Pourquoi cela fonctionne :**\n"
template_2_use_for: "all_replies"
Dépannage
Les modèles ne s’appliquent pas
- Vérifiez le paramètre d’URL : Assurez-vous que l’URL contient
?composer_template=Xoù X correspond à un ID de modèle - Activez le mode débogage : Activez
debug_modedans les paramètres pour voir les journaux de la console - Vérifiez la portée du modèle : Vérifiez si le paramètre
use_forcorrespond à votre action (création de sujet vs réponse) - Effacez SessionStorage : Ouvrez la console du navigateur et exécutez :
sessionStorage.clear()
L’ouverture automatique ne fonctionne pas
- Vérifiez le paramètre : Assurez-vous que
enable_auto_open_composerest défini surtrue - Vérifiez l’URL : L’ouverture automatique ne fonctionne que lorsque l’URL contient
?composer_template=X - Vérifiez les sujets existants : L’ouverture automatique ne se déclenche que lorsqu’AUCUN sujet n’existe avec la combinaison de tags
- Activez le mode débogage : Recherchez les journaux avec l’emoji
dans la console
Le mauvais modèle s’applique
- Vérifiez les ID de modèle : Assurez-vous que votre paramètre d’URL correspond exactement à l’ID du modèle (sensible à la casse)
- Vérifiez la priorité : Si plusieurs modèles peuvent correspondre, le premier modèle correspondant est utilisé
- Effacez la session :
sessionStoragepourrait contenir d’anciennes valeurs :sessionStorage.clear()
Problèmes d’intégration Docuss
- Mettez à jour Docuss : Assurez-vous d’avoir les dernières versions de :
dcs-client(avec prise en charge decomposerTemplatedansHtmlBased.js)dcs-discourse-plugin(avec génération de paramètres d’URL dansDcsIFrame.js.es6)
- Vérifiez les attributs HTML : Vérifiez que
data-dcs-composer-templateest correctement défini sur les déclencheurs - Inspectez le réseau : Vérifiez l’onglet Réseau des outils de développement du navigateur pour voir si les paramètres d’URL sont ajoutés
Historique des versions
v1.0.0 (Actuel)
- Sortie initiale
- Prise en charge de 6 modèles configurables
- Sélection de modèle basée sur les paramètres d’URL
- Ouverture automatique du compositeur pour les liens Docuss
- Persistance
SessionStorage - Mode débogage pour le dépannage
Contribution
Vous avez trouvé un bug ou avez une demande de fonctionnalité ? Veuillez ouvrir un problème sur le dépôt GitHub.
Licence
Ce composant est open source et disponible sous la licence MIT.
Crédits
Développé par Andy@Focallocal pour une utilisation avec Docuss - un système permettant d’intégrer des discussions Discourse dans n’importe quel site web.