Blog

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);
+      }
     }
   }
 }

Probleme mit Links auf mehrsprachiger Drupal-Webseite beheben

Bei einer Kundenwebseite trat folgendes Problem auf: Die Seite wurde als mehrsprachige Seite geplant, zunächst aber nur mit deutsch Inhalten befüllt. Erst später kamen die englischen Übersetzungen der Beiträge hinzu. Innerhalb der deutschen Texte gab es nun diverse Links auf andere interne Inhalte. Diese Links waren relativ gesetzt (siehe Screenshot des CK-Editors).

relativer Link auf internen Inhalt einer Drupal-Webseite
Interner Link im CK-Editor

Kam man nun als Besucher auf eine deutsche Seite, so zeigten alle dort enthaltenen Links auf die korrekten deutschen Sprachversionen.

Beispiel:

Der Text  "Fragen Sie einfach nach" war mit der (internen) Seite www.kundendomain.de/inhalt/kontakt verknüpft

Schaltete man jetzt mittels des Sprachumschalters im Language-Block auf die englische Version um, so wurde die englische Übersetzung angezeigt. Allerdings wurden die Links in dem übersetzten Text  nicht korrekt ausgegeben.

Aus internen Links in Drupal automatisch vollwertige URLs machen

Wenn man in Drupal einen Link auf eine interne Seite setzt, gibt man meistens nur den relativen Pfad an. Beispiel: Wenn wir einen Link auf einen anderen Blogeintrag setzen, dann geben wir nur diesen Teil ein:

/blog/wie-man-verhindert-dass-drupal-ungewollt-e-mails-verschickt

Daraus macht Drupal beim Anzeigen des Artikels dann automatisch die vollständige URL (wie man leicht erkennt, wenn man mit dem Mauszeiger über den Linktext geht):

http://www.webtotum.de/blog/wie-man-verhindert-dass-drupal-ungewollt-e-m...

Das ist praktisch, vor allem weil bei einer späteren Änderung der Domain die Links automatisch richtig zusammengesetzt werden. Einen Nachteil hat diese Methode jedoch: Nicht alle Module können diesen Mechanismus nutzen. So werden derartige interne Links zum Beispiel vom Newslettermodul Simplenews derzeit nicht korrekt umgewandelt. Sie gehen beim Versenden des Newsletters einfach verloren.

Wie man verhindert, dass Drupal ungewollt E-Mails verschickt

Wenn man eine neue Drupal-Webseite entwickelt, kommt irgendwann der Punkt, an dem man reale Daten in das System einspielt, um die Seite abschließend zu testen bevor sie dann online geht. Hat man User mit existierenden Mailadressen angelegt, so möchte man nicht unbedingt, dass diese E-Mail-Benachrichtigungen bekommen, da die Seite ja noch gar nicht im Betrieb ist - zumindest, wenn diese User nicht gleichzeitig Entwickler oder Tester sind. Dabei kann es auch leicht passieren, dass nicht nur einzelne Mails versendet werden, sondern mehrere Dutzend oder sogar Hunderte.

Frohe Weihnachten und ein gutes Jahr 2013!

Wir gehen einfach einmal davon aus, dass die Erde auch nach dem 21.12.2012 existiert und sich weiter dreht (jedenfalls haben wir Termine für danach gemacht, optimistisch wie wir sind) und wir freuen uns auf das neue Jahr.

Viele spannende Projekte, neue Kunden, herausfordernde Aufgaben haben uns durch 2012 begleitet und dafür gesorgt, dass wir uns sehr zuhause fühlen in unserer Tätigkeit.

Accordion-Effekt für Wordpress

Der Accordion-Effekt ist eine mit Javascript umgesetze Textanimation. Auch auf dieser Webseite verwenden wir den Effekt, und zwar bei unseren Referenzen. Unter den Jahreszahlen befinden sich weitere Inhalte, die beim Anklicken "ausgeklappt" werden. Unsere Seite wurde mit Drupal erstellt und der Effekt stammt aus dem Modul Views Accordion, das das Modul Views erweitert.

Einen ähnlichen Effekt suchte ich für eine Kundenwebseite, die mit Wordpress erstellt wurde. Meine Anforderung an das Accordion-Script: Wenn man die Seite mit dem Effekt aufruft, sollen alle Texte eingeklappt sein. Genau das ist aber der Knackpunkt an dem Ganzen. Auf wordpress.org hat man sehr schnell recht viele Accordion-Plugins gefunden, aber bei allen ist immer mindestens ein Bereich aufgeklappt. Da die fertigen Plugins nicht das können, was ich haben wollte, musste eine fest eingebundene Lösung her.

Webseiteninhalte abonnieren mit Drupal Subscriptions-Modul

