Hands On: ProcessWire

Von Marc Löhe / @bfncs

Struktur

  1. Einordnung
  2. Konzept
  3. API
  4. Backend
  5. Fragen & Links

Einordnung

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)

Zahlen

ProcessWire Github Repository Statistics

Noch mehr Zahlen

Geschichte

  • 2003: Dictator CMS closed source
  • 2007: ProcessWire 1.x, closed source
  • 2011: ProcessWire 2.x
  • 2016: ProcessWire 3.x

Konzept

„The Loop“

  1. Template (≅ Klasse) erstellen.
  2. Field (≅ Klassenattribute mit Eingabemechanismus) erstellen und Template hinzufügen+.
  3. Page (≅ Objekt) aus Template erstellen+.
  4. Template File (≠ Template) für die Ausgabe erstellen.
  5. Bei Bedarf wieder bei 1. beginnen.

Hands On!

Und nun zur Praxis: Beispiel CMS-Directory

API

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

Backend

Mehr Template-Eigenschaften

  • Access
  • Family
  • URLs
  • Cache

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.:

Fragen?

Gerne auch per Mail oder Twitter.

Vielen Dank!

… und hier in Ruhe nachlesen:
http://bfncs.github.io/wwms-processwire/

Links