Contao 2.11.3 ist verfügbar

Das kleine Update behebt wieder mal einige Fehler im Core. Außerdem wurde die .htaccess.default angepasst. Es wird empfohlen die Änderungen in eine ggf. eigene .htaccess zu übernehmen. Das hier einiges geändert wurde zeigt ein Ausschnitt aus einem SVN-Vergleich:

Htaccess Änderungen in Contao-2.11.3

Htaccess Änderungen in Contao-2.11.3

Noch ein paar weitere Änderungen in der folgenden Aufzählung.

  • Die Dropdown-Menüs im Modulwizard (Seitenlayout) werden nun korrekt dupliziert
  • Die Dropdown-Menüs werden nun korrekt ausgerichtet
  • Die Mediabox unterstützt nun wieder .mp4-Dateien
  • Hochgeladene Bilder werden jetzt korrekt verkleinert (maximale Abmessungen)
  • Die E-Mail-Adresse aus dem Startpunkt wird als Absender von Formularen verwendet
  • Die IDNA-Bibliothek (URLs mit Umlauten) ist nun mit PHP 5.2 kompatibel
  • Das FAQ- und Kommentarmodul geben keinen Fehler mehr aus wenn sie leer sind
  • Der Erweiterungsmanager überspringt keine Module mehr bei der runonce.php-Abfrage

Alle weiteren Anpassungen finden sich wie immer im Changelog.

Contao 2.11.1 ist da

Nach relativ kurzer Zeit wurde am 09.03. ein Bugfix-Release veröffentlicht, das die Stabilität des 2.11-Zweigs verbessert. Die Nachrichtenliste und andere dynamische Seiten mit Seitenmenü wurden bisher nicht gecacht oder für die Suche indiziert und wurde nun mit dem neuen Release nachgebessert. Einige kleine Bugs wie z. B. falsch konvertiere absolute URLs durch den CSS-Combiner oder Fehler in der Handhabung des neuen URL-Formats (domain.com/en/page.html) wurden behoben. Eine Liste aller Änderungen findet sich wie immer im Contao-Changelog.

Contao 2.11.0 verfügbar

Am 15.02.2012 wurde das Contao 2.11.0 Release veröffentlicht. Das Release ist das erste für die ein “Long-Term-Support” gilt, also mindestens 18 Monate gepflegt wird. Es wurde kräftig an Contao gearbeitet. Die wichtigsten Änderungen sind nachfolgend beschrieben:

  • Stylesheets können nun in die kombinierte CSS-Datei eingefügt werden:
    $GLOBAL['TL_CSS'][] = 'mystyle.css|screen|static';
  • Es gibt einige neue Hooks:
    • sqlCompileCommands
    • sqlGetFromFile
    • sqlGetFromDB
    • getCookie
    • getRootPageFromUrl
  • File-/Folder-Klasse: Die Klassen “File” und “Folder” haben die neuen Funktionen “chmod()” und “copyTo()” erhalten.
  • Die Anonymisierung von IP-Adressen kann im Backend kon­fi­gu­rie­rt werden.
  • Google-Webfonts können über ein neues Feld im Seitenlayout eingebunden werden, die dann als externes Stlyesheet geladen werden.
  • Erweiterte Optionen zur Bildverkleinerung
  • Bei den Backend-Passwörtern kann die Änderung des Passworts erzwungen werden.
  • Es wurden alle externen Plugins aktualisiert.
  • Die URLs der Seiten können nun auch in der Form domain.tld/de/ bzw. domain.tld/[Ländercode]/ dargestellt werden. Dazu gibts auch einen neuen Sprachenwechsler.
  • Globale Stylesheet-Variablen: In den Theme-Einstellungen können globale Variablen definiert werden, die in den CSS-Definitionen verwendet werdne können.
  • Verbessertes FAQ-Modul, insbesondere das Rechtesystem.
  • News-Archiv und News-Leser auf derselben Seite: Das ist eine super Sachen. Es müssen nun nicht zwei Seiten mit einem Archiv und einem Leser erstellt werden (man kann auch Überssicht und Detailseite dazu sagen), sondern es kann eine Seite für beides verwendet werden… klasse.
  • Das CSS-Framework kann nun auch im Backend in den Einstellungen deaktiviert werden.
  • Request-Token-System: Es gab immer wieder Probleme mit dem Request-System, wenn der Nutzer die Browser-Funktion “vor” bzw. “zurück” verwendet hat. Das Token ist nun für eine Session und nicht für ein Request gültig.
  • Einen Safemode für Contao: Third-Party-Er­wei­te­run­gen werden nicht geladen, wenn der Mode aktiv ist. Wird auch bei einer Contao-Aktualisierung verwendet, damit eventuell fehlerhafte Erweiterungen die Stabilität des Systems nicht beeinträchtigen.
  • Systemnachrichten: Es gibt ein paar neue Funktionen, um Systemmeldungen im Backend anzuzeigen.
  • Einen neuen Inserttag {{page}}

Ein Update von Contao 2.10 auf 2.11 funktionierte problemlos.

Moduleinstellungen unter Contao

Während der Modulentwicklung kommt man schnell an den Punkt, wo man verschiedene Einstellungen zu einem Contao Modul hinterlegen möchte. Das kann eine Weiterleitungsseite sein, ein Text oder ein x-beliebiger Wert aus einem Auswahlfeld oder ähnliches. Jeder Eintrag in den Modulen einer “Theme” entspricht einem Datensatz in der Tabelle tl_module. Dort werden auch alle Einstellungen zu einem Modul hinterlegt.

