Struktur
Einordnung
Konzept
API
Backend
Fragen & Links
ProcessWire
- Content-Management-/Applikations-Framework
- Requirements: PHP > 5.3.8, MySQL > 5.0.15, URL Rewriting, GD2
- Open Source: Mozilla Public License 2.0 (GPL < MPL < MIT)
Geschichte
- 2003: Dictator CMS closed source
- 2007: ProcessWire 1.x, closed source
- 2011: ProcessWire 2.x
- 2016: ProcessWire 3.x
„The Loop“
Template (≅ Klasse) erstellen.
Field (≅ Klassenattribute mit Eingabemechanismus) erstellen und Template hinzufügen+.
Page (≅ Objekt) aus Template erstellen+.
Template File (≠ Template) für die Ausgabe erstellen.
Bei Bedarf wieder bei 1. beginnen.
Hands On!
Und nun zur Praxis: Beispiel CMS-Directory
Einfache aber mächtige API
…abgeschaut von jQuery
- DOM ≅ Site Map
- Selektoren
- Traversing
- Fluent Interface
- teilweise gleiche Methodennamen (find(), child(), parent(), siblings(), etc.)
$page
- $page->id
- $page->url
- $page->get("field")
- $page->field
- $page->parent
- $page->children
- $page->children("selector")
- …und weitere
$pages
- $pages->find("selector")
- $pages->count("selector")
- $pages->save($page)
- $pages->delete($page)
- …und weitere
Selektoren
- title*=processwire
- version>2
- sort=-created,limit=10
- Komplexe Suchbedingungen mit AND, OR, Bedingungsgruppen und Abfrage von Untereigenschaften möglich
- …und weitere
Mehr API-Variablen
-
$input: Zugriff auf GET-, POST-, & Cookie-Daten
-
$session: Zugriff auf Sessiondaten
-
$user: Zugriff auf aktuellen Benutzer
-
$config: Zugriff auf seitenweite Konfigurationsdaten
-
$fields & $templates: Seitenweiter Zugriff auf Felder und Templates
-
$sanitizer: Funktionen für Validierung und Bereinigung von Nutzereingaben
-
$log: Umgang mit Logdateien
Mehr Template-Eigenschaften
Modularität
- Das Backend besteht fast vollständig aus ProcessWire-Modulen, ein großer Teil aller Funktionsaufrufe ist hookbar.
- Achtung: Flexibilität rächt sich beim Debuggen (Wire::__call())!
Wichtige Core-Module
- Nutzer- & Rechteverwaltung
- Mehrsprachigkeit & Übersetzungstools
- Logging
- etc.
Community-Module
Mit Modulen kann die (Backend-)Funktionalität erweitert werden, z.B.:
Hands On: ProcessWire
Von Marc Löhe / @bfncs