dynamicinternet Webdesign

Das Blog

Themen, Tutorials sowie Tipps & Tricks über Webdesign, (X)HTML und CSS, Programmierung, WordPress und was uns sonst noch bewegt.

RSS abonnieren

WordPress Widget Layout Experiment

Die Idee dieser Geschichte ist, ein WordPress Theme komplett mit Widgets zu kontrollieren. Sie basiert auf einem Artikel von Andrew Rickman, Frank Bültge hat das Ganze modifiziert und ich habe versucht, dieses Prinzip auf ein YAML-basiertes Layout zu übertragen. Aber nun der Reihe nach:

Die Grundlage dieses Themes ist eine hierarchische Verschachtelung von Widgets. Dabei werden Widget-Container geschaffen, die andere Widgets aufnehmen können. So wie wir es von einem widgetfähigem Theme kennen. Hier ein Screenshot von Frank Bültges Variante:

Screenshot von Franks Widgets

An erster Stelle in dieser Widget-Hierarchie steht der Container Definition Layout. Dafür wird die index.php, welche von WordPress beim Start geladen wird, in einen solchen verwandelt:


<?php get_header(); ?>
<body>
<div id="page_margins">
	<div id="page">
		<?php if ( function_exists('dynamic_sidebar') ) { dynamic_sidebar(1); } ?>
	</div>
</div>
<?php wp_footer(); ?>
</body>
</html>

In der funkions.php wird dann das Widget registriert.


function di_widget_register() {
	if ( function_exists('register_sidebar') ) {
		register_sidebar(array(
			'name' => 'Definition Layout',
			'before_widget' => '',
			'after_widget'  => '',
			'before_title'  => '',
			'after_title'   => ''
		));
// more code
}
add_action('widgets_init', 'di_widget_register', 1);

Für diesen Container werden wiederum Widgets gebaut, mit denen man sich das Layout zusammenstellen kann. Wie das im Einzelnen realisiert wurde, soll hier nicht Bestandteil dieses Beitrags sein, vielleicht schreibt der Frank noch etwas dazu.
Mich interessierte an diesem Experiment vor allem die Praxistauglichkeit, die Grenzen und das natürlich mit einem voll designtem Theme, da Franks Variante sehr spartanisch ist (was ja für diesen Versuch völlig ausreicht). Und da ich ja bekennender YAML Fan bin, habe ich das Theme aus meiner Tutorialserie (zweispaltig mit Inhaltsbereich und Sidebar) benutzt.

Screenshot meiner WidgetsDie Nutzung von YAML für diesen Versuch brachte sofort einige Probleme, die mich einen etwas anderen Weg bei der Erstellung der Widgets einschlagen ließen. Ich glaube aber, das YAML durch die einheitliche Struktur des HTML Quelltextes und der hervorragenden CSS Bausteine sehr gut geeignet ist, ein konfigurierbares Theme zu bauen.
Herausgekommen ist ein Arbeitsabschnitt, bei dem ich die Anzahl der Widgets etwas reduzieren konnte, da ich logische Elemente gleich in die entprechenden Widgets integriert habe. Ihr seht hier einen Screenshot aus der heutigen nightly build von WordPress.
Wie weit sich diese Idee treiben lässt, werde ich die nächsten Wochen sehen, da ich auf alle Fälle weiter daran herumschrauben werde. Alle Interessierten können sich das Theme am Ende des Beitrages downloaden und anschauen. Ich rate allerdings von einem praktischen Einsatz ab. Es ist lediglich zur Ansicht auf einem lokalen System gedacht.

Nach dem nun die gestrige Entwicklereuphorie etwas nachgelassen hat, möchte ich die Sache etwas näher beleuchten.
Ein Nachteil dieses Themes ist, dass man nach Aktivierung erstmal eine leere Seite dargestellt bekommt. So lange, wie die Widget-Container leer sind. Ein weiterer Nachteil sind die zahlreichen Widgets, die nicht unbedingt zur Übersichtlichkeit beitragen. Woher soll ein unbedarfter Nutzer wissen, was ich mir da gedacht habe und wo er die Widgets reintun soll? Dem ersten Teil dieser Frage kann man mit einer ausführlichen Dokumentation begegnen. Was aber, wenn einer das Footerwidget über das Headerwidget schiebt, oder gar keinen Footer haben möchte? Ein zerschossenes Layout ist die Folge. Ich habe bei den Widgets keine Möglichkeit der Kontrolle, ob ein Widget nur in diesen oder jenen Container darf. Jetzt mag zwar der eine oder andere lachen. Wir dürfen aber nicht vergessen, dass wir Themes auch für Menschen entwickeln, die einfach nur bloggen wollen, die keinen Schimmer von Html & Co haben (und auch nicht haben müssen). Ein weiterer Nachteil ist, dass der Loop zu einem Abfragemonster verkommt, da es nur einen Loop in der loop.php gibt und dieser für alle Fälle herhalten muss.

Das heißt natürlich nicht, dass diese Probleme nicht zu lösen sind. Ich habe gerade mal ein paar Stunden investiert und Frank sicher auch nicht viel mehr. Es lohnt sich, weiter daran zu arbeiten, denn so ein konfigurierbares Theme bietet auch eine Menge Vorteile.
Hat zum Beispiel ein Nutzer keinen Bock mehr auf eine rechte Sidebar, ein Klick im Widget und sie ist links angeordnet. Oder er blendet mit einem Klick eine horizontale Topnavigation ein, wenn er ein paar statische Seiten geschrieben hat. Für manche sind solche Änderungen am Themequellcode unüberwindliche Hindernisse.

Wie weit man das jedoch treiben kann und sollte, kann ich im Moment noch nicht sagen. Man muss ja auch nicht alles mit Widgets machen. Denkbar wäre ebenfalls eine Konfigurationsseite und der Einsatz von Widgets.
Der momentane Stand soll zur Diskussion über Sinn und Unsinn dieses Experiments anregen, vielleicht Ideen liefern und es wäre schön, wenn jeder, der sich das Theme einmal ansieht, seinen Senf im Kommentarbereich abgibt.

Download YAML Widgets Theme

2 Kommentare
  1. Grundsätzlich finde ich die Idee gut- ohne es tatsächlich ausprobiert und angeschaut zu haben.
    Ich denke auch schon länger über “zusammenklickbaren” Sites nach.
    Das Problem welches jedoch bleibt ist die Anpassung des Designs: Wie soll denn die Navigation, die ich hin- oder wegklicken kann, genau aussehen, wie breit soll die Sidebar sein etc. ?
    Der Ansatz so etwas mit einem Tool wie dem YAML Builder (der entsprechend erweitert werden müsste) zu gestalten und dem Blog-Betreiber nur noch die Wahl zu lassen gewisse Widgets/Elemente ein oder auszuschalten, scheint mir ein sinnvollerer Weg zu sein. Aber dem Web-Entwickler / Designer ein Tool zu bieten mit dem er verschiedene Varianten zusammenklicken kann, fände ich cool. Der Kunde entscheidet sich schliesslich für eine Version und will im Allgemeinen nicht ständig etwas anderes. Die simple optimierte und “unveränderbare” Version ist ihm dann genug.

  2. Micha sagt:

    @Christian: Ich habe aus diesem Experiment gelernt und bin gerade dabei, ein voll konfigurierbares Theme auf YAML-Basis zu bauen. Ein bischen wie der Builder.Aber das dauert noch etwas, ist ne Menge Arbeit.

Einen Kommentar schreiben