Die diversen Wordpress-Plugins, die handytauglichen Versionen eines Blogs produzieren können, gefallen mir alle nicht so recht. Entweder hatte man zu wenig Möglichkeiten bei der Gestaltung des Outputs oder die Plugins verlangen, dass man gleich ein ganz neues Theme für die Mobil-Version anlegt – das ist mir zu viel Arbeit und auch reichlich unpraktisch. Außerdem sollte ein gut gemachtes HTML-Template so oder so weitgehend mobiltauglich sein, man müsste nur einen anderen Stylesheet laden und vielleicht hier und da Kleinigkeiten ausblenden.

Und weil das kein vorhandenes Plugin so richtig auf die Reihe bekam, habe ich selbst etwas programmiert, basierend auf dem alten Mediatyping-Artikel von Dave Shea. Das Plugin stellt Funktionen zur punktuellen Umgestaltung eines Themes zur Verfügung. Ein nahe liegendes Beispiel:

<?php if($mediatype->isMobile()): ?>
	<link rel="stylesheet" href="mobile.css" />
<?php else: ?>
	<link rel="stylesheet" href="screen.css" />
<?php endif; ?>

Von solchen Konstruktionen braucht man pro Theme um die 2 oder 3 Stück um es schön handytauglich zu machen. Wie bei Dave Sheas Vorlage kann man hier auch der Benutzer einerseits per Link zwischen den Styles für die verschiedenen Ausgabegeräte wechseln, andererseits wird beim erstmaligen Aufruf der Seite per Browsersniffing (ja ja, ich weiß …) ein Medientyp vorausgewählt. Ausprobieren kann man das Plugin schon mal hier.

Das Problem: ich habe keine Ahnung, wie aktuell die Browser-Liste von Mr. Shea ist. Deswegen die Frage an die Mobil-Fachleute … fehlt in diesem Array hier was wichtiges?

public $mobileAgents = array(
	'Android',
	'Blackberry',
	'Blazer',
	'Fennec',
	'Handspring',
	'iPhone',
	'iPod',
	'Kyocera',
	'LG',
	'Motorola',
	'Nokia',
	'Palm',
	'PlayStation Portable',
	'Samsung',
	'Smartphone',
	'SonyEricsson',
	'Symbian',
	'WAP',
	'Windows CE'
);

Der Vergleich mit dem User-Agent erfolgt mittels stripos(), d.h. die Einträge in der Liste brauchen nur (möglichst eindeutige) Teile von Handybrowser-Agentstrings zu sein.

Falls irgendwer auch noch Vorschläge für TV-Geräte hat, da gibt es sicher auch noch mehr als das hier:

public $tvAgents = array(
	'Nintendo Wii',
	'Playstation 3',
	'WebTV'
);

Falls Interesse besteht, werde ich irgendwann diese Woche das Plugin dann fertig machen und zum Download bereitstellen.