Simplenews und Omega-Theme: Fehlermeldung beim Newsletterversand

Simplenews und Omega-Theme: Fehlermeldung beim Newsletterversand

Wenn ein Drupal-Modul nicht so arbeitet wie erwartet, muss nicht immer das verwendete Modul selber dafür verantwortlich sein. Manchmal kann die Ursache für den Fehler auch bei dem verwendeten Theme liegen. Dies ist so ein Beispiel. Für eine Drupal7-Webseite haben wir das Modul Simplenews für den Newsletter-Versand installiert.


Als Theme kam Omega zum Einsatz. Sobald nun ein Newsletter versendet wurde - egal ob ein einzelner Test-Newsletter oder eine komplette Abonnentenliste - warf Drupal für jede versendete Mail diese Fehlermeldungen aus:


Notice: Trying to get property of non-object in alpha_invoke() (Zeile 99 von /usr/www/users/testhw/msv/sites/all/themes/omega/alpha/includes/alpha.inc).

Warning: Invalid argument supplied for foreach() in alpha_invoke() (Zeile 99 von /usr/www/users/testhw/msv/sites/all/themes/omega/alpha/includes/alpha.inc).


Die E-Mails wurden dabei zwar versendet, aber solche Fehlermeldungen sind natürlich lästig, vor allem wenn man mehrere Hundert Newsletter-Mails versendet. Die Lösung für das Problem fand sich schließlich im verwendeten Omega-Sub-Theme Alpha, das nicht nur für die Anzeige der Webseite verwendet wurde, sondern auch, um die zu versendenen HTML-Newsletter-Mails zu rendern. Der folgende Patch behebt den Fehler (Quelle: http://drupal.org/node/1763362#comment-6790982):


diff --git a/alpha/includes/alpha.inc b/alpha/includes/alpha.inc index b4be3e2..42b1e1b 100644 --- a/alpha/includes/alpha.inc +++ b/alpha/includes/alpha.inc @@ -91,19 +91,21 @@ function alpha_invoke($type, $hook, &$vars) { // If one of the themes in the theme trail implements this hook // include the corresponding .inc file and call the associated function. - foreach (alpha_theme_trail($theme->theme) as $key => $name) { - $function = $key . '_alpha_' . $type . '_' . $hook; + if (!empty($theme)) { + foreach (alpha_theme_trail($theme->theme) as $key => $name) { + $function = $key . '_alpha_' . $type . '_' . $hook; - if (!function_exists($function)) { - $file = drupal_get_path('theme', $key) . '/' . $type . '/' . $type . '-' . str_replace('_', '-', $hook) . '.inc'; + if (!function_exists($function)) { + $file = drupal_get_path('theme', $key) . '/' . $type . '/' . $type . '-' . str_replace('_', '-', $hook) . '.inc'; - if (is_file($file)) { - include $file; + if (is_file($file)) { + include $file; + } } - } - if (function_exists($function)) { - $function($vars); + if (function_exists($function)) { + $function($vars); + } } } }