Processwire - Themes / Templates
Links
Siehe auch
- Processwire - Templates Grundausstattung (Best Practice)
- ProcessWire - Field Rendering
- ProcessWire - Skeleton Template
- Processwire - Template from Scratch
Template Strategien
Nützliche Tipps
Es gibt verschiedene Orte wo man Teilrenderings vornehmen kann. Wenn man sich keine Strategie zurechtlegt kann man schnell die Übersicht verlieren. Hier ein paar Vorschläge:
- Partials im partials Ordner sind für einfache Dinge geeignet und gerade beim Entwurf sehr schnell. Hier lege ich Codeblöcke an die direkt (per echo oder direkt als HTMl) ausgegeben werden. Es gibt keine Rückgaben über return. Partials sind Views. Also auf Funktionen weitgehend verzichten. Ausnahmen sind z.B. foreach Schleifen auf Felder (zumindest solange ohne Template Engine gearbeitet wird).
- Partials Dateien enden auf .inc
- In Komplexeren Projekten sollte auf sauberer Model Controller View Trennung geachtet werden.
- Layoutblöcke für Redakteure kommen z.B. in den Field Bereich. Hier kann man die Renderreihenfolge von PW ausnutzen.
Basic Theme
templates/ _func.inc (wenn benötigt) home.php basic_page.php templates/partials foot.inc head.inc
+
Layout Blocks
Anstatt den Templates fest definierte Seitenbereiche zuzuordnen und für jedes Layout ein Template zu erzeugen, kann es sinnvoll sein in Layout-Blöcken zu denken. also einzelne Gestaltungsbausteine, die der User auswählen kann und aus denen sich die Seite aufbaut.
Um dies umzusetzen bietet sich der Feldtyp RepeaterMatrix an, der beim den ProField Modul mit dabei ist. Als Alternative würde vielleicht
ProcessWire - Layout Blöcke mit RepeaterMatrix
Rendering Strategien
Beispiele
http://blog.mauriziobonani.com/processwire-basic-website-workflow-part-2/
Render Funktionen
// New Functions in 3.x
render()
renderValue()
// Functions for 2.x or for easy snippet inclusion (also possible with render
wireRenderFile() // mostly used for delayed output
wireIncludeFile() // for direct output
// i.e.
// returns the output of snippets/contactform.php
// the second argument is optional and will be passed to
// the called file as multiple variables with the name of the key
// also all api varables are available by default
wireRenderFile("snippets/contactform", array("stuff" => $something ));
Delayed Output and Advanced Templates
Über prependTemplateFile und appendTemplateFile verarbeitet man die Templates wenn alle Inhalte zusammengesetzt sind.
Ordnerstruktur
templates/ _func.inc _init.inc _main.inc templates/partials foot.inc head.inc
config.php
<?php
...
$config->debug = false;
$config->sessionFingerprint = true;
$config->prependTemplateFile = '_init.php';
$config->appendTemplateFile = '_main.php';
$config->imageSizerOptions = array(
'upscaling' => true, // upscale if necessary to reach target size?
'cropping' => true, // crop if necessary to reach target size?
'autoRotation' => true, // automatically correct orientation?
'sharpening' => 'soft', // sharpening: none | soft | medium | strong
'quality' => 90, // quality: 1-100 where higher is better but bigger
);
AJAX Driven Theme
config.php
// if ajax request set $ajax = $input->post->ajax;
3.x Strategie
Syntax und Konventionen
Module
Recommended Modules
FormBuilder (kostenpflichtig) - FormBuilder ProFields (kostenpflichtig) - https://processwire.com/talk/store/product/10-profields/ Hanna Code (wie bei Wordpress) - TextformatterHannaCode Map Marker (google Maps) - FieldtypeMapMarker Simple Navigation - MarkupSimpleNavigation AIOM - All In One Minify - AllInOneMinify