Il mio sito ha un componente piuttosto specializzato, ma lo condivido qui perché potrebbe essere utile. Aggiunge un modello al compositore basato su una stringa nell’URL.
Ci sono state molte discussioni sull’avere modelli di compositore per i tag. Questo non ha funzionato nel mio caso d’uso, quindi ho costruito questo invece. Può essere usato all’occorrenza, o modificato leggermente per funzionare anche per i tag.
URL Composer Templates
Un componente tema di Discourse che pre-compila il compositore con testo modello basato sui parametri dell’URL. Progettato per funzionare perfettamente con Docuss per fornire modelli specifici per il contesto per diversi tipi di interazioni.
Funzionalità
- Supporto Parametri URL: Rileva automaticamente
?composer_template=Xnegli URL e applica il modello corrispondente - Tipi di Modello Multipli: Configura fino a 6 diversi modelli per scopi diversi (segnalazione, partecipazione, invito, modelli personalizzati)
- Apertura Automatica Compositore: Opzionalmente apre automaticamente il compositore quando si visita un link Docuss senza thread esistenti
- Applicazione Flessibile: I modelli possono essere applicati solo al primo post, a tutte le risposte o a entrambi
- Persistenza Sessione: Utilizza sessionStorage per mantenere la selezione del modello attraverso la navigazione delle pagine
- Modalità Debug: Abilita la registrazione dettagliata della console per la risoluzione dei problemi di applicazione del modello
Installazione
-
Installa il componente tema su Discourse:
- Vai su Admin → Customize → Themes (Amministrazione → Personalizza → Temi)
- Clicca su “Install” → “From a Git repository” (Installa → Da un repository Git)
- Inserisci:
https://github.com/focallocal/url-composer-templates - Aggiungi il componente al tuo tema attivo
-
Nessun rebuild del plugin richiesto! Il supporto per il parametro
composer_templateesiste già in dcs-discourse-plugin e dcs-client. -
Distribuisci la tua app React (fl-maps) con i componenti DCSLink aggiornati che passano la prop
composerTemplate. -
Configura i modelli nelle impostazioni del componente (Admin → Customize → Themes → tuo tema → url-composer-templates → Settings).
Configurazione
Impostazioni Modello
Ogni modello ha tre opzioni di configurazione:
Modello 1 (Segnalazione)
- template_1_id:
report- Il valore del parametro URL per attivare questo modello - template_1_text: Il testo da pre-compilare nel compositore
- template_1_use_for:
first_post- Applica solo quando si creano nuovi argomenti
Modello 2 (Partecipazione)
- template_2_id:
going- Per interazioni di tipo “Vengo” - template_2_text: Testo pre-compilato per le conferme di partecipazione
- template_2_use_for:
all_replies- Applica a tutte le risposte (non al primo post)
Modello 3 (Invito)
- template_3_id:
invite- Per interazioni di invito - template_3_text: Testo pre-compilato per gli inviti
- template_3_use_for:
all_replies- Applica a tutte le risposte
Modelli 4-6 (Personalizzati)
- Disabilitati di default
- Possono essere abilitati e personalizzati per casi d’uso specifici
- Configura ID, testo e ambito di applicazione secondo necessità
Impostazioni Apertura Automatica
- enable_auto_open_composer:
true- Quando abilitato, apre automaticamente il compositore se:- Viene cliccato un link Docuss (URL contiene
?composer_template=X) - Non esistono ancora thread per quella combinazione di tag
- Aiuta gli utenti ad avviare discussioni immediatamente
- Viene cliccato un link Docuss (URL contiene
Modalità Debug
- debug_mode:
false- Abilita per vedere i log dettagliati della console con prefissi emoji:
Log di applicazione del modello
Log di apertura automatica del compositore
Integrazione Docuss
Integrazione Automatica
Il componente url-composer-templates è progettato per funzionare automaticamente con Docuss. Quando hai entrambi:
- Questo componente installato sulla tua istanza Discourse
- Il client e il plugin Docuss aggiornati (con supporto per composer_template)
I modelli verranno applicati automaticamente in base a:
- Modalità Interazione:
- Modalità
DISCUSS→ Utilizza suggerimenti triggerId (going, invite) o predefinito sureport - Modalità
COMMENT→ Utilizza il modelloreport
- Modalità
Modelli Personalizzati tramite Attributi HTML
Per un controllo più preciso, puoi specificare i modelli direttamente nel tuo HTML utilizzando l’attributo data-dcs-composer-template:
<!-- Esempio: Pulsante Segnala -->
<div class="dcs-trigger"
data-dcs-trigger-id="issue-report"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="report">
Segnala un Problema
</div>
<!-- Esempio: Pulsante Vengo -->
<div class="dcs-trigger"
data-dcs-trigger-id="event-rsvp"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="going">
Vengo!
</div>
<!-- Esempio: Pulsante Invita -->
<div class="dcs-trigger"
data-dcs-trigger-id="invite-friends"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="invite">
Invita Amici
</div>
<!-- Esempio: Modello Personalizzato -->
<div class="dcs-trigger"
data-dcs-trigger-id="feedback"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="custom1">
Dai Feedback
</div>
Corrispondenza ID Modello
Il componente abbina gli ID modello dal parametro URL con gli ID modello configurati:
| Parametro URL | Impostazione Modello | Scopo Predefinito |
|---|---|---|
?composer_template=report |
template_1_id |
Segnalazioni bug, problemi |
?composer_template=going |
template_2_id |
RSVP eventi |
?composer_template=invite |
template_3_id |
Inviti |
?composer_template=custom1 |
template_4_id |
Uso personalizzato |
?composer_template=custom2 |
template_5_id |
Uso personalizzato |
?composer_template=custom3 |
template_6_id |
Uso personalizzato |
Come Funziona
Flusso di Applicazione del Modello
- Rilevamento URL: Quando un utente naviga verso un URL con
?composer_template=X, il componente memorizza l’ID del modello in sessionStorage - Intercettazione Compositore: Quando il compositore si apre, il componente cerca un ID modello memorizzato
- Corrispondenza Modello: Trova il modello corrispondente in base all’ID
- Validazione Ambito: Verifica se il modello deve essere applicato (primo post, risposta o entrambi)
- Inserimento Testo: Pre-compila il compositore con il testo del modello
- Pulizia: Segna il modello come applicato per prevenirne la ri-applicazione
Flusso di Apertura Automatica
- Rilevamento Parametro: Verifica se l’URL contiene
?composer_template=Xe se l’apertura automatica è abilitata - Ricerca Argomento: Cerca argomenti esistenti con la combinazione di tag corrente
- Apertura Compositore: Se non vengono trovati argomenti, apre automaticamente il compositore
- Applicazione Modello: Il modello viene quindi applicato tramite il normale flusso sopra
Casi d’Uso Esempio
Sito Web Eventi
# settings.yml
template_2_id: "going"
template_2_text: "Ho intenzione di partecipare! 🎉\n\nNon vedo l'ora di vedere tutti lì."
template_2_use_for: "all_replies"
template_3_id: "invite"
template_3_text: "Vorrei invitare amici a questo evento.\n\nChi sto invitando:\n- \n\nPerché dovrebbero venire:\n"
template_3_use_for: "first_post"
Tracciamento Problemi
template_1_id: "bug"
template_1_text: "**Descrizione Bug:**\n\n**Passaggi per Riprodurre:**\n1. \n2. \n3. \n\n**Comportamento Atteso:**\n\n**Comportamento Effettivo:**\n"
template_1_use_for: "first_post"
template_4_enabled: true
template_4_id: "feature"
template_4_text: "**Richiesta Funzionalità:**\n\n**Caso d'Uso:**\n\n**Soluzione Proposta:**\n"
template_4_use_for: "first_post"
Coinvolgimento Comunità
template_1_id: "question"
template_1_text: "**La Mia Domanda:**\n\n**Cosa Ho Provato:**\n\n**Contesto Aggiuntivo:**\n"
template_1_use_for: "first_post"
template_2_id: "answer"
template_2_text: "Ecco cosa ha funzionato per me:\n\n**Soluzione:**\n\n**Perché funziona:**\n"
template_2_use_for: "all_replies"
Risoluzione dei Problemi
Modelli Non Applicati
- Controlla Parametro URL: Assicurati che l’URL contenga
?composer_template=Xdove X corrisponde a un ID modello - Abilita Modalità Debug: Attiva
debug_modenelle impostazioni per vedere i log della console - Verifica Ambito Modello: Controlla se l’impostazione
use_forcorrisponde alla tua azione (creazione argomento vs risposta) - Svuota SessionStorage: Apri la console del browser ed esegui:
sessionStorage.clear()
Apertura Automatica Non Funzionante
- Controlla Impostazione: Assicurati che
enable_auto_open_composersia impostato sutrue - Verifica URL: L’apertura automatica funziona solo quando l’URL contiene
?composer_template=X - Controlla Argomenti Esistenti: L’apertura automatica si attiva solo quando NON esistono argomenti con la combinazione di tag
- Abilita Modalità Debug: Cerca i log con emoji
nella console
Viene Applicato il Modello Sbagliato
- Controlla ID Modello: Assicurati che il parametro URL corrisponda esattamente all’ID modello (sensibile alle maiuscole/minuscole)
- Verifica Priorità: Se più modelli potrebbero corrispondere, viene utilizzato il primo modello corrispondente
- Svuota Sessione: SessionStorage potrebbe contenere valori vecchi:
sessionStorage.clear()
Problemi di Integrazione Docuss
- Aggiorna Docuss: Assicurati di avere le ultime versioni di:
dcs-client(con supporto composerTemplate in HtmlBased.js)dcs-discourse-plugin(con generazione parametri URL in DcsIFrame.js.es6)
- Controlla Attributi HTML: Verifica che
data-dcs-composer-templatesia impostato correttamente sui trigger - Ispeziona Rete: Controlla la scheda Rete degli Strumenti per Sviluppatori del browser per vedere se i parametri URL vengono aggiunti
Cronologia Versioni
v1.0.0 (Corrente)
- Rilascio iniziale
- Supporto per 6 modelli configurabili
- Selezione modello basata su parametro URL
- Apertura automatica compositore per link Docuss
- Persistenza SessionStorage
- Modalità Debug per la risoluzione dei problemi
Contribuzione
Hai trovato un bug o hai una richiesta di funzionalità? Apri un issue sul repository GitHub.
Licenza
Questo componente è open source e disponibile sotto la Licenza MIT.
Crediti
Sviluppato da Andy@Focallocal per l’uso con Docuss - un sistema per incorporare discussioni Discourse in qualsiasi sito web.