Gastartikel: Processwire

|

Vor kurzem startete ich die Suche nach Gastautoren für die Website. Simon Dürr ist diesem Aufruf gefolgt, und so ist hier sein Artikel zum CMS Processwire.

Processwire

Content Managment Systeme gibt es wie Sand am Meer. Dieser Blog beschäftigte sich bisher vornehmlich mit TYPO3, das vor allem in Deutschland im Businessbereich Anwendung findet. Doch ein Blick über den Tellerrand schadet bekanntlich nie, weswegen ich euch heute das CMS/CMF Processwire vorstellen möchte.

Grundidee

Processwire wurde von Hauptentwickler Ryan Cramer zunächst als privates Projekt und unter dem Namen Dictator CMS 2003 in Leben gerufen. 2010 wurde das Projekt als Processwire 2.0 unter der GNU GPL veröffentlicht. Das System ist schlank und modular und weist einige Besonderheiten auf. Kern des Systems ist die überaus mächtige API, die von JQuery inspiriert ist und Funktionen wie Selektoren für Seiten mitbringt. Darüber hinaus ist das System nicht um ein Backend herum entwickelt, sondern das Backend besteht vollständig aus Seiten mit speziellem Template, die für Normaluser allerdings ausgeblendet sind. Weiterhin besticht das System durch seine enorme Flexibilität. Egal ob die Ausgabe in HTML, RSS, JSON oder XML erfolgen soll, das System macht hierzu keinerlei Vorgaben. Es gibt zudem keine Standardinhaltselemente (vom Titel mal abgesehen). Für jedes Template können individuell beliebig viele Felder bestehend aus einfachen Textboxen, RangeInputs, Datumsfeldern, Dateiuploads, WYSIWYG und vielem mehr hinzugefügt werden. Zusammen mit einer PHP-Datei können die einem Template zugewiesenen Felder dann über die API ausgegeben werden.
Über Galerieplugins kann man als Processwireentwickler nur müde lachen, weil das System mit einer simplen foreach Schleife, die das von der API gelieferte Bilderarray ausgibt und einem eingebundenen Lightboxscript diese Funktionalität bereits out-of-the-box besitzt. Mehr dazu jedoch später. Module für viele Zwecke gibt es dennoch genug (weit über 100). Die Community ist zudem sehr aktiv.

Funktionen

Processwire - Seitenbaum

Processwire basiert wie oben zu sehen auf einem vollständig hierarischen Seitenbaum der eindeutig über die URL wiedergeben wird. Der Link zur Seite “Child page example 1” lautet beispielsweise domain.com/home/about/child-page-example-1

Ansonsten bietet das Backend wenige Auffälligkeiten. Im Punkt Setup können Felder,Sprachen und Templates verwaltet werden. Unter Modules werden Module installiert und verwaltet. Ein Plugin zum direkten Zugriff auf das Extension Repository gibt es in Form des Modules Managers ebenso. Unter Access können Benutzer und Benutzergruppen angelegt werden. Für jede Benutzergruppe kann dabei der Zugriff individuell für jedes Template nach den Kriterien “Bearbeiten”,”Seiten anlegen”,”Unterseiten anlegen” festgelegt werden.

Die Eingabemaske für Inhalte ist ebenfalls sehr gut gelungen. Man kann diese genau wie gewünscht anpassen und zum Beispiel Felder mit nur 50% Breite anzeigen oder diese mit Beschreibungstexten versehen. Dateien können direkt mit Drag’n’Drop auch zu mehreren hochgeladen werden. Eine weitere Besonderheit ist das TinyMCE für jedes Feld einzeln angepasst werden kann. Möchte man eine mehrsprachige Webseite umsetzen so können die Felder dafür per Modul umgerüstet werden. Für jede Sprache steht dann ein einzelnes Eingabefeld zur Verfügung.

Processwire - Eingabemaske

Wem das Admininterface nicht gefällt kann dieses mit Admin Templates ganz einfach wechseln. Schöne Themes sind unter anderem Teflon oder Futura Remixed. Eine Lokalisierung ins Deutsche gibt es selbstverständlich auch.

Templating

Processwire zeichnet sich dadurch aus, dass es keine richtige Template Engine gibt. Alle Daten aus den Feldern einer Seite können ganz einfach via PHP ausgegeben werden und anschließend beliebig weiterverarbeitet werden. Das CMS passt sich quasi dem eigenen Workflow an. Wenn man zum Beispiel von der WordPressentwicklung gewohnt ist eine functions.php-Datei zu haben, so kann man diese auch in Processwire anlegen und nutzen. Auch andere Funktionen wie der WordPress-Loop können ohne Probleme nachgebaut werden und erlauben ganz individuelle Konfigurationen.  Ein solche Ausgabe sieht beispielsweise wie folgt aus:

echo $page->headline;

Doch die API kann weit mehr. Von JQuery bekannte Funktionen wie nextAll() oder find() können für Seiten angewandt werden und zur Ausgabe einer Übersichtsseite über Unterseiten genutzt werden. Besonders raffiniert wird dies beispielsweise in der Processwire Demo umgesetzt. In dieser Demoseite sind nahezu alle Wolkenkratzer in den USA inkl. Stadt,Etagenanzahl, Baudatum, Höhe und Architekt als eigenständige Seite mit dem Template “skyscraper” vermerkt. Möchte man nun beispielsweise alle Wolkenkratzer, die vor 1980 gebaut wurden und dabei mindestens 250 Meter hoch sind, ausgeben, so kann man folgenden Code nutzen:

Über find() kann der komplette Seitenbaum nach den Suchkriterien durchforstet werden. Als Selektor dienen in diesem Fall das Template sowie einzelne Felder mit Inhalten, die vom User stammen. Da diese Ausgabe beliebig angepasst und erweitert werden kann muss man sich mit Processwire eigentlich wenige Gedanken über die Realisierbarkeit ausgefallener Portfolios oder Produktkataloge machen.

Bei anderen Systemen stünde hier zuerst eine aufwändige Suche nach Extensions an. Zudem werden manche Systeme von Entwicklern mit viel Mehraufwand derart verbogen (insbesondere WordPress in Kombination mit ACF) um selbiges zu erreichen.

Insgesamt ist die API sehr leicht erlernbar auch mit geringen PHP Kenntnissen.Schon nach wenigen Stunden kann man ganz passabel mit dem System umgehen und sich an die Templateerstellung wagen.

Community & Addons

Ganz wichtig bei der Auswahl eines OpenSource CMS ist natürlich auch die dahinterstehende Community. Processwire wird zwar derzeit hauptsächlich von Ryan Cramer entwickelt, dennoch ist das System als zukunftstauglich zu sehen. Einerseits verdient Cramer seinen Lebensunterhalt mit dem System, weswegen er die Entwicklung nicht von heute auf morgen aufgeben wird. Zudem contributen auch andere Entwickler in den Code und setzen das System in ihrer Agentur ein. Auch ist die Community sehr aktiv und Fragen werden teilweise schon nach wenigen Stunden beantwortet.
Module gibt es viele, die auch in einem guten Repository aufbereitet sind: http://modules.processwire.com/ Vielfach benötigt man aber nur sehr wenige Module einfach weil einen das System wenig einschränkt und man Related Articles, Galerien, LikeButtons o.ä direkt im Template mit wenig Aufwand lösen kann.

Fazit

Mit Processwire erhält man ein höchst flexibles und gleichzeitig schlankes Content Managment System, dass sich insbesondere gut für die Verwaltung von Produkten und hierarchischen Inhalten im Unternehmensbereich eignet. Das System ist zudem sehr gut skalierbar und selbst bei großen Datenmengen noch performant. Mit dem kostenpflichtigen Modul Pro Cache kann die Geschwindigkeit zudem weiter erhöht werden. Einzig wirklicher Nachteil ist das das AssetManagment noch etwas kompliziert ist. In Anbetracht der wirklich enormen Zeitersparnis die man durch das Ausbleiben von elendig langer Suche und Wartung von Plugins spart kann man darüber aber getrost hinweg sehen. Die einzige Art von Seiten, die man mit Processwire schwerlich realisieren kann sind Communityportale. Für alles andere ist das System eine sehr gute und sichere Wahl.

P.S Das System stellt so etwas wie ein Mittelweg zwischen Framework und CMS dar. Es lassen sich beispielsweise auch aufwändige Webapps wie diese hier basteln:

https://www.youtube.com/watch?v=TAubTGB96Lc

Außerdem hier noch ein Videoüberblick vom Entwickler selbst, dieses Video ist allerdings schon etwas älter.

Schreibe einen Kommentar

TYPO3 9 LTS Videotraining

Das Videotraining zu TYPO3 9 LTS

Momentan in Vorbereitung

Klicke hier für weitere Infos zum neuen Videotraining!

close-link

YouTube aktivieren?

Auf dieser Seite gibt es mind. ein YouTube Video. Cookies für diese Website wurden abgelehnt. Dadurch können keine YouTube Videos mehr angezeigt werden, weil YouTube ohne Cookies und Tracking Mechanismen nicht funktioniert. Willst du YouTube dennoch freischalten?