(options)
This page describes the “variables” that are associated with pages. Page variables have the form {$variable}, and can be used in page markup or in certain formatting strings in PmWiki. For example, the markup “{$Group}” renders in this page as “PmWiki”.
Note that these variables do not necessarily exist in the PHP code, because they have to be determined for a specific page. (However, they are usable in FmtPageName strings.)
There is also the form {pagename$variable}, which returns the value of the variable for another page. For example, “{MarkupMasterIndex$Title}” displays as “Markup Master Index”.
Special references
Special referenced variables are used to retain the context of the target page or main page for a variable when:
- the variable is included into a destination (target) page)
- the variable is part of a sidebar, header, or footer for a main page
Prefixing the variable name with an asterisk (*) means the variable reflects the value related to the target page or main page.
*$PageVariablename - prefixed by an asterisk (*) - value reflects target page context
Without the asterisk it reflects the value of the page in which it originates.
$PageVariablename - retains value in source page context
Special references are also used in page list templates.
For example you can test to see if the page is part of another page
(:if ! name {$FullName}:)
%comment% name of this page is not the same as the page this text was
sourced from
->[[{$FullName}#anchor | more ...]]
(:ifend:)
|
or refer to the main page in a sidebar, footer, or header
This page is [[{*$FullName}]]
| This page is PmWiki.PageVariables |
Default page variables
The page variables defined for PmWiki are:
{$Action} - page’s url action argument, as in “browse”
{$BaseName} - page’s “base” form (stripping any prefixes or suffixes defined via $BaseNamePatterns) as in “PmWiki.PageVariables”
{$DefaultGroup} - default group name, as in “Main”
{$DefaultName} - name of default page, as in “HomePage”
{$Description} - page’s description from the (:description:) markup, as in “Documentation for “variables” that are associated with pages.”
{$FullName} - page’s full name, as in “PmWiki.PageVariables”
{$Group} - page’s group name, as in “PmWiki”
{$Groupspaced} - spaced group name, as in “PmWiki”
{$LastModified} - date page was edited, as in “August 23, 2009, at 09:24 PM”
{$LastModifiedBy} - page’s last editor, as in “Petko”
{$LastModifiedHost} - IP of page’s last editor, as in “86.69.109.9″
{$LastModifiedSummary} - Summary from last edit, as in “Titlespaced - either the page title (if defined), or the spaced page name”
{$LastModifiedTime} - time page was edited in unix-style timestamp, as in “1251077060″ added version 2.2 beta 67
{(ftime)} and other date/time markups.
{$Name} - page name, as in “PageVariables”
{$Namespaced} - spaced page name, as in “Page Variables”
{$PageUrl} - page’s url, as in “http://acccn.net/pmwiki/pmwiki.php/PmWiki/PageVariables”
{$PasswdRead} - “read” permissions for the page e.g. “(protected)”
{$PasswdEdit} - “edit” permissions for the page e.g. “(protected)”
{$PasswdAttr} - “attr” permissions for the page e.g. “(protected)”
{$RequestedPage} - page requested in URL, used on Site.PageNotFound. e.g. “PmWiki/PageVariables”
{$SiteGroup} - default group name for e.g. RecentChanges, as in “Site”
{$Title} - page title (may differ from Name), as in “Page specific variables”
{$Titlespaced} - either the page title (if defined), or the spaced page name, as in “Page specific variables”
In addition to the above, there are some page-invariant variables available through this markup:
{$Author} - the name of the person currently interacting with the site, as in “”
{$AuthId} - current authenticated id, as in “” Please note the lower case ‘d’. {$AuthID} returns nothing
{$Version} - PmWiki version, as in “pmwiki-2.2.6″
{$VersionNum} - The internal version number, as in “2002006″
{$ScriptUrl} - The url to the pmwiki script, as in “http://acccn.net/pmwiki/pmwiki.php”
Custom page variables
You may add custom page variables as a local customization. In a local configuration file or a recipe script, use the variable $FmtPV:
$FmtPV['$VarName'] = "'variable definition'"; $FmtPV['$CurrentSkin'] = '$GLOBALS["Skin"]'; $FmtPV['$WikiTitle'] = '$GLOBALS["WikiTitle"]';
Defines new Page Variable of name $CurrentSkin, which can be used in the page with {$CurrentSkin} (also for Conditional markup). It’s necessary to use the single quotes nested inside double-quotes as shown above (preferred) or a double-quoted string nested inside single-quotes like '"this"'.
If you want to have a Page Variable that returns the currently used password (more precisely, the last password entered), you can use
$FmtPV['$AuthPw'] = 'reset(array_keys((array)@$_SESSION["authpw"]))';
See also
- Cookbook:More custom page variables
- PmWiki.Variables — about variables internal to PmWiki.
- PmWiki.MarkupMasterIndex — complete list of PmWiki markups.
- PageTextVariables — page variables automatically made available through natural page markup or explicit page markup within the wiki text of the page.
- PmWiki.Markup Expressions — markup expressions can manipulate page variables
QIs there a variable like $LastModified, but which shows me the creation time?
No, but you can create one in config.php. For instance:
# add page variable {$PageCreationDate} in format yyyy-mm-dd
$FmtPV['$PageCreationDate'] = 'strftime("%Y-%m-%d", $page["ctime"])';
If you like the same format that you define in config.php with $TimeFmt use
$FmtPV['$Created'] = "strftime(\$GLOBALS['TimeFmt'], \$page['ctime'])";
This page may have a more recent version on pmwiki.org: PmWiki:PageVariables, and a talk page: PmWiki:PageVariables-Talk.
