Page specific variables
PmWiki.PageVariables History
Hide minor edits - Show changes to output
August 31, 2011, at 11:58 AM
by
- Changed lines 1-117 from:
That's 2 cleevr by half and 2x2 clever 4 me. Thanks!
to:
(:title Page specific variables:)
(:description Documentation for "variables" that are associated with pages. :)
(:Summary: variables that are associated with pages:)
(:Audience: authors (intermediate) :)
[[#desc]]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 "{$Group}".
Note: Do not confuse these variables (set and used only in PmWiki pages) with [[PmWiki/Variables|PHP variables]]. Page variables can be read in PHP with the [[Cookbook:Functions#PageVar|PageVar()]] function.
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 "{MarkupMasterIndex$Title}".
[[#specialreferences]]
!! Special references
Special referenced variables are used to retain the context of the target page or main page for a [[variable(s)]] when:
* the variable is [[PmWiki/IncludeOtherPages|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(#specialreferences)]].
For example you can test to see if the page is part of another page
(:markup:)
(:if ! name {$FullName}:)
%comment% name of this page is not the same as the page this text was sourced from
->[[{$FullName}#anchor | more ...]]
(:ifend:)
(:markupend:)
or refer to the main page in a sidebar, footer, or header
(:markup class=horiz:)
This page is [[{*$FullName}]]
(:markupend:)
[[#specialreferencesend]]
!! Default page variables
The page variables defined for PmWiki are:
->[@{$Action}@] - page's url action argument, as in "{$Action}"
->[@{$BaseName}@] - page's "base" form (stripping any prefixes or suffixes defined via @@$BaseNamePatterns@@) as in "`{$BaseName}"
->[@{$DefaultGroup}@] - default group name, as in "{$DefaultGroup}"
->[@{$DefaultName}@] - name of default page, as in "`{$DefaultName}"
->[@{$Description}@] - page's description from the [@(:description:)@] markup, as in "{$Description}"
->[@{$FullName}@] - page's full name, as in "`{$FullName}"
->[@{$Group}@] - page's group name, as in "`{$Group}"
->[@{$Groupspaced}@] - spaced group name, as in "{$Groupspaced}"
->[@{$LastModified}@] - date page was edited, as in "{$LastModified}"
->[@{$LastModifiedBy}@] - page's last editor, as in "{$LastModifiedBy}"
->[@{$LastModifiedHost}@] - IP of page's last editor, as in "{$LastModifiedHost}"
->[@{$LastModifiedSummary}@] - Summary from last edit, as in "{$LastModifiedSummary}"
->[@{$LastModifiedTime}@] - time page was edited in unix-style timestamp, as in "{$LastModifiedTime}" %green%added version 2.2 beta 67%%
-->This can be used (preceded by '@') in [@{(ftime)}@] and other date/time markups.
->[@{$Name}@] - page name, as in "`{$Name}"
->[@{$Namespaced}@] - spaced page name, as in "{$Namespaced}"
->[@{$PageUrl}@] - page's url, as in "{$PageUrl}"
->[@{$PasswdRead}@] - "read" permissions for the page e.g. "{$PasswdRead}"
->[@{$PasswdEdit}@] - "edit" permissions for the page e.g. "{$PasswdEdit}"
->[@{$PasswdAttr}@] - "attr" permissions for the page e.g. "{$PasswdAttr}"
->[@{$RequestedPage}@] - page requested in URL, used on [[Site.PageNotFound]]. e.g. "{$RequestedPage}"
->[@{$SiteGroup}@] - default group name for e.g. RecentChanges, as in "{$SiteGroup}"
->[@{$Title}@] - page title (may differ from Name), as in "{$Title}"
->[@{$Titlespaced}@] - either the page title (if defined), or the spaced page name, as in "{$Titlespaced}"
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 "{$Author}"
->[@{$AuthId}@] - current authenticated id, as in "{$AuthId}" %red%Please note the lower case 'd'. [@{$AuthID}@] returns nothing
->[@{$Version}@] - PmWiki version, as in "{$Version}"
->[@{$VersionNum}@] - The internal version number, as in "{$VersionNum}"
->[@{$ScriptUrl}@] - The url to the pmwiki script, as in "{$ScriptUrl}"
!! 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.
* [[PmWiki/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
>>faq<< [[#faq]]
Q:Is there a variable like $LastModified, but which shows me the creation time?
A: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'])";
@]
(:description Documentation for "variables" that are associated with pages. :)
(:Summary: variables that are associated with pages:)
(:Audience: authors (intermediate) :)
[[#desc]]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 "{$Group}".
Note: Do not confuse these variables (set and used only in PmWiki pages) with [[PmWiki/Variables|PHP variables]]. Page variables can be read in PHP with the [[Cookbook:Functions#PageVar|PageVar()]] function.
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 "{MarkupMasterIndex$Title}".
[[#specialreferences]]
!! Special references
Special referenced variables are used to retain the context of the target page or main page for a [[variable(s)]] when:
* the variable is [[PmWiki/IncludeOtherPages|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(#specialreferences)]].
For example you can test to see if the page is part of another page
(:markup:)
(:if ! name {$FullName}:)
%comment% name of this page is not the same as the page this text was sourced from
->[[{$FullName}#anchor | more ...]]
(:ifend:)
(:markupend:)
or refer to the main page in a sidebar, footer, or header
(:markup class=horiz:)
This page is [[{*$FullName}]]
(:markupend:)
[[#specialreferencesend]]
!! Default page variables
The page variables defined for PmWiki are:
->[@{$Action}@] - page's url action argument, as in "{$Action}"
->[@{$BaseName}@] - page's "base" form (stripping any prefixes or suffixes defined via @@$BaseNamePatterns@@) as in "`{$BaseName}"
->[@{$DefaultGroup}@] - default group name, as in "{$DefaultGroup}"
->[@{$DefaultName}@] - name of default page, as in "`{$DefaultName}"
->[@{$Description}@] - page's description from the [@(:description:)@] markup, as in "{$Description}"
->[@{$FullName}@] - page's full name, as in "`{$FullName}"
->[@{$Group}@] - page's group name, as in "`{$Group}"
->[@{$Groupspaced}@] - spaced group name, as in "{$Groupspaced}"
->[@{$LastModified}@] - date page was edited, as in "{$LastModified}"
->[@{$LastModifiedBy}@] - page's last editor, as in "{$LastModifiedBy}"
->[@{$LastModifiedHost}@] - IP of page's last editor, as in "{$LastModifiedHost}"
->[@{$LastModifiedSummary}@] - Summary from last edit, as in "{$LastModifiedSummary}"
->[@{$LastModifiedTime}@] - time page was edited in unix-style timestamp, as in "{$LastModifiedTime}" %green%added version 2.2 beta 67%%
-->This can be used (preceded by '@') in [@{(ftime)}@] and other date/time markups.
->[@{$Name}@] - page name, as in "`{$Name}"
->[@{$Namespaced}@] - spaced page name, as in "{$Namespaced}"
->[@{$PageUrl}@] - page's url, as in "{$PageUrl}"
->[@{$PasswdRead}@] - "read" permissions for the page e.g. "{$PasswdRead}"
->[@{$PasswdEdit}@] - "edit" permissions for the page e.g. "{$PasswdEdit}"
->[@{$PasswdAttr}@] - "attr" permissions for the page e.g. "{$PasswdAttr}"
->[@{$RequestedPage}@] - page requested in URL, used on [[Site.PageNotFound]]. e.g. "{$RequestedPage}"
->[@{$SiteGroup}@] - default group name for e.g. RecentChanges, as in "{$SiteGroup}"
->[@{$Title}@] - page title (may differ from Name), as in "{$Title}"
->[@{$Titlespaced}@] - either the page title (if defined), or the spaced page name, as in "{$Titlespaced}"
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 "{$Author}"
->[@{$AuthId}@] - current authenticated id, as in "{$AuthId}" %red%Please note the lower case 'd'. [@{$AuthID}@] returns nothing
->[@{$Version}@] - PmWiki version, as in "{$Version}"
->[@{$VersionNum}@] - The internal version number, as in "{$VersionNum}"
->[@{$ScriptUrl}@] - The url to the pmwiki script, as in "{$ScriptUrl}"
!! 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.
* [[PmWiki/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
>>faq<< [[#faq]]
Q:Is there a variable like $LastModified, but which shows me the creation time?
A: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'])";
@]
August 26, 2011, at 05:48 PM
by
- xMnzlfafhAcUyCoChanged line 1 from:
I sppuose that sounds and smells just about right.
to:
That's 2 cleevr by half and 2x2 clever 4 me. Thanks!
August 26, 2011, at 05:47 PM
by
- muoIggFvUChanged line 1 from:
Hey, sulbte must be your middle name. Great post!
to:
I sppuose that sounds and smells just about right.
August 26, 2011, at 05:39 PM
by
- RyeLBBjTCTHjjKKMQAOChanged line 1 from:
RQgSpN , [url=http://hrqdcerrthmi.com/]hrqdcerrthmi[/url], [link=http://vcyszpqzkejp.com/]vcyszpqzkejp[/link], http://dtukyttgzhym.com/
to:
Hey, sulbte must be your middle name. Great post!
August 26, 2011, at 05:04 PM
by
- SNJTGYNecLtLChanged line 1 from:
I think you hit a bullseye there felals!
to:
RQgSpN , [url=http://hrqdcerrthmi.com/]hrqdcerrthmi[/url], [link=http://vcyszpqzkejp.com/]vcyszpqzkejp[/link], http://dtukyttgzhym.com/
August 26, 2011, at 05:01 PM
by
- HmUFMwvFudMChanged line 1 from:
Hahhaaha. I'm not too bright today. Great post!
to:
I think you hit a bullseye there felals!
August 26, 2011, at 04:49 PM
by
- XcnimFYFojAPQBYChanged line 1 from:
Yo, that's what's up trutfhully.
to:
Hahhaaha. I'm not too bright today. Great post!
August 26, 2011, at 05:41 AM
by
- KPVuelEdlLChanged line 1 from:
Great thinking! That really berkas the mold!
to:
Yo, that's what's up trutfhully.
August 26, 2011, at 02:51 AM
by
- iFKwMDEqLytovChanged line 1 from:
That's not even 10 mitnues well spent!
to:
Great thinking! That really berkas the mold!
August 26, 2011, at 12:14 AM
by
- tetpXowxBuUkGpmGdChanged line 1 from:
PX5xjZ <a href="http://xginnqzfikqc.com/">xginnqzfikqc</a>
to:
That's not even 10 mitnues well spent!
August 25, 2011, at 04:14 PM
by
- lpdWXjDhdUkxhWChanged line 1 from:
That's way more clever than I was epxeictng. Thanks!
to:
PX5xjZ <a href="http://xginnqzfikqc.com/">xginnqzfikqc</a>
August 25, 2011, at 03:46 PM
by
- RAclSurZCPYkZgddLSChanged line 1 from:
I'm so glad that the itnreent allows free info like this!
to:
That's way more clever than I was epxeictng. Thanks!
August 25, 2011, at 11:10 AM
by
- VLOoCwnbjChanged line 1 from:
Stay informaitve, San Diego, yeah boy!
to:
I'm so glad that the itnreent allows free info like this!
August 25, 2011, at 08:24 AM
by
- NegmXWeUPChanged line 1 from:
I don't know who you wrote this for but you hpleed a brother out.
to:
Stay informaitve, San Diego, yeah boy!
July 19, 2011, at 08:13 PM
by
- VZKCjNXcaYSIoXfWfFChanged line 1 from:
I really appreciate free, succinct, rlaeible data like this.
to:
I don't know who you wrote this for but you hpleed a brother out.
July 19, 2011, at 06:43 PM
by
- YVLXHljdsSChanged line 1 from:
Times are changing for the bteter if I can get this online!
to:
I really appreciate free, succinct, rlaeible data like this.
July 19, 2011, at 06:02 PM
by
- QXWeTsUjSZKyChanged line 1 from:
Kneokcd my socks off with knowledge!
to:
Times are changing for the bteter if I can get this online!
July 18, 2011, at 02:39 PM
by
- iOANHvqxwsSxMyjChanged line 1 from:
Your article was excllenet and erudite.
to:
Kneokcd my socks off with knowledge!
July 18, 2011, at 10:01 AM
by
- lQKgqZXlyhyChanged line 1 from:
Begun, the great ietnrent education has.
to:
Your article was excllenet and erudite.
July 18, 2011, at 05:34 AM
by
- yBvdSWguChanged line 1 from:
f2sU5C , [url=http://rfngxdlhrrag.com/]rfngxdlhrrag[/url], [link=http://vxcomfdqwdem.com/]vxcomfdqwdem[/link], http://svhnuxtcgpjn.com/
to:
Begun, the great ietnrent education has.
July 07, 2011, at 02:47 PM
by
- dTTmosuxsGvLmGxHChanged line 1 from:
hOnows <a href="http://uepuoatpcgib.com/">uepuoatpcgib</a>
to:
f2sU5C , [url=http://rfngxdlhrrag.com/]rfngxdlhrrag[/url], [link=http://vxcomfdqwdem.com/]vxcomfdqwdem[/link], http://svhnuxtcgpjn.com/
July 07, 2011, at 09:56 AM
by
- WuCjpuQaMFJaQFsOmSChanged line 1 from:
This piece was cgoent, well-written, and pithy.
to:
hOnows <a href="http://uepuoatpcgib.com/">uepuoatpcgib</a>
July 06, 2011, at 04:08 PM
by
- mIsTNnxDmChanged lines 1-117 from:
(:title Page specific variables:)
(:description Documentation for "variables" that are associated with pages. :)
(:Summary: variables that are associated with pages:)
(:Audience: authors (intermediate) :)
[[#desc]]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 "{$Group}".
Note: Do not confuse these variables (set and used only in PmWiki pages) with [[PmWiki/Variables|PHP variables]]. Page variables can be read in PHP with the [[Cookbook:Functions#PageVar|PageVar()]] function.
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 "{MarkupMasterIndex$Title}".
[[#specialreferences]]
!! Special references
Special referenced variables are used to retain the context of the target page or main page for a [[variable(s)]] when:
* the variable is [[PmWiki/IncludeOtherPages|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(#specialreferences)]].
For example you can test to see if the page is part of another page
(:markup:)
(:if ! name {$FullName}:)
%comment% name of this page is not the same as the page this text was sourced from
->[[{$FullName}#anchor | more ...]]
(:ifend:)
(:markupend:)
or refer to the main page in a sidebar, footer, or header
(:markup class=horiz:)
This page is [[{*$FullName}]]
(:markupend:)
[[#specialreferencesend]]
!! Default page variables
The page variables defined for PmWiki are:
->[@{$Action}@] - page's url action argument, as in "{$Action}"
->[@{$BaseName}@] - page's "base" form (stripping any prefixes or suffixes defined via @@$BaseNamePatterns@@) as in "`{$BaseName}"
->[@{$DefaultGroup}@] - default group name, as in "{$DefaultGroup}"
->[@{$DefaultName}@] - name of default page, as in "`{$DefaultName}"
->[@{$Description}@] - page's description from the [@(:description:)@] markup, as in "{$Description}"
->[@{$FullName}@] - page's full name, as in "`{$FullName}"
->[@{$Group}@] - page's group name, as in "`{$Group}"
->[@{$Groupspaced}@] - spaced group name, as in "{$Groupspaced}"
->[@{$LastModified}@] - date page was edited, as in "{$LastModified}"
->[@{$LastModifiedBy}@] - page's last editor, as in "{$LastModifiedBy}"
->[@{$LastModifiedHost}@] - IP of page's last editor, as in "{$LastModifiedHost}"
->[@{$LastModifiedSummary}@] - Summary from last edit, as in "{$LastModifiedSummary}"
->[@{$LastModifiedTime}@] - time page was edited in unix-style timestamp, as in "{$LastModifiedTime}" %green%added version 2.2 beta 67%%
-->This can be used (preceded by '@') in [@{(ftime)}@] and other date/time markups.
->[@{$Name}@] - page name, as in "`{$Name}"
->[@{$Namespaced}@] - spaced page name, as in "{$Namespaced}"
->[@{$PageUrl}@] - page's url, as in "{$PageUrl}"
->[@{$PasswdRead}@] - "read" permissions for the page e.g. "{$PasswdRead}"
->[@{$PasswdEdit}@] - "edit" permissions for the page e.g. "{$PasswdEdit}"
->[@{$PasswdAttr}@] - "attr" permissions for the page e.g. "{$PasswdAttr}"
->[@{$RequestedPage}@] - page requested in URL, used on [[Site.PageNotFound]]. e.g. "{$RequestedPage}"
->[@{$SiteGroup}@] - default group name for e.g. RecentChanges, as in "{$SiteGroup}"
->[@{$Title}@] - page title (may differ from Name), as in "{$Title}"
->[@{$Titlespaced}@] - either the page title (if defined), or the spaced page name, as in "{$Titlespaced}"
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 "{$Author}"
->[@{$AuthId}@] - current authenticated id, as in "{$AuthId}" %red%Please note the lower case 'd'. [@{$AuthID}@] returns nothing
->[@{$Version}@] - PmWiki version, as in "{$Version}"
->[@{$VersionNum}@] - The internal version number, as in "{$VersionNum}"
->[@{$ScriptUrl}@] - The url to the pmwiki script, as in "{$ScriptUrl}"
!! 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.
* [[PmWiki/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
>>faq<< [[#faq]]
Q:Is there a variable like $LastModified, but which shows me the creation time?
A: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'])";
@]
(:description Documentation for "variables" that are associated with pages. :)
(:Summary: variables that are associated with pages:)
(:Audience: authors (intermediate) :)
[[#desc]]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 "{$Group}".
Note: Do not confuse these variables (set and used only in PmWiki pages) with [[PmWiki/Variables|PHP variables]]. Page variables can be read in PHP with the [[Cookbook:Functions#PageVar|PageVar()]] function.
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 "{MarkupMasterIndex$Title}".
[[#specialreferences]]
!! Special references
Special referenced variables are used to retain the context of the target page or main page for a [[variable(s)]] when:
* the variable is [[PmWiki/IncludeOtherPages|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(#specialreferences)]].
For example you can test to see if the page is part of another page
(:markup:)
(:if ! name {$FullName}:)
%comment% name of this page is not the same as the page this text was sourced from
->[[{$FullName}#anchor | more ...]]
(:ifend:)
(:markupend:)
or refer to the main page in a sidebar, footer, or header
(:markup class=horiz:)
This page is [[{*$FullName}]]
(:markupend:)
[[#specialreferencesend]]
!! Default page variables
The page variables defined for PmWiki are:
->[@{$Action}@] - page's url action argument, as in "{$Action}"
->[@{$BaseName}@] - page's "base" form (stripping any prefixes or suffixes defined via @@$BaseNamePatterns@@) as in "`{$BaseName}"
->[@{$DefaultGroup}@] - default group name, as in "{$DefaultGroup}"
->[@{$DefaultName}@] - name of default page, as in "`{$DefaultName}"
->[@{$Description}@] - page's description from the [@(:description:)@] markup, as in "{$Description}"
->[@{$FullName}@] - page's full name, as in "`{$FullName}"
->[@{$Group}@] - page's group name, as in "`{$Group}"
->[@{$Groupspaced}@] - spaced group name, as in "{$Groupspaced}"
->[@{$LastModified}@] - date page was edited, as in "{$LastModified}"
->[@{$LastModifiedBy}@] - page's last editor, as in "{$LastModifiedBy}"
->[@{$LastModifiedHost}@] - IP of page's last editor, as in "{$LastModifiedHost}"
->[@{$LastModifiedSummary}@] - Summary from last edit, as in "{$LastModifiedSummary}"
->[@{$LastModifiedTime}@] - time page was edited in unix-style timestamp, as in "{$LastModifiedTime}" %green%added version 2.2 beta 67%%
-->This can be used (preceded by '@') in [@{(ftime)}@] and other date/time markups.
->[@{$Name}@] - page name, as in "`{$Name}"
->[@{$Namespaced}@] - spaced page name, as in "{$Namespaced}"
->[@{$PageUrl}@] - page's url, as in "{$PageUrl}"
->[@{$PasswdRead}@] - "read" permissions for the page e.g. "{$PasswdRead}"
->[@{$PasswdEdit}@] - "edit" permissions for the page e.g. "{$PasswdEdit}"
->[@{$PasswdAttr}@] - "attr" permissions for the page e.g. "{$PasswdAttr}"
->[@{$RequestedPage}@] - page requested in URL, used on [[Site.PageNotFound]]. e.g. "{$RequestedPage}"
->[@{$SiteGroup}@] - default group name for e.g. RecentChanges, as in "{$SiteGroup}"
->[@{$Title}@] - page title (may differ from Name), as in "{$Title}"
->[@{$Titlespaced}@] - either the page title (if defined), or the spaced page name, as in "{$Titlespaced}"
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 "{$Author}"
->[@{$AuthId}@] - current authenticated id, as in "{$AuthId}" %red%Please note the lower case 'd'. [@{$AuthID}@] returns nothing
->[@{$Version}@] - PmWiki version, as in "{$Version}"
->[@{$VersionNum}@] - The internal version number, as in "{$VersionNum}"
->[@{$ScriptUrl}@] - The url to the pmwiki script, as in "{$ScriptUrl}"
!! 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.
* [[PmWiki/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
>>faq<< [[#faq]]
Q:Is there a variable like $LastModified, but which shows me the creation time?
A: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'])";
@]
to:
This piece was cgoent, well-written, and pithy.