Modul

Broken Links auf Drupal-Site finden - kein Problem mit Link-Checker

Drupal besitzt von Haus aus keine Möglichkeit, interne oder externe Links zu verwalten. D.h. es gibt keine automatisierte Prüfung, ob diese Links noch gülitg sind. Dabei kann es schnell passieren, dass ein Link zerbricht. Sei es, dass eine Seite gelöscht, verschoben oder durch einen andere ersetzt wird. Zumindest bei internen Links besteht dann noch die Chance, dass man die Links manuell ändert – sofern man sich noch an alle Verlinkungen erinnern kann. Bei externen Links bekommt man derartige Änderungen aber gar nicht erst mit. Schön wäre es daher, wenn es wenigstens eine regelmäßig Überprüfung aller Links gäbe und man anschließend alle gebrochenen Links aufgezeigt bekommt. Ob man diese dann ändert oder ganz entfernt ist dann jedem selbst überlassen. 

Drupal Webform-Modul: keine erweiterte Validierung mehr nach Update

Mit dem Modul Webform kann man in Drupal sehr einfach Formulare für seine Webseite erstellen. Das Modul ist sehr flexibel und mächtig, so dass auch sehr indiividuelle und umfangreiche Onlineformulare erstellt werden können. Zur Auswertung des Formulars war es sogar möglich eigenen PHP-Code an das Formular zu übergeben. Aus Sicherheitsgründen haben die Entwickler dieses Feature vor einiger Zeit stillschweigend entfernt.

Das führt bei einem Update älterer Webform-Installationen zu Problemen, wenn dort eigener PHP-Code unter "additional validation" eingetragen war, denn dieser wird von neueren Webform-Versionen nich mehr ausgeführt, was die Funktion des betroffenen Formulars beeinträchtigt oder dieses unbenutzbar macht. Um das Problem zu lösen, gibt es mehrer Möglichkeiten. Die einfachste - aber auch unsicherste - ist der Einsatz von  webform_php. Dieses Modul fügt das Feld "additional validation" wieder ein und der dort noch gespeicherte Wert bleibt erhalten, so dass das Formular sofort wieder benutzbar ist. Aus Sicherheitsgründen sollte die Benutzung dieser Funktion auf den Webmaster oder Admin der Seite beschränkt bleiben. Alternativ kann man Webform Validation benutzen. Dieses bietet diverse vorgefertigte Validierungsfunktionen. Zusätzlich können eigene Funktionen unter Verwendung des Hook hook_webform_validation_validators() programmiert werden. Da es Usern nicht möglich ist, direkt eigenen PHP-Code in ein Webformular einzutragen, bietet dieses Modul maximale Sicherheit.

Bug in Twitter-Modul: kein Tweet bei zu langer Überschrift

Das Modul Twitter ist eine feine Sache, um direkt von einer Drupalseite aus, Tweets auf twitter.com zu veröffentlichen. Leider hat es einen kleinen Bug, der unter bestimmten Umständen die Veröffentlichung eines Tweets verhindert. Der Fehler tritt immer dann auf, wenn die Überschrift eines Beitrages der getwittert werden soll zu lang ist und der Tweet unter anderem mit dem  !title-Tag erzeugt wird. Zusammen mit weiteren Tweet-Bestandteilen (in der Regel mindestens noch eine gekürzte URL) kann die maximal zulässige Tweetlänge überschritten werden. Das Modul prüft die Länge eines Tweets vor dem twittern nicht und schickt unter Umständen einen zu langen Tweet raus. Sobald die zulässige Maximallänge von 140 Zeichen für einen Tweet überschritten wirt. Verwirft twitter.com den Tweet. Das Modul meldet jedoch "Successfully posted to Twitter". Hier hilft nur ein Blick auf die Timeline des Twitter-Accounts. Erscheint dort nach kurzer Zeit kein Tweet, sollte man die Länge der Überschrift prüfen und diese ggf. verkürzen. Dann den Haken bei "Post to twitter.com" setzen und die Node erneut abspeichern.

Newsletter versenden mit Drupal

