Zum Newsletter anmelden

TYPO3 Contexts: Mobile und mehr

  Christian     Jun 21, 2013

Der Bedarf, Inhalte für mobile Endgeräte gesondert verwalten und darstellen zu können, steigt zunehmend. Als TYPO3 Enterprise Spezialist haben wir eine Multichannel-Lösung für TYPO3 entwickelt, mit der sich Inhalte nicht nur je Endgerättyp (z.B. PC, Tablet, Smart Phone, TV, Google Glasses...), sondern auch über andere Kriterien und Kanäle (z.B. Herkunft, Standort, Domain u.a.) steuern lassen.

Die Erfahrung hat gezeigt, dass sich die Anforderungen an mobile Websites grundsätzlich in zwei Bereiche unterteilen lassen: In die Darstellung einerseits und die Verwaltung und Auslieferung von Inhalten andererseits.

Während es für ersteres zwischenzeitlich zuverlässige Technologien – z.B. Responsive Webdesign - gibt, die nicht vom Content Management oder Shopsystem abhängen, sind die Verwaltung und Auslieferung von Inhalten dagegen direkte Anforderungen an das jeweilige Content Management System: Hierbei sollen Redakteure festlegen können, welche Inhalte für welche Geräte ausgeliefert werden sollen und das System muss anhand des Gerätes entscheiden, welche dieser Inhalte es auszuliefern hat.

Es galt also, eine Lösung als TYPO3-Erweiterung zu entwickeln, die dies ermöglicht.

PC, Tablet, Smart Phone, TV, Glasses – was kommt als nächstes?

Die Antwort vorweg: Einiges sicherlich. Zum einen ist es anhand der rasanten Entwicklung der letzten Jahre abzusehen, dass in naher Zukunft weitere Endgerätetypen auf den Markt kommen werden oder schon sind und nicht mehr lange brauchen, bis sie in den Marketing-Abteilungen eine Rolle spielen. Zum anderen gibt es zahlreiche Hersteller und Varianten von Smart Phones und Tablets - was manchen dazu verführen könnte, zwischen diesen unterscheiden zu wollen.

Folglich ergibt sich eine zusätzliche Anforderung an unsere neue Erweiterung: Sie muss ermöglichen, dass beliebige viele Geräteklassen nach vom Kunden vorzugebenden Kriterien wie bspw. Auflösung oder Touch Screen verwaltet werden können.

Bei diesen “vom Kunden vorzugebenden Kriterien” klingelte etwas: Hatten wir es nicht häufig erlebt, dass Kunden Inhalte abhängig von verschiedenen Bedingungen aus- bzw. eingeblendet sehen wollten – vom Vorhandensein eines bestimmten GET-Parameters etwa oder von der geografischen Lage des Besuchers? Diese Anforderungen sind den oben genannten bis auf die Geräteerkennung sehr ähnlich und es lag daher nahe, diese ebenfalls mit der neuen Erweiterung zu verwirklichen und sie so universeller, als TYPO3 Multichannel Extension anzugehen.

Bei der Recherche nach bestehenden Lösungen stießen wir auf das Drupal-Context-Modul und damit den Gedanken von Kontexten, die frei definierbar sein können und von denen Datensätze unmittelbar abhängen.

Die Erweiterung

Im Sinne der Einfachheit und Granularität - und weil wir nicht wissen, welche Kriterien morgen benötigt werden - entschieden wir uns dafür, die verschiedenen Features auf mehrere Erweiterungen zu verteilen.

Die Erweiterung contexts (Dokumentation) stellt dabei die zentralen Funktionalitäten bereit: die Verwaltung von Kontexten, die Steuerung von Datensätzen anhand von Kontexten und eine API für andere Erweiterungen.

Grundlegend funktioniert die Erweiterung so, dass vom Administrator der Seite Kontexte mit verschiedenen Kriterien angelegt werden. Diese erscheinen dann im Tab “Kontexte” der Datensätze von kontextgesteuerten Tabellen (standardmäßig Seiten und Inhaltselemente). In diesem Tab läßt sich nun die Sichtbarkeit in Abhängigkeit vom Kontext einstellen.

