Processwire - Themes / Templates: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 113: Zeile 113:
 
== Grundausstattung ==
 
== Grundausstattung ==
 
Siehe [[Processwire - Templates Grundausstattung]]
 
Siehe [[Processwire - Templates Grundausstattung]]
 +
 +
== Tipps und Tricks ==
 +
=== Templates in Backend-Auswahl verstecken ===
 +
Manche Templates tauchen in der Auswahl der Redakteure auf obwohl es eigentlich nur Teiltemplates sind. Z.B. für eine Matrix.
 +
Benennt man sie mit einem '''Underscore am Anfang _NameDesTemplates''' tauchen sie nicht mehr in der Auswahlliste auf.

Version vom 13. Februar 2018, 13:58 Uhr

Links

Siehe auch

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

https://processwire.com/blog/posts/processwire-3.0.7-expands-field-rendering-page-path-history-and-more/#theres-also-page-gt-rendervalue

// 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

Processwire - Writing Modules

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

Grundausstattung

Siehe Processwire - Templates Grundausstattung

Tipps und Tricks

Templates in Backend-Auswahl verstecken

Manche Templates tauchen in der Auswahl der Redakteure auf obwohl es eigentlich nur Teiltemplates sind. Z.B. für eine Matrix. Benennt man sie mit einem Underscore am Anfang _NameDesTemplates tauchen sie nicht mehr in der Auswahlliste auf.