Wer regelmäßig E-Mail-Newsletter an seine Kunden sendet, braucht dafür ein geeignetes Werkzeug. Neben kommerziellen Angeboten wie z.B. Mailchimp oder kostenlosen Werkzeugen wie PHPlist, gibt es auch für Drupal verschiedene Lösungen. Eine davon ist das Modul Simplenews. Mit Simplenews erstellt man seine Newsletter so wie jeden anderen Inhalt in Drupal auch. Hat man verschiedene Zielgruppen, so kann man unterschiedliche Empfängerlisten anlegen und verwalten. Natürlich gibt es die Möglichkeit, sich zu den einzelnen Listen anzumelden (Opt-In) und abzumelden (Opt-Out). Für den Adminstrator gibt es außerdem Funktionen für den Massenimport von Empfängern und er kann das Opt-In sperren, so dass neue Empfänger nur manuell eingetragen werden können. Während die kommerziellen Dienste schnell eingerichtet sind, macht die Installation von PHPlist oder Simplenews etwas Arbeit und kann auch einmal den einen oder anderen Fallstrick beinhalten. Wir zeigen Schritt für Schritt wie es geht:

Fehlerquelle Pathauto: automatischer Alias zeigt auf Unterverzeichnis

Suchmaschinenfreundliche URLs erhält man bei Drupal am einfachsten, wenn man neben dem Core-Modul Path auch Pathauto und Token einsetzt. Im Zusammenspiel mit Taxonomy lassen sich sehr schöne suchmaschinen- und benutzerfreundliche URLs erzeugen. Allerdings lauert hier eine Falle, die man unbedingt kennen sollte, um keine unangenehme Überraschung zu erleben.

Views in Nodes einfügen

Ein View kann verschiedene Ansichten bereitstellen, zum Beispiel einen Block, eine Seite oder einen Anhang, den man wiederum an einen Block oder eine View-Seite anhängen kann. Eine solche View-Seite läßt sich zusätzlich mit Kopf- und Fußtexten ergänzen. Was aber, wenn man einen View - beispielsweise eine Terminliste - in eine anderen Seite - z.B. eine Node mit einer Kursbeschreibung - einbinden will? Das ginge zum Beispiel mit einem iFrame, aber das ist keine besonders elegante Lösung. Besser geht es mit dem Modul Insert View .

Update: Inhalt zum Bearbeiten sperren bei konkurrierendem Zugriff

Je nach Anzahl der Autoren oder Redakteure die eine Website betreuen kann es schonmal passieren, dass zwei gleichzeitig ein und den selben Beitrag bearbeiten wollen. Der übliche Drupal-Mechanismus ist in diesem Fall, dass derjenige, der zuerst seine Änderungen speichert, das Rennen gewinnt und der andere - der gerade den gleichen Inhalt bearbeitet - eine Fehlermeldung bekommt, wenn er seinerseits diesen Beitrag zu speichern. Das ist ebenso lästig wie ärgerlich, vor allem wenn dabei die mühsam eingegebenen Änderungen verloren gehen.. Besser wäre es, wenn Drupal in so einem Fall den zweiten Benutzer schon vor dem Öffnen des Beitrags darauf hinweisen würde, dass dieser zur Zeit bearbeitet wird und ihm den Zugriff verweigert. Bei Joomla wird diese Methode angewendet und ich finde das ist die bessere Lösung.

Einen solchen  Mechanismus implementiert das Modul Checkout.

Ausgehende E-Mails einer Drupal-Website umleiten

Es gibt in Drupal zahlreiche Funktionen und Module, die in der Lage sind E-Mails an einzelne User oder ganze Gruppen zu versenden, sei es als Newsletter oder zur Benachrichtigung über bestimmte Ereignisse. Nun kann es sein, dass man während der Entwicklungs- oder Testphase einer neuen Website, bereits mit realen Daten arbeiten (muss), die der Kunde geliefert hat. Da kann es dann leicht passieren, dass unerwünschte, automatische E-Mails an reale Empfängeradressen versendet werden. Dies läßt sich mit Hilfe des Moduls Advanced Mail Reroute vermeiden.

Kopier-Funktion in Drupal nachrüsten

In Joomla gibt es in der Inhalteverwaltung eine Kopierfunktion. Wählt man einen Artikel aus und klickt auf den Copy-Button, so wird eine Kopie des Artikels erstellt. Nützlich, weil damit alle Einstellungen des Originals übernommen werden und man nur noch den Inhalt ändern muss.