Vor der Ausgabe im Frontend werden alle Kontexte überprüft. Passen dabei die Kriterien eines oder mehrerer Kontexte auf die Anfrage, werden diese aktiviert und deren (Sichtbarkeits-) Regeln auf die gesteuerten Datensätze angewendet.

Kontexte

Die Kontexte werden ähnlich Domains als Datensätze in der Wurzelebene der Website angelegt. Der Typ eines Kontexts entscheidet darüber, welche Kriterien zur Verfügung stehen und wie sie im Frontend ausgewertet werden.

Die möglichen Typen werden über die API von anderen Kontext-Erweiterungen registriert - contexts selbst bringt bereits die Typen Domain, GET-Parameter, IP und Logische Kontext-Kombination mit. Kontext-Kombinationen ermöglichen es, beliebige Kontexte mittels boolescher Ausdrücke miteinander zu kombinieren und so neue Kontexte auf basis von Kontext-Kombinationen zu definieren.

Mobile Kontexte mit contexts_wurfl

Die ursprüngliche Anforderung - Seiten und Seiteninhalte in Abhängigkeit vom Endgerät des Besuchers verwalten und ausgeben zu lassen - haben wir mit der Kontext-Erweiterung contexts_wurfl (Doku) umgesetzt.

Diese arbeitet mit der WURFL-Datenbank, welche Informationen über die Eigenschaften von derzeit über 4300 mobilen Endgeräten enthält. Neben einem Modul für den Import dieser Datenbank sowie zum Testen von User-Agent-Abfragen stellt contexts_wurfl den Kontext-Typ Device properties bereit, mit dem sich Kriterien für Geräteeigenschaften festlegen lassen.

So lassen sich alle mobilen Endgeräte oder nur kabellose Geräte, Tablets, Smart Phones oder SmartTVs erkennen und Bildschirmauflösungen, Hersteller und Browser eingrenzen.

Zusammen mit der Möglichkeit, mehrere Kontexte für verschiedene Anforderungen anzulegen und diese miteinander zu verknüpfen, kann man die Sichtbarkeit von Inhalten bei beliebigen Endgeräte steuern.

Ortsgebundene Kontexte mit contexts_geolocation

Die IP-Adresse eines Nutzers gibt oftmals Auskunft über seinen physischen Standort: Mittels einer Geo-IP-Datenbank lassen sich Geokoordinaten (Längen- und Breitengrad) zu einer IP-Adresse bestimmen.

Mit contexts_geolocation (Doku) stellen wir eine Extension zur Verfügung, mit der man Seiteninhalte anhand der Position des Nutzers anzeigen und verstecken kann: Zum einen auf der Ebene von Kontintenten und Ländern, zum anderen kann man auf einer Karte eine beliebige Position wählen und den gewünschten Umkreis angeben.

Benutzer innerhalb des festgelegten Areals bekommen dann den Kontext zugewiesen, der die Seiten und Seitenelemente sichtbar macht oder verbirgt. Die Genauigkeit der Nutzerkoordinaten hängt von der jeweiligen Datenbasis ab; die freie geoip-Datenbank von Maxmind löst die meisten IPs auf Großstadt- und Bundeslandebene korrekt auf. Die kommerzielle Variante erhöht die Genauigkeit deutlich.

Was lässt sich wie steuern?

Die Grunderweiterung contexts ist so umgesetzt worden, dass die kontextabhängige Steuerung über eine API für beliebige Tabellen ermöglicht werden kann, die über das TCA konfiguriert werden.

Dabei können frei definierbare Einstellungen als Checkbox-Felder festgelegt werden, die dann für jeden Kontext ein- bzw. ausgeschaltet werden können - contexts selbst registriert die Einstellungen “Sichtbarkeit” und “Sichtbar in Menüs” für Seiten sowie “Sichtbarkeit” für Inhaltselemente.

Bei der Registrierung der Einstellungen lässt sich definieren, ob die Einstellung als sogenanntes enableField in die SQL-WHERE-Abfragen über die TYPO3-API einbezogen werden soll. In diesem Fall werden Datensätze, die wegen der aktuelle Kontextkombination deaktiviert sind, gar nicht erst aus der Datenbank ausgelesen. Dies wird bei den Sichtbarkeitseinstellungen angewendet.

