Vorheriger Artikel Nächster Artikel

Mobile Websites mit jQuery Mobile und TYPO3

Aus dem
t3n Magazin Nr. 22

12/2010 - 02/2011

Während zunehmend mehr mobile Endgeräte auf den Markt drängen, fragen sich die Seitenbetreiber zu Recht, ob sie nun für all diese Plattformen eigene Websites entwickeln müssen. Für einige der Plattformen gibt es bereits UI-Frameworks – aber erst jQuery Mobile[1] schickt sich an, alle relevanten Plattformen auf einmal bedienen zu können. Der Artikel zeigt, wie dies genau im Zusammenspiel mit TYPO3 funktioniert.

Bis dato gab es einige User-Interface-Frameworks, die – oftmals auf eine Plattform begrenzt – mit kleinem Aufwand ordentlich aussehende mobile Websites darstellen konnten. Hier ist beispielsweise iUI (iPhone User Interface) [2] oder WebApp.net [3] zu nennen, die die iOS-Plattform bedienen. Mit jQTouch [4] wurde versucht, dies auch auf andere Plattformen auszuweiten – allerdings führte man dies nicht in allen Aspekten konsequent durch.

Eine identische Darstellung von herkömmlichen Websites auf dem iPhone scheitert oft schon an dem zur Verfügung stehenden Platz.
Eine identische Darstellung von herkömmlichen Websites auf dem iPhone scheitert oft schon an dem zur Verfügung stehenden Platz.

Auch wenn viele Website-Betreiber seit dem iPhone versuchen, herkömmliche Webseiten auf mobilen Endgeräten genau so wie auf dem Desktop darzustellen, funktioniert dies nur bedingt – die Displays sind hierfür schlicht zu klein. Davon abgesehen ist eine identische Darstellung auch selten sinnvoll, da sich die mobile Nutzung weitestgehend vom Surfen am Desktop unterscheidet. Man will schnell die wichtigsten Informationen über eine Firma, ein Produkt oder eine Dienstleistung, ohne sich die Finger zu brechen oder sich eine neue Brille kaufen zu müssen.

So kam das jQuery-Team im August 2010 auf die Idee, ihr sehr erfolgreiches JavaScript-Framework speziell für die mobile Welt anzupassen und dabei sämtliche relevanten Endgeräte so zu adressieren, dass ein sinnvolles und ansprechendes User-Interface gewährleistet ist und dieses vor allem auf allen unterstützten Endgeräten identisch aussieht. Der Name für diese Framework-Erweiterung war schnell gefunden – jQuery Mobile.

Am 16.10.2010 erschien die erste voll einsatzfähige Version (zunächst noch als Alpha). Besonders zukunftsweisend ist bei diesem Projekt, dass es mit der Unterstützung von nahezu jedem Hersteller mobiler Endgeräte gestartet ist. Dieser Aspekt ist für eine identische Lauffähigkeit auf allen Geräten von großer Bedeutung.

Erste Schritte mit jQuery Mobile

Im ersten Schritt gilt es, das jQuery-Mobile-Framework herunterzuladen und zu entpacken. Die Dateien gehören in einen Ordner unterhalb des Verzeichnisses „fileadmin/“ der TYPO3-Instanz (für das Beispiel kommt das Verzeichnis „fileadmin/site/mobile/“ zum Einsatz). Das Archiv enthält neben den JavaScript-Dateien auch die benötigten Stylesheets und Bilder im Unterordner „images/“.

HTML

<!DOCTYPE html>
<html>
	<head>
	<title>Seitentitel</title>
	<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css" />
	<script xsrc="http://code.jquery.com/jquery-1.4.3.min.js"></script>
	<script xsrc="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script>
</head>
<body> 

<div data-role="page">

	<div data-role="header">
		<h1>Seitentitel</h1>
	</div><!-- /header -->

	<div data-role="content">
		<p>Hier wird der Inhalt erscheinen.</p>
	</div><!-- /content -->

	<div data-role="footer">
		<h4>Footer</h4>
	</div><!-- /header -->
</div><!-- /page -->

</body>
</html>

Listing 1

Das exemplarische Seiten-Template in Listing 1 greift im Header auf die Möglichkeit zurück, die benötigten JavaScript- und CSS-Dateien über das CDN zu laden. Ob man dies nutzt, bleibt jedem selbst überlassen. Für das Beispiel werden die Dateien später lokal verlinkt.

