ProcessWire – Ein CMS voller Freiheiten

Preview:

DESCRIPTION

Vorstellung des CMS ProcessWire auf dem Webkongress Erlangen 2014.

Citation preview

ProcessWireEin CMS voller Freiheiten

• Matthias Mees – @yellowled

• http://netzgestaltung.net

• HTML, (S)CSS, JS/jQuery, CMS

Eckdaten

• Apache mit mod_rewrite und .htaccess

• PHP >= 5.3.8 mit GD2, PDOund mysqli

• MySQL >= 5.0.15

• http://processwire.com

• http://processwire.com/demo/

• http://processwire.com/talk/

Showcase

Backend

• schlicht und schlank

• Eye-Candy über jQuery UI

• aber: ohne JS und in IE < 8 nicht benutzbar

• anpassbare Eingabemasken mit „Hilfetexten“

• Medien sind über Felder Seiten zugeordnet

• keine zentrale Medienverwaltung (im Kern)

• API-Funktionen, um Bilder zu bearbeiten und auf ihre Eigenschaften zuzugreifen

Templates

• jeder Seite ist ein Template zugeordnet

• jedem Template sind Felder zugewiesen

• jedem Feld sind ein Typ und verschiedene Attribute zugewiesen

• Zugriff über API-Variablen und -Methoden

Module

• derzeit 224 Erweiterungen aller Art

• viele Aufgaben von Modulen lassen sich bereits nativ in Templates umsetzen

• statt Themes: Seiten-Profile

Was ist daran nun so ausgesprochen „frei“?

ProcessWire gibt nichts vor

• Struktur, Gestaltung und Verhalten liegen in der Hand des Entwicklers

• es passt sich der eigenen Arbeitsweise an

• oberflächlich wenig komplex, aber sehr leistungsfähig über die API

Alles ist eine Seite

• keine zusätzlichen Inhaltstypen

• jedes Feld ist ein „freies“ Feld

• das gesamte System ist modular auf dem PW-Framework aufgebaut und erweiterbar

Wie jQuery für PHP

• jeder Knoten (Seite) hat ein Eltern- und Kind-Element(e) und unterschiedliche Attribute (Felder) entsprechend seines Typs (Template)

• Methoden, z.B. find(), children(), parent()

• Selektor – Operator – Wert

Code-Beispiele

<?php // Das Feld body der aktuellen Seite ausgeben echo $page->body; !// Die Seite einstellungen finden und // deren Feld copyright ausgeben echo $pages->get("/einstellungen/")->copyright; !// Wie viele Speaker gibt es auf dem WKE 2014? echo $pages->count("template=speaker");

<?php // Navigations-Pfad (Breadcrumb) foreach($page->parents as $p) { echo "<a href='{$p->url}'>{$p->title}</a> » "; } echo $page->title; !// Bildergalerie mit Thumbnails foreach ($page->$images as $i) { $thumb = $i->size(300,225); echo "<li><a href='{$i->url}'><img src='{$thumb->url}' alt='{$i->description}'></a></li>"; }

<?php // Vortragsprogramm des WKE 2014 von heute $today = date('d.m.Y H:i', time()); // nur in Hörsaal 11 sortiert nach Uhrzeit $talks = $pages->find("template=talk,talk_datetime>today,talk_room=11,sort=talk_datetime"); // ausgeben echo "<ul>"; foreach($talks as $talk) { // (<time> nur aus Platzgründen ausgelassen) echo "<li>" . strftime('%H:%M', strtotime($talk->talk_datetime)) . " " . $talk->title . " (" . $talk->speaker . ")</li>"; } echo "</ul>";

Ausgabe Codebeispiel 3(Im Standard-Seitenprofil)

Danke für’s zuhören.

slideshare.net/matmees

Recommended