Drupal

Drupal - stilizzare correttamente le newsletter in formato html con simplenews_template e mimemail

Questo metodo fa riferimento all'uso combinato dei seguenti moduli:

  • simplenews
  • simplenews_template
  • mimemail

Il modulo simplenews template fornisce la possibilità di specificare, per ciascuna newsletter creata, gli stili css da utilizzare.

Per utilizzarli a meglio è consigliabile fare in modo che mimemail non inserisca a, a sua volta, stili css all'interno della mail inviata.

La sequenza degli stili da applicare da perte di mimemail è abbastanza semplice:

  1. Se nel tema corrente è presente un file che si chiama mail.css, allora gli stili in questo file vengolo utilizzati per la mail.
  2. Altrimenti vengono presi in cosiderazione tutti i fogli di stile del tema corrente e vengono utilizzati questi per includerli nella mail: spesso i fogli di stile che sono stati pensati per un sito non si adattano bene alle newsletter quindi sarà meglio far evitare questo passaggio.

Per escludere totalmente l'inserimento di stili css da parte di mimemail nella newsletter sarà sufficiente creare un file mail.css all'interno del tema corrente: questo farà in modo che simplenews_template utilizzi solo i temi forniti da noi nelle opzioni di configurazione della newwsletter stessa.

Per ottenere il risultato voluto è necessario effettuare un ulteriore passaggio:

  1. Scaricare Emogrifier (reperibile all'indirizzo http://www.pelagodesign.com/sidecar/emogrifier/) ed estrarre l'archivio nella cartella sites/all/modules/simplenews_template in modo che il file emogrifier.php si trovi nel path sites/all/simplenews_template/emogrifier.php

Infatti simplenews cerca di rendere gli stili css inline direttamente sugli elementi html presenti nel testo della newsletter. Per fare ciò utilizza proprio Emogrifier. Se trova quest'ultimo allora effettua tutto il processo, altrimenti ignora gli stili CSS che sono nelle impostazioni della newsletter

Drupal - coesistenza dei moduli pathauto e path_redirect

Dalla pagina del modulo pathauto di Dupal si può leggere:

"The Pathauto module automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias. This allows you to get aliases like /category/my-node-title.html instead of /node/123. The aliases are based upon a "pattern" system which the administrator can control."

Dalla pagina del modulo path_redirect di Dupal si può leggere:

"This module allows you to specify a redirect from one path to another path or an external URL, using any HTTP redirect status."

Questi due moduli svolgono un lavoro essenziale all'interno di Drupal nei riguardi dell'ottimizzazione SEO (Search Engine Optimization). Le ultime versioni dei due moduli (pathauto 6x-1.5 e path_redirect 6.x-1.0-rc2) hanno però qualche problema a coesistere.

In particolare durante il caricamento della pagina di una modifica di un contenuto, il modulo pathauto elimina i redirect salvati dal modulo path_redirect.

Queste pagine evidenziano il problema e forniscono una soluzione rapida.

Drupal: incompatibilità tra i moduli fb e IMCE - e.root is undefined

Il modulo IMCE è un modulo per Drupal che consente un efficace trasferimento dei file e soprattutto delle immagini su di un sito Drupal ed è integrato con quasi tutti gli editor WYSIWYG disponibile per questo CMS.

Il modulo fb è un modulo per Drupal che consente di integrare le API pubbliche di Facebook all'interno del CMS.

Istallando questi due moduli insieme si ottine un malfunzionamento del modulo IMCE. In particolare i pulsanti della toolbar di IMCE non vengono più visualizzati, impedendo così, in effetti il trasferimento dei file dal disco locale al sito. Tutto questo è generato da un errore Javascript, causato dalle API di facebook. L'errore generato è: e.root is undefined.

Il problema si verifica perchè IMCE utilizza un tema personalizzato di drupal per la visualizzazione delle sue pagine che non aggiunge un particolare elemento html, cui le API Facebook fanno riferimento. Questo elemento altro non è che un div con id uguale a fb-root, cioè <div id="fb-root"></div>.

Questo è anche evidenziato in questo thread http://forum.developers.facebook.net/viewtopic.php?pid=221947 .

Come quick fix al problema abbiamo realizzato un piccolo modulo da installare ed attivare. Questo modulo utilizza la possibilità messa a disposizone da IMCE di utilizzare delle funzioni hook per inserire codice arbitrario all'interno delle pagine generate da questo modulo Queste hook devono essere registrate all'interno della variabile Drupal imce_custom_content.

Questo è proprio quello che fa questo piccolo modulo che trovate in allegato alla pagina.

Drupal, simplenews e il problema del Return-Path

I server di posta Unix/Linux, come postfix e sendmail, sovrascrivono l'header 'Return-Path' inviato dalla funzione mail() di PHP, utilizzando l'indirizzo e-mail con il nome dell'utente sotto il quale viene eseguito il web server Apache. Se, ad esempio, il web server è eseguito da un utente il cui nome è apache ed il nome del server su cui è ospitato è webserver.example.com, allora l'indirizzo email utilizzato dal mail server per il Return-Path sarà, apache@webserver.example.com, indipendentemente da ciò che può essere passato alla funzione mail().

Questa sovrascrittura fa si che le bounce mail, ossia le mail di ritorno generate da eventuali errori di consegna dei messaggi, vengano inviate all'indirizzo suddetto.

Per ovviare a tale problema, si può utilizzare un parametro aggiuntivo della funziona mail(), esattamente il quinto parametro, passando a quest'ultima l' opzione -f seguita dall'indirizzo di email al quale vogliono essere recapitate le mail di ritorno, ossia il Return-Path reale.

Questo approccio è usato da modulo Drupal Return-Path, sovrascrivendo funzione drupal_mail, e funziona correttamente.

Il modulo Mime Mail, però, non utilizza la funzione drupal_mail per l'invio di mail, ma utilizza un proprio mail engine interno che, a sua volta, utillizza direttamente la funzione mail() di PHP.

In particolare il modulo Mime Mail è utilizzato dal modulo simplenews, il gestore delle newsletter di Drupal, per l'invio dei messaggi in formato HTML.

Fortunatamente Mime Mail fornisce la possibilità di utilizzare un mail engine fornito da un altro modulo. Il modulo qui proposto si avvale di questa caratteristica di Mime Mail ed implementa un mail engine alternativo proprio per Mime Mail. Tale mail engine aggiunge l' opzione -f al quinto parametro della funzione PHP mail(), risolvendo il problema anche con Mime Mail.