Administratoren (FTP)
< I18n-Variablen | Variablen | Blockadeliste >
$FmtV
- Diese Variable ist ein assoziatives Array, das benutzt wird für Stringersetzungen am Ende eines Aufrufes von FmtPageName(). Für jedes Element in dem Array wird der "Schlüssel", interpretiert als String, durch seinen zugehörigen "Wert" ersetzt. Diese Variable ist dafür vorgesehen, um Ersetzungsvariablen zu speichern, die häufig wechselnde Werte haben (dadurch vermeidet man einen Neuaufbau des Variablencache und FmtPageName() wird schneller). Siehe auch
$FmtP
. Werte von$FmtV
werden gesetzt von den internen Funktionen FormatTableRow, LinkIMap, HandleBrowse, PreviewPage, HandleEdit, PmWikiAuth, und PasswdVar, augenscheinlich um Werte zu setzen für vom System erzeugte Stringersetzungen wie PageText. $FmtP
- Diese Variable ist ein assoziatives Array, das benutzt wird für Stringersetzungen nahe dem Beginn eines Aufrufes von FmtPageName(). Für jedes Element in dem Array wird der "Schlüssel", interpretiert als String, durch seinen zugehörigen "Wert" ersetzt, der für den Namen der aktuellen Seite ermittelt wurde. Dies wird zum Beispiel benutzt, um $-Ersetzungen zu handhaben, die vom Seitennamen abhängig sind, welcher an FmtPageName() übergeben wurde. Siehe auch
$FmtV
. zu robots.php: Wenn$EnableRobotCloakActions
gesetzt ist, wird ein Muster an$FmtP
angefügt, das jeglichen "?action="-URL-Parameter in Seiten-URLs verhindert; PmWiki erzeugt so also keine URLs für Aktionen, auf die Suchmaschinenroboter nicht zugreifen dürfen. Das kann die Last des Server erheblich reduzieren, indem er an die Roboter keine Links ausliefert, die ohnehin nicht im Index auftauchen dürfen. $FmtPV
- Diese Variable ist ein Array, das Seiten-Variablen definiert. Neue Variablen können definiert werden mit
$FmtPV['$VarName'] = 'variable definition';
, die dann in Markups wie{$VarName}
benutzt werden können. Bitte bedenken Sie, dass die Inhalte von$FmtPV['$VarName']
ausgewertet werden, um den endgültigen Text für$VarName
zu erzeugen, deshalb muss der Inhalt ein PHP-Ausdruck sein, der zum Zeitpunkt der Auswertung gültig ist. Insbesondere wird dies hier nicht funktionieren:#Das funktioniert nicht
$FmtPV['$MyText'] = "This is my text."; # WARNUNG: Das funktioniert nicht!
- Das Problem ist, dass This is my text. kein gültiger PHP-Ausdruck ist. Damit es funktioniert, müsste das in Anführungszeichen gesetzt werden. Was also tatsächlich in
gespeichert werden müsste, ist "This is my text.", was ein gültiger PHP-Ausdruck für einen String ist. Demnach ist der korrekte Weg, den Textstring einzusetzen, einen weiterer Satz von Anführungszeichen um alles herum zu setzen.$FmtPV
['$MyText']#das wird funktionieren
$FmtPV['$MyText'] = '"This is my text."';
- Das ist eine Folge dessen, wie in PHP oder PmWiki auf Variablen zugegriffen wird. Damit die Seiten-Variable
$MyVar
den Inhalt der internen Variablen$myvar
ausgibt, versuchen viele Leute so etwas, was nicht funktioniert:#Das funktioniert auch nicht!
$myvar = EineKomplexeFunktion();
$FmtPV['$MyVar'] = $myvar; # WARNUNG: geht nicht!
- Es gibt mehrere korrekte Wege, je nach dem, ob Sie den Wert von
$myvar
brauchen wie er zur der Zeit ist, in der der
-Eintrag erfolgte, oder zu der Zeit, wo eine jeweilige Instanz von$FmtPV
$MyVar
in der Seite ausgewertet wird. Fur die meisten, einfachen Seiten-Variablen, die sich während des Seitenaufbaus nicht ändern, ist es effektiver, den Wert zu setzen, wenn der Eintrag erzeugt wird:$myvar = EineKomplexeFunktion();
$FmtPV['$MyVar'] = "'" . $myvar . "'"; #fange den Inhalt von $myvar ein
- Hinweis: Wenn
$myvar
ein einfaches Anführungszeichen enthält, wird das obige nicht funktionieren. Sie müssen die Variable noch bearbeiten um alle einfachen Anführungszeichen abzufangen (zu escapen). - Für komplexere Fälle, in denen
$MyVar
an verschiedenen Stellen auf der Seite unterschiedliche Werte hat (möglicherweise aufgrund des Effekts anderer Markups), müssen Sie denFmtPV
-Eintrag zu einer Referenzvariablen machen, die auf eine globale Variable referenziert (und die Variable sollte besser eine globale Variable sein), wie hier:global $myvar;
$FmtPV['$MyVar'] = '$GLOBALS["myvar"]';
- Schließlich kann Sie nichts davon abhalten, dass die Evaluation des
FmtPV
-Eintrags einfach zu einer Funktion führt, die den Ersetzungstext erzeugt:# add page variable {$Today}, formats today's date as yyyy-mm-dd
$FmtPV['$Today'] = 'strftime("%Y-%m-%d", time() )';
Noch einmal: Bitte beachten Sie, dass Werte der Elemente von $FmtPV
mit eval() ausgewertet werden. Sie sollte also Benutzereingaben bereinigen. 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 Cookbook:MoreCustomPageVariables für weitere Beispiele, wie man
$FmtPV
einsetzen kann. $MaxPageTextVars
- Diese Variable verhindert endlose Schleifen durch versehentliche rekursive Seiten-Text-Variablen, die einen Server zum Erliegen bringen können. Der Standardwert ist 500, d. h. jede Seiten-Text-Variable einer Seite kann 500 mal in einer Wikitextseite dargestellt werden. Wenn Sie sie mehr als 500 mal brauchen, setzen Sie in die config.php etwas wie das Folgende hinein:
# zehntausendmal$MaxPageTextVars
= 10000;$PageCacheDir
- ermöglicht das Zwischenspeichern von HTML für Seiten ohne Bedingungen. Die Variable enthält den Namen eines beschreibbaren Verzeichnisses, wo PmWiki die HTML-Ausgabe zwischenspeichern kann, um die aufeinanderfolgende Ausgabe der selben Seiten zu beschleunigen. Siehe auch
$PageListCacheDir
. - # ermögliche das Zwischenspeichern in work.d/
-
$PageCacheDir
= 'work.d/';
< I18n-Variablen | Variablen | Blockadeliste >
Übersetzung von PmWiki.OtherVariables
Originalseite auf PmWikiDe.OtherVariables - Rückverweise
Zuletzt geändert:
PmWikiDe.OtherVariables am 15.01.2016
PmWiki.OtherVariables am 28.08.2022
Zuletzt geändert am 15.01.2016 12:04 Uhr