Referenz

Guite edited this page Nov 12, 2014 · 2 revisions

=== Template Referenz ===

Dieser Artikel fasst die wichtigsten Template-Funktionen auf einen Blick zusammen.
Hat man das Prinzip erst verstanden, kommt man mit dem [//core/wiki:CheatSheet Cheatsheet] aus. Ausgedruckt macht es sich zudem als nützliche Schreibtischunterlage ganz gut.

=== Verzeichnisse ===

Reihenfolge, in der Zikula nach Templates sucht:

  • /config/templates/DeinModul
  • /themes/DeinTheme/templates/modules/DeinModul
  • /modules/DeinModul/pntemplates

Theme-spezifische Modulanpassungen werden in folgenden Verzeichnissen gespeichert:

/themes/$themename/templates/modules/DeinModul/:: für angepasste Modultemplates /themes/$themename/style/DeinModul/style.css:: für angepasste/zusätzliche Stylesheets /themes/$themename/templates/modules/DeinModul/plugins/:: für angepasste/zusätzliche Plugins /themes/$themename/templates/modules/DeinModul/images/:: für angepasste/zusätzliche Bilder

'''Wichtig:''' Der Themename (hier durch $themename dargestellt) muss natürlich so eingegeben bzw. als Verzeichnis angelegt werden, wie er in der [/wiki/themesErstellen#version.php version.php] des Themes steht. Häufig ist das ein Grund, warum auch ausgelagerte CSS-Dateien nicht geladen werden.

Diese Anpassungen können Theme-unabhängig auch im config-Verzeichnis gespeichert werden.

=== Aufrufe === Nachfolgend einige Codebeispiele zum Aufruf von Variablen und Funktionen.







=== Variablen Werte zuweisen === Das Beispiel zeigt, wie einer Variable ''Name'' einen Wert ''Beispiel'' zugewiesen wird.


=== Rückwärts gerichtete Anführungszeichen (Backticks) ===

Einfache Berechungen (hier die Addition zweier Variablen):


Kombination von Strings:


Lesestoff: http://www.smarty.net/manual/de/language.syntax.quotes.php

=== Bedingte Anweisungen und Verzweigungen (Conditions) ===


    Guten Tag der Herr.

    Guten Tag die Dame.

    Guten Tag, was auch immer du bist.

==== Vergleichoperatoren (Qualifiers) ==== {| border=1 class="wikitable" |$a == $b |gleich |- | $a != $b | ungleich |- | $a > $b | größer als |- | $a < $b | kleiner als |- | $a >= $b | größer oder gleich |- | $a <= $b | kleiner oder gleich |- | $a === 0 | identisch |- | ! $a | Negation |- | $a mod $b | Modulo |- | $a is div by 4 | ist teilbar durch |- | $a is even | ist eine gerade Zahl |- | $a is even by $b | eine gerade Gruppierung |- | $a is odd | ist eine ungerade Zahl |- | $a is odd by $b | eine ungerade Gruppierung |}

=== Schleifen (Loops) ===


	

	$variable empty!

oder:


	

	$item empty!

=== Mathematische Berechnungen (Math) ===


oder



oder mit Klammersetzung


=== Modifikatoren (Modifiers) ===

==== Einige häufig verwendete Modifikatoren ==== '''und ihre Parameter''' (In der Form Position, Typ, Erforderlich, Standardwert, Beschreibung {| border=1 class="wikitable" |default |colspan=7|Dieser Wert wird ausgegeben, wenn die Variable leer ist. |- | nl2paragraphs | colspan=7|Alle Zeilen (\n) werden in Absätze konvertiert |- | regex_replace | colspan=7|Ersetzen mit regulären Ausdrücken |- |
|
| Parameter: | 1 | string | ja | n/a | Definiert das zu ersetzende Suchmuster als regulären Ausdruck. |- |
|
|
| 2 | string | ja | n/a | Definiert die ersetzende Zeichenkette. |- | regex_replace | colspan=7|Ersetzen |- |
|
| Parameter: | 1 | string | ja | n/a | Die zu ersetzende Zeichenkette. |- |
|
|
| 2 | string | ja | n/a | Die ersetzende Zeichenkette. |- | string_format | colspan=7|Zeichenkette formatieren (wie sprintf() in php) |- |
|
| Parameter: | 1 | string | ja | n/a | Das zu verwendende Format (sprintf). |- | strip_tags | colspan=7|Entfernt sämtliches HTML-Markup |- |
|
| Parameter: | 1 | bool | nein | true | Definiert ob Tags durch ' ' oder '' ersetzt werden sollen. |- | truncate | colspan=7|kürzt eine Variable auf eine vorgegebene Länge |- |
|
| Parameter: | 1 | integer | nein | 80 | Länge, auf die die Zeichenkette gekürzt werden soll. |- |
|
|
| 2 | string | nein | \n | An die gekürzte Zeichenkette anzuhängende Zeichenkette. |- |
|
|
| 3 | boolean | nein | false | Nur nach ganzen Worten (false) oder exakt an der definierten Stelle (true) kürzen. |- | cat | colspan=7|Dieser Wert wird der aktuellen Variable hinzugefügt. |- |
|
| Parameter: | 1 | string | nein | n/a | Wert, der an die Variable angefügt werden soll. |- | wordwrap | colspan=7|Zeilenumbruch |- |
|
| Parameter: | 1 | integer | nein | 80 | Definiert maximale Länge einer Zeile in der umzubrechenden Zeichenkette. |- |
|
|
| 2 | string | nein | \n | Definiert das zu verwendende Zeichen. |- |
|
|
| 3 | boolean | nein | false | Definiert, ob die Zeichenkette nur zwischen Wörtern getrennt (false), oder auch abgeschnitten werden darf (true). |}

Alle php-Funktionen können implizit als Modifikatoren verwendet werden. Verwenden Sie @phpfunc bei Arrays.

==== Einige spezifischere Modifikatoren ====

{| border=1 class="wikitable" !activatelinks !Konvertiert URLs innerhalb eines Strings in Links |- | pnml | Konvertiert ein Lanugage-Define in den entsprechenden String |- | pnmodcallhooks | Aufruf für Transform-Hooks |- | userprofilelink | Erstellt einen Link zu einem Benutzerprofil |- | userprofilelink:"css" | Fügt class="css" hinzu |- | userprofilelink:'':"img/profile.gif" | Verwendung von profile.gif anstelle des Benutzernamens, keine Klasse |- | yesno | Ausgabe von Yes wenn var = 1 und No wenn var = 0 |- | onlineoffline | Ausgabe von Online wenn var = 1 und Offline wenn var = 0 |- | activeinactive | Ausgabe von Active wenn var = 1 und Inactive wenn var = 0 |}

==== Modifikatoren für Sicherheitszwecke ==== {| border=1 class="wikitable" !pnvarprepfordisplay !Entfernt jegliches HTML um zu verhindern, dass Benutzereingaben das Layout zerstören |- | pnvarprephtmldisplay | Entfernt (bis auf in den Systemeinstellungen erlaubtes) jegliches HTML um zu verhindern, dass Benutzereingaben das Layout zerstören |}

==== Datums - und Zeitformate ====

pndate_format:"dateSpecifiers" formats a date and time into the given strftime() format: {| border=1 class="wikitable" !%a !Abgekürzter Wochentagname |- | %A | Wochentagname |- | %b | Abgekürzter Monatsname |- | %B | Monatsname |- | %d | Tag im Monat (von 01 bis 31) |- | %D | das Gleiche wie %m/%d/%y |- | %e | Tag im Monat (von 1 bis 31) |- | %H | Stunde (von 00 bis 23) |- | %I | Stunde (von 01 bis 12) |- | %j | Tag im Jahr (von 001 bis 366) |- | %k | Stunde (von 0 bis 23) |- | %l | Stunde (von 1 bis 12) |- | %m | Monat (von 01 bis 12) |- | %M | Minute als Dezimalzahl |- | %n | newline character |- | %p | entweder "am" oder "pm" |- | %r | Zeit in am- und pm-Schreibweise |- | %R | Zeit in 24-Stunden-Schreibweise |- | %S | Sekunde als Dezimalzahl |- | %t | Tabulatorzeichen |- | %T | das Gleiche wie %H:%M:%S |- | %u | Werktag als Dezimalzahl |- | %V | ISO 8601:1988 Wochenzahl |- | %x | bevorzugtes Datum für die aktuelle Ortseinstellung |- | %X | bevorzugte Zeit für die aktuelle Ortseinstellung |- | %y | Jahr (von 00 bis 99) |- | %Y | Jahr vierstellig |- | %Z | Zeitzone oder -name oder -abkürzung |- | %% | "%"-Zeichen |}

pndate_format:"":"dateString" verwendet Zikula Sprachdefines zur Darstellung von Standard-Datumsformaten. Englisches Beispiel: {| border=1 class="wikitable" |datebrief |%b %d, %Y |- | datelong | %A, %B %d, %Y |- | datestring | %A, %B %d @ %H:%M:%S |- | datetimebrief | %b %d, %Y - %I:%M %p |- | datetimelong | %A, %B %d, %Y - %I:%M %p |- | dateinput | %Y-%m-%d |- | datetimeinput | %Y-%m-%d %H:%M |- | timebrief | %I:%M %p |}

Um Datumsangeben Zikula-Themes selber hzu generieren verwendet man


=== Beispiele für Modifikatoren ===


Defaultwert setzen, falls die Variable $title leer ist.


Die Variable $title wird auf 40 Zeichen gekürzt und am Ende wird ... angezeigt.


PHP-Funktion auf Variable anwenden. (Der erste PHP-Parameter ist der vor dem | )


Wendet die PHP-Funktion „sort“ auf alle Elemente eines Arrays an.

=== Funktionen ===

==== pnvarcleanfrominput ====


Den Wert eines URL-Parameters abrufen. ==== pnusergetvar ====


Benutzerdaten abrufen. (Keine uid = aktueller Benutzer) ==== pnusergetidfromname ====


Die User-ID für einen bestimmten Benutzernamen ausgeben.

==== pnimg ====


Gibt ein img-Tag aus. {| border=1 class="wikitable" |src |Dateiname der Bilddatei |- | modname | Modulname (default: das aktuelle Modul) |- | width, height | Wenn nicht angegeben, werden die Werte der Bilddatei übernommen. |- | alt | Wenn nicht angegeben, wird ein leerer String zugewiesen |- | altml | Wenn wahr, wird der alt-String als eine ML-Konstante angenommen |- | title | Wenn nicht angegeben, wird ein leerer String zugewiesen |- | titleml | Wenn wahr, wird der alt-String als eine ML-Konstante angenommen |- | optional | Wenn gesetzt, wird das Plugin bei fehlender Bilddatei keine Fehlermeldung ausgeben. |- | default | Wenn gesetzt, wird bei fehlender Bilddatei ein Standardbild verwendet. (Hinweis: Vollständiger Dateipfad erforderlich) |- | set | Wenn der Modulname 'core' lautet, wird der gesetzte Parameter verwendet um ein Verzeichnis in /images/ anzugeben |- | nostoponerror | Wenn gesetzt und ein Fehler auftritt, "do not trigger_error, but return false and fill pnimg_error instead" |- | assign | Wenn gesetzt, werden die Ergebnisse einer Variable zugewiesen. |}

Alle verbleibenden Parameter werden an die Modulfunktion übergeben.

==== pnml ====


liest eine Sprachkonstante Verfügbare Parameter: {| border=1 class="wikitable" |name |Name der auszugebenden Sprachkonstanten |- | html | Die Sprachdefinition wie HTML behandeln |- | noprocess | Wenn gesetzt, wird der Konstantenwert nicht bearbeitet |- | assign | Wenn gesetzt, werden die Rückabewerte einer Variable zugewiesen |}

Alle verbleibenden Parameter werden an die Modulfunktion übergeben.

==== pnmodurl ====


eine URL für eine bestimmte Modulfunktion generieren. Verfügbare Parameter: {| border=1 class="wikitable" |modname |Modulname (erforderlich) |- | type | zur Zeit entweder 'user' oder 'admin' (standard ist 'user') |- | func | Modulfunktion (standard ist 'main') |- | fragment | Das Zielfragment innerhalb der URL |- | ssl | null, true oder false |- | append | Ein an die URL anzuhängender String |- | assign | Wenn gesetzt, werden die Rückgabewerte an eine Variable übergeben |}

Alle verbleibenden Parameter werden an die Modulfunktion übergeben.

=== Modulfunktionen ===

==== pnmodfunc ====


eine Modulfunktion ausführen (pnuser.php, pnadmin.php ...) Verfügbare Parameter: {| border=1 class="wikitable" |modname |Modulname (erforderlich) |- | type | zur Zeit entweder 'user' oder 'admin' (standard ist 'user') |- | func | Modulfunktion (standard ist 'main') |- | assign | Wenn gesetzt, werden die Rückgabewerte an eine Variable übergeben |}

Alle verbleibenden Parameter werden an die Modulfunktion übergeben. ==== pnmodapifunc ====


Eine Modul-API-Funktion ausführen (pnuserapi.php, pnadminapi.php ...) Verfügbare Parameter: {| border=1 class="wikitable" |modname |Modulname (erforderlich) |- | type | zur Zeit entweder 'user' oder 'admin' (standard ist 'user') |- | func | Modulfunktion (standard ist 'main') |- | assign | Wenn gesetzt, werden die Rückgabewerte an eine Variable übergeben |}

Alle verbleibenden Parameter werden an die Modulfunktion übergeben. ==== Weitere Modulplugins ==== {| border=1 class="wikitable" |pnmodavailable |ist Modul X installiert und aktiv? |- | pnmodgetinfo | z.B. den Displaynamen erhalten |- | pnmodgetname | den Namen des aktuellen Moduls erhalten |- | pnmodgetvar | eine Modulvariable erhalten |- | pnmodishooked | ist Modul A mit Modul B verknüpft? (hooked) |}

==== Benutzerfunktionen ==== {| border=1 class="wikitable" |pnusergetidfromname |UID zu einem Benutzername anzeigen |- | pnusergetlang | welche Sprache benutzt der Benutzer? |- | pnusergettheme | welches Theme benutzt der Benutzer? |- | pnusergetvar | Profilinformationen mittels UID anzeigen |- | pnuserloggedin | ist der Besucher eingeloggt? |}

=== Blöcke ===

Blockfunktionen umgeben einen Templateabschnitt und wirken auf dessen Inhalte:


	do some stuff now we have permission

Berechtigungen müssen nicht im zwangsläufig im Module-Code vorgesehen sein. Man kann sie auch einfach im Permissions-Modul vergeben und dann in Templates verwenden.


	Der Inhalt wird nicht von der Template-Engine interpretiert.

Dieser Block wird oft verwendet, wenn man Conditional Comments zur Notation spezieller Style Sheets für den Internet Explorer benötigt.


	echo("Ich bin ein schlechter Programmierer");

Der php-Block kann verwendet werden, um normalen php-Code im Template zu verwenden. ABER: Das ist ganz furchtbar schlechter Stil. PHP gehört in die Plugins!

=== Includes ===


Bindet die Datei template.htm aus dem gleichen Verzeichnis ins Template ein.


Bindet die Datei ein und übergibt ihr eine Variable. Um die Variable aufzurufen wird ein normaler Aufruf verwendet:



Arrays können ebenfalls ans Template übergeben werden. Anzeige des Arrays:


. do stuff  ...


Eine Datei über den absoluten Dateipfad einbinden.


Das Gleiche wie oben.


Windows: Eine Datei über den absoluten Dateipfad einbinden. (Das "file:"-Präfix muss verwendet werden)


Eine Datei aus einer Template-Ressource namens "db" einbinden.


Eine variable Templatedatei einbinden - z.B. $module = 'contacts'


Funktioniert NICHT, da einfache Anführungszeichen keine Variablenersetzung erlauben.


Eine multivariable Templatedatei einbinden - z.B. amber/links.view.tpl

=== pndebug ===

Die wichtigste Funktion in Zikula für Entwickler:


Stellt ein Popup-Fenster mit allen verfügbaren Variablen eines Templates bereit.

=== Inserts ===


fügt die letzte in der aktuellen Sitzung ausgegebene Statusmeldung ein.
Verfügbare Parameter: {| border=1 class="wikitable" |style, class |msg put in a div tag with these attributes |- | tag | specifies a span or a div tag |- | assign | assign to var |}


Setzt eine seitenspezifische Variable. Verfügbare Variablen: {| border=1 class="wikitable" |title |Setzt den HTML-Titel (Seitenname und -slogan werden hinzugefügt |- | description | Setzt die Meta-Beschreibung |- | keywords | Setzt die Meta-Keywords |- | stylesheet | Bindet ein /StyleSheet in den Header ein |- | javascript | Bindet ein /JavaScript in den Header ein |- | body | Fügt dem eröffnenden body-Tag Atrribute hinzu |- | rawtext | Fügt dem Header blanken Text hinzu |- | footer | Füght über dem schließenden body-Tag blanken Text ein |}

Beispiele:


fügt die Datei extrastyle.css in den HTML-Header ein. Valides HTML oder xHTML je nach Einstellung in theme.php


fügt die Datei prototype.js in den HTML-Header ein. Zikula verhindert wiederholte Aufrufe ein und des selben Skripts.


fügt die ersten 250 Zeichen aus der Variable text in die Meta-Beschreibung ein.


fügt dem body-Tag das onload-Attribut hinzu.

=== Plugins ===

Nomenklatur von Plugins: {| border=1 class="wikitable" |function.NAME.php |für Funktionen |- | modifier.NAME.php | für Modifikatoren |- | block.NAME.php | für Blöcke |}

Nomenklatur von Funktionen:

function smarty_function_NAME($params, &$smarty)

...für Funtionen

function smarty_modifier_NAME($params, &$smarty)

...für Modifikatoren

function smarty_block_NAME($params, &$smarty)

...für Blöcke

NAME muss im Datei- und Funktionsnamen identisch sein (case-sensitiv!)

Sollte immer bei den Parametern vorhanden sein: {| border=1 class="wikitable" |assign |Damit einer Variablen ein Rückgabewert zugewiesen werden kann |}

=== Rumpf Plugin ===

assign($params['assign'], $value);
    } else {
	return $value;
    }
}

=== Theme-Funktionen ===


Normalerweise der Titel einer Seite, bestehend aus Inhaltstitel, Seitenname und Seiten-Slogan. verfügbare Parameter: {| border=1 class="wikitable" |separator |Titelbestandteile werden mit diesem String voneinander getrennt (optional: standard '::') |- | noslogan | Slogan wird nicht hinzugefügt wenn true |- | nositename | Seitenname wird nicht hinzugefügt wenn true |}

==== Pager (numerisch) ====


fügt einem Template einen numerischen Pager hinzu verfügbare Parameter: {| border=1 class="wikitable" |rowcount |total number of items to page in between (Wenn ein Array zugewiesen ist, wird dessen Zähler verwendet) |- | limit | Anzahl Items auf einer Seite (wenn <0 unbegrenzt) |- | posvar | Name der Variable, die die Positionsdaten enthält, z.B. "offset" |- | display | entweder 'page' oder 'startnum'. page = 1, 2, 3, 4, ..) startnum = (1, 11, 21, 31, 41, ..) |- | anchorText | optional: Text für Hyperlink-Anker (z.B. 'Kommentare' für den Anker #Kommentare) (standard: '') |- | maxpages | optional: maximale Anzahl angezeigter Seiten, restliche Seiten werden versteckt / unterdrückt (standard: 0 = alle Seiten anzeigen) |- | class | optional: CSS-Klasse, die dem Seiten-Container hinzugefügt wird (standrad : pn-pager) |- | processDetailLinks | Sollen die einzelnen Seitenlinks erstellt werden? (standard: false, wenn pagerimage.html verwendet wird, sonst true) |- | template | optional: Name einer Templatedatei |- | includeStylesheet | vordefinierte Stylesheetdatei verwenden? Standard ist yes. |}

bereits verfügbare Templates: *pagercss2.html *pagercss.html *pager.html *pagerimage.html *pagerintervals.html *pageritems.html *pagerjs.html Natürlich können eigene Templates hinzugefügt werden. ==== Pager (alphabetisch) ====


zeigt einen alphabetischen Pager an Verfügbare Parameter

{| border=1 class="wikitable" |names |Werte, die für den Pager zur Verfügung stehen (array oder csv) z.B. "A;B;C;D" usw. |- | separator | String, der zwischen den Buchstaben eingefügt wird, z.B. "/" liefert | A | B | C | D | |- | posvar | Name der Variable, die die Positionsdaten enthält, z.B. "letter" |- | forwardvars | Komma- Semicolon- oder Leerzeichen-getrennte Liste von POST- und GET-Variablen zur Übergabe in den Pager-Links. Wird dieser Parameter nicht gesetzt, werden alle Variablen übergeben. |- | additionalvars | Komma- Semicolon- oder Leerzeichen-getrennte Liste von zusätzlichen Variablen/Werte-Paaren, die in den Links übergeben werden. z.B. "foo=2,bar=4" |- | class_num | Klasse für die Pager-Links (-tags) |- | class_numon | Klasse für die aktuelle Seite |}

printempty – print empty sel ('-')

=== CSS-Klassen ===

==== Gemeinsame Klassen ==== {| border=1 class="wikitable" |.pn-hide |identisch mit display:none |- | .pn-clearfix | wird verwendet, um die Benutzung von clear:both zu umgehen |}

==== Klasse für Tabellen ==== {| border=1 class="wikitable" |.pn-datatable |gibt allen Tabellen eine identische Formatierung |}

verwenden Sie

">

um Tabellenzeilen unterschiedliche Formatierungen zuzuweisen verwenden Sie



um Spalten via javascript sortierbar zu machen (prototype!)

==== CSS-Klassen für Formulare ==== {| border=1 class="wikitable" |.pn-form |wird verwendet, um Formularen das Aussehen von Zikula-Formularen zu geben |- | .pn-formrow | wird verwendet, um div-Containern in Formularen das Zikula-Standard-Design zu geben |}

=== Lizenz ===

/**
*Zikula Application Framework
 *
*@copyright (c) 2001, Zikula Development Team
*@link http://www.zikula.org
*@license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
*/

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.