Contao tl_module Tabelle

Auszug aus der Tabelle tl_module

Um eine dieser bestehenden Spalten in einem Modul nutzen zu können, muß man in der DCA eine Zeile ergänzen:

$GLOBALS['TL_DCA']['tl_module']['palettes']['mymodule'] = '{title_legend},name,headline,type,customLabel';

Schon steht im Modul ein einfaches Textfeld zur Verfügung. Da diese Einstellung bereits von Contao verwendet wird, gibt es bereits eine Felddefinition und eine Übersetzung für die Einstellung customLabel. Damit wir keine neue Spalte in der tl_module anlegen müssen, können wir das Feld für etwas anderes “mißbrauchen”. Ich will nur demonstrieren, wie man Änderungen vornehmen kann, die im Prinzip auch bei einem neuen Feld notwendig sind.

Die Übersetzung wird beispielsweise folgendermaßen gesetzt bzw. überschrieben:

$GLOBALS['TL_LANG']['tl_module']['customLabel']=array('View', 'Please select a view type.');

Den Feldtyp können wir folgendermaßen beeinflussen:

$GLOBALS['TL_DCA']['tl_module']['fields']['customLabel'] = array(
  'label' => &$GLOBALS['TL_LANG']['tl_module']['customLabel'],
  'inputType'  => 'select',
  'options'    => array(1=>'Overview', 2=>'Detail')
);

Somit haben wir jetzt folgendes im Backend erreicht:

Angepasstes Backend-Modul

Das angepasste Backend Modul mit neuem Feld

Eines sollte jedoch klar sein, wenn man bestehende Felddefinitionen verändert: Auch in den Modulen, in den die Einstellung bereits verwendet wird, kann unter Umständen die Veränderung greifen. Das wiederum hängt von der Reihenfolge ab, wie die Module abgearbeitet werden (alphabetisch).

Contao auf 2.10.0 updaten

Die Version 2.10.0 beinhaltet sehr viele Änderungen. Bei einem manuellen Update ist vor allem die Änderungen im Template-System zu beachten. Die Endung *.tpl sollte nicht mehr verwendet werden. An dessen Stelle treten die Endungen *.xhtml oder *.html5. Um eine bestehende Installation auf 2.10.0 zu aktualisieren, sollte man also den Contao-Core entpacken und in das Contao Verzeichnis kopieren (bestehende Dateien werden überschrieben). Anschließend kann man z. B. unter Windows mit del /S *.tpl alle alten Template-Dateien rekursiv löschen. Unter Linux heißt der Befehl rm -Rf *.tpl. Bitte diese Befehle mit Vorsicht verwenden, die Dateien werden rekursiv gelöscht. Also vorher unbedingt ein Backup machen.

Dieses Vorgehen sollte man nur wählen, wenn keine Erweiterungen verwendet werden (da diese noch mit den alten *.tpl Dateien arbeiten).

Natürlich muß anschließend die Datenbank mit dem Installationstool aktualisiert werden.

Ich hatte auch Probleme mit dem CSS-Framework. Die Hintergrundbilder wurden teilweise nicht korrekt eingebunden (Pfad im CSS war nicht korrekt). Nachdem ich im Backend die CSS-Definitionen nochmals abgespeichert hatte, wurden die Dateien neu generiert und der Fehler war behoben.

Wer eigene Extensions entwickelt kann leider nicht einfach seine Template-Dateien auf die Endung .xhtml umbenennen, da im Backend zwingend die Endung *.html5 erwartet wird. Um jetzt nicht alle Template-Dateien doppelt zu pflegen, hat man zwei Möglichkeiten:

  1. Im Modul wird die Methode generate() abgeleitet und im Fall, dass wir uns im Backend befinden, wird einfach ein Text ausgegeben:
    public function generate()
    {
      if (TL_MODE == 'BE')
        return 'Mein Modul';
      return parent::generate();
    }
  2. Man kann auch wahlweise das Format xhtml erzwingen.
    protected function compile()
    {
      // force xhtml format
      $this->Template->setFormat('xhtml');
      ...
    }

Außerdem muß man seine Formulare anpassen, da nun mit einem Request-Token-System gearbeitet wird. Wie die Formulare anzupassen sind, ist auf der Contao-Seite beschrieben.

Contao in verschiedenen Systemumgebungen

Wer in Contao eine Erweiterung programmiert macht das in der Regel auf einem lokalen Rechner. Sobald die Erweiterung einen halbwegs stabilen Stand erreicht hat, kann diese bereits auf einem Testsystem geprüft werden (ggf. auch durch externe Tester). Anschließend wird die Extension auf dem Live-System in Betrieb genommen. Die Extension hat somit verschiedene Umgebung durchlaufen: Development, Testing und Live. Um Contao in diesen Umgebungen zu betreiben hat sich für mich folgendes Vorgehen ergeben: Continue reading

Contao VM (Virtuelle Maschine)

Kaum zu glauben, aber es gibt tatsächlich eine vorkonfigurierte VM für Contao. Auf der VM läuft ein Ubuntu und die Zend Server Community Edition. Als Virtualisierungsanwendung kommt VirtualBox zum Einsatz. Seit Dezember 2010 wurde die VM nicht mehr aktualisiert, aber eine Contao Installation ist ziemlich schnell auf den neusten Stand gebracht. Wer also den ca. 2,6 GB großen Download nicht scheut, der hat schnell eine funktionsfähige Entwicklungsumgebung.

Als Alternative bietet sich natürlich auch eine einfache XAMPP Installation an, auf der man Contao selbst installiert.