< I18n-Variablen | Variablen | Blockadeliste >
$FmtV
$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
$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
$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!
$FmtPV
['$MyText']
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 weiteren Satz von Anführungszeichen um alles herum zu setzen.
#das wird funktionieren
$FmtPV['$MyText'] = '"This is my text."';
$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!
$myvar
brauchen wie er zur der Zeit ist, in der der $FmtPV
-Eintrag erfolgte, oder zu der Zeit, wo eine jeweilige Instanz von $MyVar
in der Seite ausgewertet wird. Für 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
$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).
$MyVar
an verschiedenen Stellen auf der Seite unterschiedliche Werte hat (möglicherweise aufgrund des Effekts anderer Markups), müssen Sie den FmtPV
-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"]';
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.
$FmtPV
einsetzen kann.
$MaxPageTextVars
$MaxPageTextVars
= 10000;
# zehntausendmal
$PageCacheDir
$PageListCacheDir
.
$PageCacheDir
= 'work.d/';
< I18n-Variablen | Variablen | Blockadeliste >
Übersetzung von PmWiki.OtherVariables, Originalseite auf PmWikiDe.OtherVariables — Backlinks
Zuletzt geändert: | PmWikiDe.OtherVariables | am 25.06.2016 |
PmWiki.OtherVariables | am 30.01.2020 |