Seitenspezifische Variablen
Diese Seite beschreibt die "Variablen", die im Zusammenhang mit den Seiten stehen. Seiten-Variablen haben das Format {$variable}
, und können im Text der Seite oder für bestimmte Formatierungs-Regeln verwendet werden. Zum Beispiel zeigt "{$Group}
" die aktuelle Gruppe, in der wir uns momentan befinden als "PmWikiDe".
Anmerkung: Verwechseln Sie diese Variablen (die nur in Wikiseiten gesetzt und benutzt werden) nicht mit PHP-Variablen. Seitenspezifische Variablen können in PHP mit der PageVar()-Funktion gelesen werden.
Beachten Sie, dass diese Variablen nicht notwendigerweise in PHP-Kode existieren, da sie für Wikiseiten bestimmt sind (immerhin kann man sie in FmtPageName-Strings nutzen).
Es ist auch möglich, Variablen von anderen Seiten anzuzeigen. Dazu stellt man einfach den Seitennamen voran: {Seitenname$Variable}
. Zum Beispiel: "{MarkupMasterIndex$Title}
" zeigt "Übersicht über Textauszeichnungen".
Standard-Seiten-Variablen
In der linken Spalte steht der Name der Variablen, in der rechten Spalte steht der Wert dieser Variablen für diese Seite: PmWikiDe.PageVariables
Standard-Gruppe und -Seite sowie Site-Gruppe
{$DefaultGroup} | Main |
{$DefaultName} |
{$SiteGroup} | Site |
$PagePathFmt
, womit man die Startseite für eine Gruppe setzt.
Gruppe, in der sich die Seite befindet
{$Group} |
{$Groupspaced} | Pm Wiki De |
Seitenname
{$Name} |
{$Namespaced} | Page Variables |
{$FullName} |
Basisname der Seite (befreit von vorangestellten oder angehängten Zusätzen, die in $BaseNamePattern definiert wurden
{$BaseName} |
Titel der Website
{$WikiTitle} | MörkePortal |
Seitentitel
{$Title} | Seitenspezifische Variablen |
{$Titlespaced} | Seitenspezifische Variablen |
Beschreibung der Seite, die in dem (:description:)
-Markup hinterlegt ist
{$Description} | Dokumentation der Variablen, die mit einer Seite verbunden sind. |
(:Summary:)
-Markup eingefügt (siehe PageTextVariables), das so aufgerufen wird:
{$:Summary} | Beschreibt die Variablen, die im Zusammenhang mit einer Seite stehen |
Datum und Zeit der letzten Änderung, das Format ist in $TimeFmt
vorgegeben
{$LastModified} | 25.04.2022, um 09:11 CEST |
Datum und Zeit der letzten Änderung im Unix-Zeitstempel-Format (Sekunden seit 1. Jan. 1970, 00:00 Uhr)
{$LastModifiedTime} | 1650870678 |
Letzter Autor der Seite
{$LastModifiedBy} |
IP des letzten Autors, erscheint anstelle des Autors, wenn beim Speichern kein Name angegeben wird
{$LastModifiedHost} |
Beim letzten Speichern angegebene Zusammenfassung
{$LastModifiedSummary} | pm hlt, hlt php (+159) |
URL der Seite
{$PageUrl} |
In der URL angeforderten Seite, wird von Site.PageNotFound benutzt
{$RequestedPage} |
gerade ausgeführte Aktion (browse, edit, attr, print, ...)
{$Action} | browse |
Lese-, Bearbeiten- und Attribute-Berechtigung der Seite
{$PasswdRead} | geschützt |
{$PasswdEdit} | geschützt |
{$PasswdAttr} | geschützt |
Gruppen für 'Site' und 'SiteAdmin'
{$SiteGroup} | Site |
{$SiteAdminGroup} |
Zusätzlich zu den oben erwähnten Variablen, gibt es noch einige seitenunabhängige Variablen, die durch diese Auszeichnungen erreichbar sind:
Der Name der Person, die aktuell mit der Site interagiert (das ist nicht notgedrungen der Autor der Seite, siehe $LastModifiedBy)
{$Author} |
Die aktuell authentifizierte ID
{$AuthId} |
$AuthId
Aktuell installierte Version von PmWiki und die interne Versionsnummer
{$Version} | pmwiki-2.3.37 |
{$VersionNum} | 2003037 |
Die URL des pmwiki.php-Skripts
{$ScriptUrl} |
Spezielle Verweise
Variablen mit einem speziellen Verweismechanismus werden eingesetzt, um die Umgebung der Variablen näher zu bestimmen, wenn
- die Variable (mit ihrer Seite zusammen) in eine andere (Ziel-) Seite eingebunden wird, oder wenn
- die Variable in einer Sidebar, Kopf- oder Fußzeile verwendet wird.
Stellt man der Variable ein Sternchen (*) voran, heißt das, der Wert der Variable bezieht sich auf die Zielseite oder die aktuell angezeigte Hauptseite, sonst bezieht sie sich auf die eingefügte Seite.
{*$Seiten-Variable}
- ein vorangestellter Stern (*) - die Variable bezieht sich auf die aktuell angezeigte Seite.
Ohne den Stern hat die Variable den Wert, den sie in der Seite bekommen hat, aus der sie ursprünglich stammt, z. B. der Sidebar, der Kopf- oder der Fußzeile.
Mit dem Stern wird der Wert von der angesehenen Seite zu Verfügung gestellt, selbst wenn das Markup von einer eingebundenen Seite oder von einer Sidebar stammt.{$Seiten-Variable}
- die Variable bezieht sich auf den Inhalt der referenzierten Seite.{=$Seiten-Variable}
- wird nur in Seitenlistenvorlagen genutzt, um die von jeder der Seiten aus der Seitenliste zur Verfügung gestellte Variable auszugeben.
Sie können z. B. testen und sichtbar machen, ob eine Seite Teil einer anderen Seite ist, ...
(:if ! name {$FullName}:) %comment% Der Name der Seite ist nicht der gleiche wie der Name, aus dessen Quelle dieser Text stammt ->[[{$FullName}#anchor | more ...]] (:ifend:) |
... oder Bezug nimmt auf die Hauptseite in einer Sidebar, einem Footer oder einem Header
Diese Seite ist [[{*$FullName}]] | Diese Seite ist PmWikiDe.PageVariables |
Seiten-Variablen-Sicherheit ($authpage)
Die Form {pagename$variable}
in einigen Seitenlisten können die Werte der Variablen aus anderen Seiten anzeigen, unabhängig von der Sicherung durch Passworte.
Wenn die anderen, die aufgerufenen, Seiten passwortgeschützt sind und der Besucher hat keine Leseberechtigung, zeigen die Variablen dennoch normalerweise ihren Wert an, anders als die Seiten-Text-Variablen. Während die meisten Variablen keine sensiblen Informationen enthalten, könnten einige Variablen doch welche enthalten: $Title, $Description und jene, die mit $LastModified beginnen.
Administratoren und Modulentwickler können die sensiblen Seiten-Variablen redifinieren, damit sie die Authentifikation berücksichtigen, indem sie die Variable "$authpage" anstelle von "$page" in der Definition verwenden. Der folgende Schnipsel kann in local/config.php
hinzugefügt werden — er überschreibt die möglicherweise sensiblen Definitionen mit den sicheren:
foreach($FmtPV as $k=>$v) { if(preg_match('/^\\$(Title(spaced)?|LastModified(By|Host|Summary|Time)?|Description)$/', $k)) $FmtPV[$k] = str_replace('$page', '$authpage', $v); }
Eigene Variablen
Sie können benutzerdefinierte Seiten-Variablen als lokale Anpassung hinzufügen. In einer lokalen Konfigurationsdatei (local/config.php) oder in Rezepten aus dem Kochbuch, können diese festgelegt werden. Verwenden Sie dazu die Variable $FmtPV
(siehe Sonstige Variablen):
$FmtPV['$VarName'] = "'Definition der Variable'"; $FmtPV['$CurrentSkin'] = '$GLOBALS["Skin"]'; $FmtPV['$WikiTitle'] = '$GLOBALS["WikiTitle"]';
Dies definiert eine neue Seiten-Variable namens $CurrentSkin, die in der Seite benutzt werden kann mittels {$CurrentSkin}
(auch für Bedingte Auszeichnungen). Es ist notwendig, einfache Anführungszeichen innerhalb doppelter Anführungszeichen zu verwenden wie es oben gezeigt wird (vorzugsweise so) oder umgekehrt doppelte Anführungszeichen innerhalb einfacher Anführungszeichen so wie ' "dies" '
.
Sie machen eine Zeichenkette zu einer Seiten-Variable, indem Sie sie zum $GLOBALS()-Array hinzufügen.
## Erstellen einer {$BaseUrl}-Seiten-Variable $GLOBALS['BaseUrl'] = $UrlScheme."://".$_SERVER["HTTP_HOST"]."/Wiki"; $FmtPV['$BaseUrl'] = '$GLOBALS["BaseUrl"]';
Sie können die Seiten-Variable auch durch eine Funktion erstellen lassen.
## Erstellen einer {$BaseUrl}-Seiten-Variable function BaseUrl() { global $UrlScheme; return $UrlScheme."://".$_SERVER['HTTP_HOST']."/Wiki"; } $FmtPV['$BaseUrl'] = 'BaseUrl()';
Bitte beachten Sie, dass Werte der Elemente von $FmtPV
mit eval() ausgewertet werden, deshalb bereinigen Sie stets die Benutzereingaben. Das Folgende ist sehr unsicher:
$FmtPV['$Var'] = $_REQUEST['Var'];
# höchst unsicher, erlaubt PHP-Kode-Injektion
$FmtPV['$Var'] = '"'. addslashes($_REQUEST['Var']) . '"';
# höchst unsicher, erlaubt PHP-Kode-Injektion
Siehe im Rezept Cookbook:HttpVariables nach einem besseren Weg, diese Variablen zu nutzen.
siehe auch:
- Variablen
- Seiten-Text-Variablen
- FmtPageName()
- Formatierungsanweisungen im Ausdruck
- Übersicht über Textauszeichnungen
Im Kochbuch auf PmWiki.org
- Eigene Seiten-Variablen
- UTF-8-Kompatibilität für
{$Groupspaced}
,{$Namespaced}
und{$Titlespaced}
(nur für Versionen vor 2.2.0-beta30 nötig)
Gibt es eine Variable wie $LastModified, die aber die Erstellungszeit anzeigt?
Nein, aber Sie können eine in config.php erzeugen. Zum Beispiel:
# add page variable {$PageCreationDate} in format yyyy-mm-dd
$FmtPV['$PageCreationDate'] = '[[PmWiki/Functions#PSFT|PSFT]]("[=%Y-%m-%d=]", $page["ctime"])';
$FmtPV['$Created'] = "[[PmWiki/Functions#PSFT|PSFT]](\$GLOBALS['TimeFmt'], \$page['ctime'])";
Wie kann ich testen, ob ein Variable gesetzt ist und/oder nicht leer?
Benutzen Sie [=(:if ! equal "{$Variable}" "":) $Variable ist nicht leer. (:ifend:)=]
. Beachten Sie, dass nicht definierte oder nicht existierende Variablen als leere Variablen erscheinen.
Categories: PmWiki Developer
Übersetzung von PmWiki.PageVariables, Originalseite auf PmWikiDe.PageVariables — Rückverweise
Zuletzt geändert: | PmWikiDe.PageVariables | am 25.04.2022 |
PmWiki.PageVariables | am 19.08.2024 |