Bei Drupal gibt es eine solche Funktion standardmäßig nicht. Sie läßt sich aber leicht nachrüsten mit dem Modul Node Clone. Sobald man es installiert hat, fügt es bei jedem oberhalb eines Beitrags einen neuen Tab "duplizieren" hinzu. Klickt man auf diesen, so erstellt es eine Kopie des Beitrages. Dieser wird im Titel mit dem Zusatz "Duplikat von" als Kopie gekennzeichnet und übernimmt alle Inhalte und Einstellungen des Originals. Nun kann es aber Fälle geben, wo man bei der Kopie die Einstellungen auf Standardwerte zurück setzen möchte. Dies kann man in der Konfiguration von Node Clone für jeden Inhaltstyp separat einstellen. Das ist angenehm, wenn man z.B. jeden Artikel erst einmal auf "unpublished" haben will, damit er nicht versehentlich veröffentlicht wird, obwohl man nur einen Entwurf abspeichern will, der noch überarbeitet werden soll. Außerdem gestattet Node Clone, die Kopierfunktion bei jedem Inhaltstyp abzuschalten. Das ist zum Beispiel bei Inhaltstypen sinnvoll, die nur ein Bild enthalten. Hier bringt eine Kopie keine Arbeitsersparnis. Natürlich kann man in den Benutzer-Berechtigungen auch einstellen, welche Rolle Zugriff auf diese Funktion erhalten soll.

Alles in allem ein sehr praktisches Modul, dessen Funktionalität gerne Einzug in den Drupal Core halten dürfte.

Schneller User-Wechsel zu Testzwecken in Drupal

Zum Testen einer Website auf Drupal-Basis (aber natürlich auch bei jedem anderen CMS) gehört im Regelfall auch, die Seite mit den jeweils erstellten Benutzerrollen zu prüfen. Denn nur so läßt sich feststellen ob alle User die korrekten Berechtigungen besitzen - nicht zu wenige, da sonst die Funktion nicht gewährleistet ist, aber auch nicht zu viele, weil sonst Sicherheitslücken entstehen können. Der normale Weg - ausloggen, als Testuser mit einer anderen Rolle wieder einloggen - ist das Mittel der Wahl, wenn man einen umfangreichen Testlauf durchführt und viele Funktionen in einem Durchgang prüfen möchte. Alternativ kann man natürlich auch mit einem zweiten Browser arbeiten und sich dort mit der jeweiligen Testrolle einloggen. Will man aber nur mal schnell zwischendurch in eine andere Rolle schlüpfen, um z.B. ein vom Kunden berichtetes Fehlverhalten zu prüfen, oder um mit anderen Rechten etwas vorzuführen, so ist das aus- und wieder einloggen ebenso mühsam wie das Starten eines neuen Browsers. Hierfür bietet das Drupal-Modul Masquerade eine komfortable Lösung: es stellt verschiedene Optionen zur Verfügung, um zwischen verschiedenen Benutzern hin und her zu schalten. Zum einen bietet es einen Link "Masquerade as (Benutzername)" auf der Profilseite jedes Benutzers an - natürlich nur, wenn man die entsprechende Berechtigung zum "Maskieren" hat! Klickt man diesen an, sieht man die Website ab sofort mit den Rechten, die mit der Rolle dieses Benutzers verbunden sind. Gleichzeitig erscheint im persönlichen Menü ein Eintrag "Switch Back", mit dem man genauso schnell zurück wechseln kann. Zusätzlich gib es einen Eintrag (oder auch mehrere) der einen schnellen Wechsel zu einem festgelegten (Default-)Benutzer gestattet, sowie einen Block, wo man nach Benutzernamen suchen und dann in dessen Rolle schlüpfen kann.

Jeder Rollenwechsel wird übrigens von Drupal in der Log-Datei protokolliert, so dass man diese später nachvollziehen kann. Sobald die Website online geht, empfiehlt es sich, Masquerade wieder zu deinstallieren.

Inhalt abgleichen

re:publica 12

Aktuelles

Viele Anbieter von Webspace drosseln die Zahl der E-Mails, die innerhalb einer bestimmten Zeitspanne versendet werden dürfen. K...

Das Problem: Für eine Firmenwebsite soll eine Möglichkeit geschaffen werden, dass eingeloggte Kunden Beiträge...

PHPlist ist ein sehr schönes Open-Source-Tool, um Newsletter auch an einen großen Empfängerkreis zu verschicken. Leider...

Nicht nur zur Weihnachtszeit sollten sie uns am Herzen liegen: all jene auf der Welt, denen es schlechter geht als nötig. Deswegen...

Die meisten Blogs gestatten es ihren Besuchern, dass man Kommentare schreiben kann ohne sich dafür anzumelden. Das geht auch bei...

Gezwitschert ...

  • Neu im Blog: PHPlist: Mailversand drosseln bei Beschränkungen durch den Provider http://t.co/0fTlsaTZ vor 1 Woche 2 Tage
  • Neu im Blog: CKeditor verhindert private File-Downloads in Drupal7 http://t.co/r5rveT30 vor 2 Wochen 4 Tage