< 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() )';
$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
$FmtPV einsetzen kann.
$MaxPageTextVars$MaxPageTextVars = 10000; # zehntausendmal
$DefaultEmptyPageTextVars$DefaultUnsetPageTextVars$PageCacheDir # ermögliche das Zwischenspeichern in work.d/.pagecache
$PageCacheDir = 'work.d/.pagecache';
$MarkupMarkupLevel(:markup:)-Blocks arbeitet; sonst ist sie 0 (Null) oder 'null' (PHP-Wert 'null').
$EnableInputDataAttrdata-*-Attribute akzeptieren sollten. Per Voreinstellung tun sie es.
# data-*-Attribute in Formularen abstellen
$EnableInputDataAttr = 0;
< I18n-Variablen | Variablen | Blockadeliste >
Übersetzung von PmWiki.OtherVariables, Originalseite auf PmWikiDe.OtherVariables — Rückverweise
| Zuletzt geändert: | PmWikiDe.OtherVariables | am 30.01.2020 |
| PmWiki.OtherVariables | am 30.01.2020 |