Notifiche in Drupal usando azioni e trigger

Pubblicato da Nicola Rainiero il 28-08-2012 (aggiornato il 11-08-2016)

Configurando le azioni e i trigger e sfruttando i token è possibile creare un efficiente sistema di notifica che avverte via email l'amministratore quando vengono salvati nuovi commenti da approvare. Inoltre informa l'avvenuta pubblicazione all'autore e le eventuali risposte al suo commento, se quest'ultimo decide di inserire la propria email, come evidenziato nel form stesso, modificando i messaggi di default di Drupal.

In questi ultimi giorni e grazie ad una proficua discussione qui, mi è nata la curiosità di provare il sistema di notifiche disponibile nei moduli aggiuntivi di Drupal e cercare una soluzione più adatta alle mie esigenze. Sono quindi partito da questi due moduli:

In realtà ma l'ho scoperto solo più tardi, esiste una tabella che confronta i 5 moduli che si occupano delle notifiche in Drupal ed è reperibile a questo indirizzo. Da questa comparazione e anche da quello che ho potuto constatare installandolo in remoto, il migliore è Comment Notify, ma non sono riuscito a capire come abilitarlo per gli utenti anonimi!

A dire la verità non ho voluto approfondire più di tanto, perché mi incuriosiva provare la triplice alleanza azioni/trigger/token, tra l'altro i primi due sono già presenti in Drupal e token è un modulo molto utile che avevo già installato. In questo caso forniscono tutta una serie di scorciatoie per identificare in automatico l'email dell'utente, il corpo del commento, il titolo etc. Li si possono comodamente vedere per esempio sotto al modulo per definire le azioni:

Esempio dei token usabili in Drupal 7

 Requisiti^

Per far funzionare il tutto bisogna:

  • Installare il modulo token come già anticipato;
  • Andare in http://mio_sito/admin/structure/types e per i contenuti desiderati (Articolo, Blog, etc.) abilitare Raggruppamento per argomenti e la voce Gli anonimi possono inserire informazioni sul contatto in Modifica --> Impostazioni dei commenti come visualizzato in questa immagine:

Come permettere agli anonimi di inserire i propri contatti

 Azioni^

Ho creato tre azioni avanzate collegandomi a http://mio_sito/admin/config/system/actions e scegliendo Crea un'azione avanzata --> Invia e-mail... --> Crea in questo modo:

  1. Prima azione:
    • Etichetta --> Invia e-mail all'amministratore
    • Destinatario --> [email protected]_sito.it (ho provato i vari token suggeriti ma mi davano sempre degli errori e non arrivava mai l'email a destinazione, ho così messo direttamente la mia emal) [site:mail]
    • Oggetto --> Comment awaiting approval on [site:name]
    • Messaggio -->
      ### New comment on post: [comment:node] ###
      [comment:mail]
      [comment:author]
      [comment:hostname]
      -------------------------------------------------------------
      [comment:title]
      [comment:body]
      -------------------------------------------------------------
      
      Link: [comment:url]
      
    • Salva
  2. Seconda azione:
    • Etichetta --> Invia e-mail commento approvato
    • Destinatario --> [comment:mail] [comment:original:mail]
    • Oggetto --> Your comment has been approved by [site:name]
    • Messaggio -->
      Hello [comment:author],
      
      Your comment:
      -------------------------------------------------
      [comment:title]
      [comment:body]
      -------------------------------------------------
      
      Is available on Post [comment:node:title] at: [site:url]/node/[comment:node:nid]#comment-[comment:cid]
      
    • Salva
  3. Terza azione:
    • Etichetta --> Invia e-mail risposta al commento padre
    • Destinatario --> [comment:parent:mail]
    • Oggetto --> New reply to your comment in [site:name]
    • Messaggio -->
      Hello [comment:parent:author],
      
      New reply to your comment here:
      [comment:url]
      
      
    • Salva

 Trigger^

Da questa pagina http://mio_sito/admin/structure/trigger/node clicco su COMMENTO nel menu in alto a sinistra e poi definisco questi trigger:

  • Trigger: Dopo il salvataggio di un nuovo commento --> Invia e-mail all'amministratore
  • Trigger: Dopo aver salvato un commento aggiornato --> Invia e-mail commento approvato e Invia e-mail risposta al commento padre

 Modifica dei messaggi di default^

Per avvisare l'utente anonimo che se inserisce la propria email riceverà le notifiche di eventuale pubblicazione e risposta al proprio commento ho seguito due strade diverse:

  1. cambiando le traduzioni in italiano
  2. sovrascrivendo le stringhe di default in inglese se è presente anche la versione in questa lingua.

Traduzioni in italiano

  • Ci si collega a questa pagina http://mio_sito/admin/config/regional/translate/translate;
  • si riporta in Il testo contiene parte della frase che si vuole cambiare e si preme invio;
  • si sceglie il risultato che comparirà in inglese (occhio a ricordare la frase esatta che servirà poi per cambiare la stringa di default nel successivo punto);
  • si clicca su modifica e si cambia il testo e si salva il tutto.

Nel mio caso:

Il contenuto di questo campo è privato e facoltativo, non verrà mostrato pubblicamente.>Il contenuto di questo campo è privato e facoltativo, non verrà mostrato pubblicamente.<br /> <strong>Se inserito verranno notificate la pubblicazione del commento e le successive risposte</strong>.
I commenti verranno accodati per una revisione dell'amministratore e saranno pubblicati dopo l'approvazione.>I commenti verranno accodati per una revisione dell'amministratore e saranno pubblicati dopo l'approvazione. Se in fase di compilazione è stata inserita anche la propria email, l'avvenuta pubblicazione e le eventuali risposte verranno notificate.

Sovrascrittura dei messaggi di default

Il metodo più corretto per farlo è aggiungere queste righe al file settings.php in http://mio_sito/files/default/ sotto alla sezione String overrides:

/**
 * String overrides:
 *
 * To override specific strings on your site with or without enabling locale
 * module, add an entry to this list. This functionality allows you to change
 * a small number of your site's default English language interface strings.
 *
 * Remove the leading hash signs to enable.
 */
# $conf['locale_custom_strings_en'][''] = array(
#   'forum'      => 'Discussion board',
#   '@count min' => '@count minutes',
# );
$conf['locale_custom_strings_en'][''] = array(
   'The content of this field is kept private and will not be shown publicly.' => 'The content of this field is kept private and optional, will not be shown publicly.<br /><strong>If you insert it, the site will send you a notify after publication of this one and any replies</strong>.',
   'Your comment has been queued for review by site administrators and will be published after approval.'      => 'Your comment has been queued for review by site administrators and will be published after approval. If you have defined your email address, the site will send you a notify after approval of this one and any replies.',
);

 


 Fonti^




Potrebbero interessarti anche:

Nicola Rainiero

Ingegnere civile specializzato in geotecnica con l'ambizione di facilitare la propria attività lavorativa usando e creando software libero per un sapere condiviso e collettivo. Mi occupo anche di energie rinnovabili ed in particolare di geotermia a bassa entalpia. Sono da sempre appassionato di web design e modellazione 3D.

Commenti

Ciao Nicola, grazie mille per le utili informazioni.
Ora, se puoi aiutarmi, mi servirebbe capire come fare per inviare email all'autore dell'articolo commentato.
Seguo le procedure che mi sembrano corrette, ma pare che le'mail non partono (come nel caso dell'amministratore quando non indicata specificatamente email). Ovviamente utilizzo i token con la stringa:
[node:author:mail]