Desweiteren lässt sich für jede Einstellung festlegen, ob die Kontexte, in denen die Einstellung explizit aktiviert oder deaktiviert wurde, zusätzlich zur relationalen Einstellungstabelle auch in entsprechenden Feldern in der Tabelle selbst gespeichert werden sollen, um Abfragen zu sparen - das Anlegen dieser Felder übernimmt contexts dann automatisch. Um die Einstellungen bereits abgerufener Datensätze zu prüfen, steht ebenfalls eine API-Methode zur Verfügung, die z.B. von contexts für die “Sichtbar in Menüs”-Einstellung in einem tslib_menu-Hook genutzt wird.

Was gibt es für Alternativen?

TYPO3 wäre natürlich nicht TYPO3, wenn es für die anfangs genannten Anforderungen nicht wenigstens eine Lösungsmöglichkeit bieten würde. So gibt es auch zwei Ansätze, die sich ohne Extensions realisieren lassen:

Zum einen können pro Geräteklasse wie z.B. Tablet, Smart Phone oder PC jeweils ein Seitenbaum gepflegt und dem Besucher nach einer Geräteerkennung entsprechend angezeigt werden. Der Vorteil dabei ist, dass sich die Seiten- und Inhaltstruktur sehr individuell auf die Geräteklassen zuschneiden lässt – nachteilig ist allerdings, dass die Inhalte zwangsläufig doppelt gepflegt werden müssen, was entsprechend hohen redaktionellen Aufwand bedeutet.

Zum anderen kann das Mehrprachigkeits-Feature von TYPO3 so genutzt werden, dass die Geräteklassen als Sprachen eingepflegt und die Inhalte entsprechend gesteuert werden. Vorteilhaft an dieser Lösung ist, dass damit auf eine sehr ausgereifte Funktionalität ohne redundante Pflege zurückgegriffen wird – der Nachteil dabei ist allerdings, dass diese nicht für diesen Einsatzzweck bestimmt ist, was sich dann rächen kann, wenn man beabsichtigt, mehrere Sprachen einzusetzen.

Jenseits von diesen nativen Lösungsmöglichkeiten gibt es noch eine seit mehreren Jahren nicht mehr gepflegte WURFL-Erweiterung, mit der sich die Darstellung mit TypoScript-Bedingungen auf Geräte abstimmen lässt.

Zum Schluß gibt es noch die kommerzielle – also kostenpflichtige und nicht Open Source – Erweiterung t3mobile, mit der sich allerdings nur Inhaltselemente und nicht Seiten endgeräteabhängig verwalten lassen. Leider ist sie auf zwei Geräteklassen (Tablet und Smart Phone) beschränkt.

Bei anderen CMS wie Drupal, Joomla, Liferay, Plone oder Magnolia ist die Lage vergleichbar, wenngleich wir bei Extensions wie Context, Mobile Tools oder Mobile Device Rules auf einige interessante Ansätze gestoßen sind, die wir in unsere Anfordungen aufgenommen haben.

Schlußendlich wurde aber klar, dass wir eine Erweiterung entwickeln werden müssen, die den Anforderungen – der einfachen aber flexiblen Pflege der Inhalte ohne doppelten Seitenbaum – gerecht wird. Wir denken, dass uns das mit den vorliegenden Erweiterungen, die im Übrigen mit TYPO3 4.5, 4.6, 4.7 und 6.1 kompatibel sind, gelungen ist.

Wie geht es weiter?

Wir haben die Erweiterungen vor kurzem im TER und im TYPO3-Forge veröffentlicht und freuen uns auf Euer Feedback, Verbesserungsvorschläge und Feature-Wünsche, die wir dort gern entgegennehmen! In jedem Fall werden wir die Erweiterungen weiterhin betreuen und ausbauen und in naher Zukunft außerdem ein Demo-System aufsetzen, auf dem die Funktionalität im Back- und Frontend ausprobiert werden kann.

Downloads / Links

Die Extensions sind direkt über den TYPO3-Extensionmanager installierbar.

 

Tags  E-Commerce Netresearch TYPO3

Christian

Von Christian

Kategorien:

alle ansehen

Zum Newsletter anmelden