Um seine Seitenbesucher oder Kunden mit Informationen zu versorgen, gibt es verschiedenen Möglichkeiten. RSS-Feeds sind eine Möglichkeit. Der Vorteil: eine Anmeldung oder Registrierung ist nicht erforderlich. Eine andere Möglichkeit ist der Versand eines Newsletters. Das geht natürlich nur mit Zustimmung der Empfänger (am besten per Double-Opt-In) und hat den Nachteil, dass die Empfänger nur begrenzt wählen können, was sie bekommen wollen - z.B. wenn mehrere Newsletter zur Auswahl stehen. Einen anderen Weg gehen die Drupal-Module Notifications und Subscriptions. Hier kann jeder User selbst bestimmen, über welche neuen Inhalte er informiert werden möchte. Anhand des Subscriptions-Moduls wollen wir die Möglichkeiten und Vorgehensweise beschreiben. Die Arbeitsschritte gelten für Drupal 6 und Drupal 7.

Menüpunkte in Drupal rollenbasiert ein- und ausblenden

Wenn man verschiedenen Benutzergruppen jeweils eine andere  Navigation anbieten möchte, so läßt sich das in Drupal recht leicht einrichten. Einfach die verschiedenen Menüs anlegen und die dazugehörigen Blöcke rollenbasiert ein- und ausblenden.

Manchmal möchte man aber innerhalb eines Menüs auch nur einen Menüpunkte für einzelne Benutzerrollen abschalten. Beispielsweise um den Menüpunkt "Mein Konto" für nicht angemeldete User (Gäste) auszublenden. Hierfür bietet sich das Modul Menu item visibility an. Einfach installieren, aktivieren und schon gibt es bei jedem einzelnen Menüeintrag einen zusätzlichen Punkt "Sichtbarkeitseinstellungen". Hier kann man genau wie bei den Blöcken, für jede Rolle einstellen, ob der Menüpunkt sichtbar sein soll oder nicht.

Sichtbarkeitseinstellungen für einen Menüpunkt (Drupal-Modul Menu Item Visibilty)

Klickt man dort überhaupt keine Rolle an, so ist der Menüpunkt für alle sichtbar. Wichtig: Dieses Modul blendet wirklich nur die Menüpunkte aus. Es bietet keinerlei Zugriffsbeschränkungen auf den mit dem Menüpunkt verknüpften Pfad. Kennt man diesen Pfad, so kann man ihn direkt aufrufen und sieht alle Inhalte, die dahinter stecken. Will man hier Zugriffsbeschränkungen haben, so benötigt man Module wie Organic Groups oder Taxonomy Access Control.

Deutsche Übersetzung für das Wordpress-Theme Twenty Twelve

Das Wordpress-Theme Twenty Twelve ist eine aktuelle Weiterentwicklung der Standardthemes Twenty Ten und Twenty Eleven. Das besondere an diesem Theme ist, dass es für mobile Endgeräte optimiert ist. Mit Twenty Twelve erstellte Webseiten passen sich also an, wenn sie auf Tablets oder Smartphones angezeigt werden. So werden Widgets unter dem eigentlichen Content platziert und das Menü wird Smartphone-freundlich angeordnet.

Das WordpressCamp in Berlin

Am 13. Oktober fand in Berlin das WPCamp statt, eine Veranstaltung, bei der sich neun Stunden lang alles um Wordpress drehte. 22 sogenannte Sessions verteilten sich auf bis zu vier Räume, wobei nach dem Muster eines BarCamps vier Sessions noch am Tag direkt in den Ablaufplan mit aufgenommen wurden.

WP-Camp 2012

Dank einer beachtlichen Anzahl Sponsoren, darunter Adobe und fotolia, kostete die Teilnahme nur 10 Euro. Aber was billig ist, muss nicht schlecht sein, das wissen gerade die Benutzer von OpenSource-Software.

Inhalt abgleichen

 

Das Team

Martina Ruediger

Martina Rüdiger
(X)HTML/CSS, PHP, Drupal, Wordpress, Konzeption, Design und Umsetzung von modernen Web-Layouts, SEO, Printdesign

 

Jürgen Thau
Kundenberatung, Projektsteuerung, PHP, JavaScript, Drupal, Joomla, Drupal- und Joomla-Schulungen  

Was wir bieten

  • Konzeption und Gestaltung rund um Ihre Web-Seite
  • Online Shops
  • barrierearme und zukunftssichere Designs
  • Beratung rund um Content-Management
  • maßgefertigte Lösungen
  • ergänzende Angebote aus dem Print-Bereich
  • bedarfsgerechte Web-Hosting-Angebote
  • Schulungen vor Ort
  • Unterstützung nach dem Start Ihrer Web-Seite

Wir sehen uns:

WordCamp Hamburg

Gezwitschert ...

  • Neu im Blog: Google mag künftig kein Flash mehr http://t.co/KM3EcawNIW vor 1 Woche 2 Tage
  • RT @digilotta: Klingelingeling! Sichtbar - aktiv - vernetzt - kompetent: WordPress Frauen in D / A / CH a