Ich habe wenig Erfahrung mit CMSs wie Joomla, Drupal oder eben ProcessWire. Bei meinen Projekten braucht man sowas nicht und Serendipity will ja explizit kein CMS sein. Von daher ist es kein Wunder, dass ich auf Matthias Empfehlung hörte und ProcessWire zuerst anschaute, als ich jetzt doch mal eins brauchte. Ich bin dabei geblieben, und bin tatsächlich etwas begeistert von dem System.
Dabei ist das verwunderlich. Zum einen war meine ursprüngliche Vorstellung, dass ich mir ein fertiges Design nehme und das entsprechend meinen Vorstellungen abändere. Doch für ProcessWire fand ich überhaupt keine passenden Designs. Und das mitgelieferte war zwar halbwegs ansehnlich, aber es war nicht dahin zu bringen, wo die Seite am Ende hin sollte. Dann die technische Seite: PHP, Apache und MySQL - klassischer und unflexibler geht es nicht. Dazu kommt ein Template-System, das reines PHP statt einer geeigneten Templatesprache nutzt.
Obwohl mich auch Processwire nicht überzeugt hat, dass PHP für Templates nicht eine schlechte Idee sind, ist es genau dieses Template-System, was ich so toll fand. Denn Processwire ist nicht wegen genialem Code oder der Performance oder irgendwelchen internen Architektursachen toll. Es ist toll, weil es ein einfaches und mächtiges Konzept umsetzt, mit dem ich komplett frei meine Seite zusammenbasteln, dann ein komplett eigenes Design draufklatschen und dem Kunden trotzdem genug Struktur geben kann, dass er mit der Seite zurechtkommen sollte.
Jede Seite im Frontend ist ein Objekt namens Seite, bzw Page. Eine Page hat ein Template, und Templates haben Felder. Felder können verschiedenen Templates zugewiesen werden, ein Beispiel für eine Feld wäre eine Emaileingabe oder eine Liste von Bildern - sie sind also wiederverwendbar. Der Nutzer kann dann im Backend den Inhalt der Felder pro Seite(!) konfigurieren, und der per Hand zu schreibende PHP-Code des Templates kümmert sich darum, wie diese Inhalte dargestellt werden. Zusammen mit dem unschätzbar nützlichen Repeater-Modul, mit dem man mehrere Felder zusammenfassen und vom Nutzer vervielfältigen lassen kann, ist so jede denkbare Struktur konstruierbar.
Dazu kommt die API, ohne sie würde das Konzept nicht halb so gut funktionieren. Im Template hat der Programmierer Zugriff auf eine Sammlung von Funktionen und Objekten, mit denen nicht nur auf die Attribute und Funktionen und damit die Inhalte der Felder zugegriffen werden kann, sondern mit der auch andere Pages und Objekte aufgerufen werden können, und das mithilfe zumindest ein bisschen jQuery-ähnelnden Selektoren.
Wie gesagt, ich habe nicht viel Erfahrung mit CMSs. Es ist daher möglich, dass ich zumindest teilweise weniger ProcessWire selbst als vielmehr die Grundidee eines CMS toll finde. Doch andererseits weiß ich, dass wenn die anderen Systeme wie ProcessWire funktionieren würden, nicht so oft über Unflexibilität und Wartungshorror oder das fürchterliche HTML geflucht werden würde, das sie generieren. Und auch wenn ein explizit dafür gedachtes Blogsystem wie s9y weiterhin seine Vorzüge hat, ein System wie ProcessWire ist auch für solche Spezialisten eine ernstzunehmende Konkurrenz. Zu leicht ist vorstellbar, dass man damit auch leicht einen guten Blog bauen könnte - ein passendes Modulpaket gibt es sogar schon.