Im Template wird auch der grundsätzliche Aufbau von jQuery Mobile sichtbar. Die Organisationseinheit einer „Seite“ legt man mit dem HTML5-Attribut „data-role="page"“ fest. Dort enthalten sind zunächst drei Elemente: ein Header (data-role="header"), ein Inhaltsbereich (data-role="content") und ein Footer (data-role="footer").

Letztlich sind mehrere Seiten innerhalb eines Dokuments möglich, die über einen Anker-Link angesprungen werden. Das bedeutet allerdings, dass es (zumindest momentan) keine normalen Anker-Links gibt. Normale Seiten kann man mit einem klassischen Link anspringen – lediglich den Inhalt lädt man vorab per AJAX, um eine Animation der Seite einerseits und eine Ladegrafik während des Ladens andererseits anzuzeigen.

Newsletter

Bleibe immer up-to-date. Sichere dir deinen Wissensvorsprung!

Vorheriger Artikel Zurück zur Startseite Nächster Artikel
24 Antworten
  1. von Dirk Wohlrabe am 14.12.2010 (15:24 Uhr)

    Hallo Patrick, mit großem Interesse habe ich deinen Artikel gelesen und unter http://www.quadromobil.de mal nachgebaut.

    Super Ansätze, jedoch sind noch einige Sachen im Argen. Mit Realurl läuft es leider nicht, da Unterpunkte ohne Layout geladen werden. Templavoila wäre auch als Beispiel interessant gewesen.

    Ein Beispiel für ein funktionierendes Formular wäre super genial.

    Vielleicht kann T3N ja hier noch mal nachlegen, da diese Geschichte meiner Meinung nach, sehr zukunftsträchtig ist und solche Seiten auch redaktionell betreut werden wollen.

    Gruß aus Bad Bergzabern!

    Antworten Teilen
  2. von marcel.birrer.klink.ch am 29.12.2010 (23:07 Uhr)

    Hallo Patrick

    Bin daran, deinen Artikel mit einem Templavoila-Template umzusetzen und beinahe am Ziel. Leider krieg ich die Subnavigation nicht hin wie bei deinem Beispiel von typovision.de - statt dass ein neues Menu mit den Unterpunkten aufgebaut wird, wird die entsprechende Seite in der Hauptnavigation verschachtelt angezeigt (s. mobile Version -> Forschung und Entwicklung). Wie müsste das TMENU TS für die Subnavigation aussehen, resp. wie habt ihr das für typovision.de hingekriegt?

    Beste Grüsse

    Marcel Birrer

    Antworten Teilen
  3. von Dirk Wohlrabe am 04.01.2011 (08:34 Uhr)

    Hey Patrick, bist du schon weiter gekommen, wir haben das gleich Problem? Templavoila funktioniert wie gewünscht, jedoch die Navi nicht.
    Gruß

    Antworten Teilen
  4. von Benny am 12.07.2011 (10:16 Uhr)

    Hallo Zusammen,
    ich hatte mir nachträglich die Ausgabe 22 wegen diesem Thema gekauft. Doch leider komme ich an einer Stelle nicht ganz weiter. Und zwar wenn ich die Links zu den JQuery-Files einsetzte. Wenn ich die links von der JQuery Seite einfüge erhalte ich nur eine weiße Seite, wenn ich die Files auf meinem Server platziere werden diese gar nicht ausgelesen und der Inhalt wird normal angezeigt. Also die Navigation in einer ganz normalen Liste. Die eigene CSS beispielsweise wird jedoch geladen. Vielleicht kann mir einer einen heißen Tip geben. Schon mal besten Dank und liebe Grüße.

    Antworten Teilen
  5. von Patrick Lobacher am 18.07.2011 (09:36 Uhr)

    @Benny: Das ist sehr schwer zu sagen - könntest Du das ganze mal zippen und mir schicken? Dann schaue ich mir das gerne mal an. patrick.lobacher [AT] typovision [DOT] de

    Patrick

    Antworten Teilen
  6. von wapplersystems am 02.08.2011 (18:14 Uhr)

    Ich habe hatte das Ganze mal in Verbindung mit TemplaVoila ausprobiert. http://m.wapplersystems.de/
    Das macht bei Websites Sinn, deren Inhalte sich selten ändern. Ich beschäftige mich daher seit einigen Tagen mit dem Gedanken, alles mittels Responsive Webdesign zu lösen. jQuery Mobile könnte da natürlich bei mobile devices helfen, aber habe leider noch nicht eine gute Kombinationsmöglichkeit gefunden.

    Antworten Teilen
  7. von Tobias am 15.08.2011 (20:16 Uhr)

    Hallo zusammen

    Ich habe eine mobile Version unserer Website mit JQuery Mobile umgesetzt. Die TYPOSCRIPT Page Definition (Menüs, Content, etc) für die mobile Seite wird auch über [userFunc = user_isMobile] ...[end] angesteuert. Die Einbindung der CSS und JS Dateien funktioniert analog.

    Das CSS und JS wird immer richtig geladen, allerdings habe ich hin und wieder das Problem, dass auf dem mobilen Browser trotzdem der HTML Content für die normale Seite geladen wird. Ich gehen davon aus, dass das ein Cache Problem ist. Hat jemand damit Erfahrungen gemacht?

    Gruss Tobias

    Antworten Teilen
  8. von Kay Zoller am 18.08.2011 (11:26 Uhr)

    Hallo zusammen

    Ein sehr interessanter Artikel, den ich gerade versuche umzusetzten. Leider scheitert es bei mir schon bei der Einbindung der Funktion bei der Zeile

    "require_once('fileadmin/site/mobile/user_mobile.php');"

    Sobald ich diese Zeile in der localconf.php stehen habe, erhalte ich überhaupt keine Anzeige mehr. Weder im Backend, noch im Frontend. Es erscheint einfach eine weisse Seite ohne Quellcode...

    Weiss vielleicht jemand Rat?

    Grüsse
    Kay

    Antworten Teilen
  9. von Tobias Felbecker am 18.08.2011 (12:39 Uhr)

    Hallo Kay

    Versuche es mal mit require_once('../fileadmin/site/mobile/user_mobile.php');
    oder kopiere die user_mobile.php direkt ins typo3conf Verzeichnis zur localconf Datei und binde die Datei mit require_once('user_mobile.php'); ein

    Gruss Tobias

    Antworten Teilen
  10. von Kay Zoller am 18.08.2011 (13:47 Uhr)

    Danke Tobias

    Hat leider keine Wirkung gezeigt. Beide Seiten (Frontend und Backend) bleiben weiss. Kann das was mit der Extension "realurl" zu tun haben?

    Antworten Teilen
  11. von Kay Zoller am 19.08.2011 (09:13 Uhr)

    Problem gelöst... Ursache waren zwei Punkte:

    1. Mein Fehler: in der Pfadangabe hatte ich anstelle user-mobile.php user_mobile.php geschrieben

    2. Funktioniert hat es allerdings erst mit der Angabe "require_once(PATH_site.'/fileadmin/mobile/user-mobile.php');"

    Ich bedanke mich für die Unterstützung und entschuldige mich für meinen Fehler.

    Nochmals herzlichen Dank für das ausführliche Tutorial.

    Viele Grüsse
    Kay

    Antworten Teilen
  12. von Jens am 01.09.2011 (13:20 Uhr)

    Hallo zusammen,

    eigentlich funktioniert der Nachbau recht problemlos, Allerdings wenn ich die Seite auf meinem Iphone 4 anschaue, sind alle Elemente zu klein. (Header, Navigation, Text, wirken als ob Sie 50 % zu klein wären) An den CSS scheint es nicht zu liegen, da ich andere Seiten mit exakt gleichen CSS normal anschauen kann. Den Text kann ich zwar auf 200% setzen, womit die richtige Größe erreicht wird, aber ist ja erstmal nicht Sinn der Sache und die anderen Elemente (navigation etc.) wachsen ja nicht mit. Woran kann es liegen?

    Gruß
    Jens

    Antworten Teilen
  13. von Jens am 01.09.2011 (17:00 Uhr)

    ...hat sich erledigt, hat sich ein anderes Script untergemischt :-)

    Gruß

    Jens

    Antworten Teilen
  14. von haehnchen am 08.11.2011 (21:10 Uhr)

    falls wer noch ein fertiges TYPO3 Template inklusive Typoscript und co. sucht:
    http://www.espend.de/artikel/jquery-mobile-mit-typo3-als-html5-template.html

    Antworten Teilen
  15. von cbinger am 11.11.2011 (16:54 Uhr)

    Hallo,

    ich habe dasselbe Problem wie Kay Zoller, allerdings hilft bei mir der oben angewandte Lösungsweg nicht. Habe alle vorgeschlagenen Varianten durchprobiert.
    Einmal mit der user_mobile.php direkt im typo3conf Verzeichnis, aber auch mit der Pfadangabe "require_once(PATH_site.'/fileadmin/mobile/user-mobile.php');" und gleichzeitiger Umbenennung der user_mobile-php in user-mobile.php.
    Sobald ich etwas in die localconf.php eintrage, wird mein Browserfenster weiss.

    Gruß

    Antworten Teilen
  16. von Carsten am 16.12.2011 (23:17 Uhr)

    Habe das Tutorial ausprobiert, und finde die Möglichkeiten super,


    Ich habe nur genau das gleiche Problem, dass auf dem iPhone die Schriften viel kleiner angezeigt werden...


    Gruß
    Carsten

    Antworten Teilen
  17. von andrey am 21.12.2011 (08:36 Uhr)

    Nichts gegen typovision und Patrick Lobacher, aber ihr wisst schon die Bedeutung von "Digital Native"? Es gibt nichts schlimmeres als jemanden der alles kann und irgendwie nichts richtig ...

    Antworten Teilen
  18. von lizzy am 09.01.2012 (21:03 Uhr)

    Hallo Patrick,
    ich wollte anhand deines Beispiels die Sache etwas umbauen und einen eigenen Seitenbaum für die Mobilseiten erstellen - das müsste ja im Prinzip ähnlich funktionieren. In der Condition mache ich einen meta.refresh auf die Subdomain, das klappt auch soweit.
    Nun setze ich dein Typoscript in das Root-Template der Subdomain und habe zwei Probleme:
    mit doctype = schmeißt er mir alle html-Tags im Dokument raus, es bleiben nur die Kommentare im Template - File und die richtig "ersetzten" Marker. Aber kein head, kein body....

    und das andere Problem (wenn ich den doctype erstmal nicht setze): im Template werden die div-Tags nicht richtig übernommen: data-role="header" usw. wird einfach gelöscht, es bleiben nur die -Tags ohne Attribute. Alles andere wird korrekt eingebunden...
    Typo3 Version 4.5.10
    Da scheint irgendwas grundlegendes schief zu laufen... Hast du eine Idee?

    Antworten Teilen
  19. von lizzy am 09.01.2012 (21:07 Uhr)

    ups, jetzt hat es die html-Tags im Kommentar verschluckt:

    ich beziehe mich auf die Zeile doctype = !Doctype html (in eckigen Klammern)

    Antworten Teilen
  20. von lizzy am 09.01.2012 (21:46 Uhr)

    es hat sich erledigt, es lag der Extension qcom_htmlcleaner, nach der Deinstallation funktioniert alles tadellos...
    gruß und dank

    Antworten Teilen
  21. von Patrick Lobacher am 22.01.2012 (16:24 Uhr)

    Hi Lizzy,

    super, dass es jetzt wieder funktioniert... wenn noch Probleme auftreten sollten, dann melde Dich einfach!

    VG und einen schönen Sonntag noch,
    Patrick

    Antworten Teilen
  22. von besucher80 am 30.03.2012 (08:59 Uhr)

    Hallo,toller Beitrag. Aber eine Sache bleibt mir noch ein Rätsel.Ich habe auf meiner Hauptseite einige Extensions die binden JS und CSS Dateien in den Header ein z.b. tx_jfmulticontent, t3sjslidernews etc. Wie kann ich das denn nun auf der mobilen unterbinden? Die sollen da ja nicht eingebunden werden. Habt ihr dazu einen Tipp? Danke

    Antworten Teilen
  23. von jurgen.maier.908 am 24.09.2012 (11:18 Uhr)

    hi,

    habe mit dieser Anleitung unsere Mobile Anpassung umgesetzt.
    Danke für die Anleitung.

    Gibt es die Möglichkeit mit dieser Umsetzung auch einen "Zur Desktop Version" Button einzubauen?

    Antworten Teilen
  24. von matschilling am 19.10.2012 (17:42 Uhr)

    Hi, mich würde noch interessieren wie ich bei dieser Version dem User einen Link zur "Vollansicht" der Seite anbieten könnte.

    Antworten Teilen
Deine Meinung

Bitte melde dich an!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Alle Hefte Jetzt abonnieren – für nur 35 €

Kennst Du schon unser t3n Magazin?