[pmwiki-users] Custom page specific variable assignment syntax

Petko Yotov 5ko at 5ko.fr
Tue Aug 28 10:54:24 PDT 2018

This is a good way to learn more about PmWiki variables, and your 
suggestion for the documentation is great.

There are a few other solutions to your specific problem:

1. In a wiki page, you could use the built-in intermap prefix "Path:", I 
use this a lot:

(or define your own, see https://pmwiki.org/InterMap .)

2. The global variable $UrlScheme contains either http or https, if you 
need this from config.php or from an add-on.

3. In a wiki page, you can probably use either {$ScriptUrl} or 

You could define $ScriptUrl in config.php if PmWiki is unable to detect 
it correctly, possibly with a conditional.

You should bravely edit the documentation, I review all changes before a 
release, and do not worry about the other languages.

If you you have doubts whether what you post is 
correct/safe/appropriate, you can alternatively post it to the Talk 

BTW such a function can be called with a number of wikipage-related or 
global variables as arguments:

   $pn, $group, $name, $page, $GLOBALS["SomeVar"]

You can see the default definitions for $FmtPV from line 123 of 

If you have any questions do not hesitate to ask here on the mailing 
list or on the Talk pages on pmwiki.org.


On 28/08/2018 18:55, Kevin R. Bulgrien wrote:
> This note regards page specific variables described here:
>   https://www.pmwiki.org/wiki/PmWiki/PageVariables
> It is a suggestion to consider a minor addition to the
> Custom page variables section to add an example of using
> a user-defined function to construct a value to assign to
> a custom page variable.
> My task involved finding a way to keep two (almost) wiki
> sites consistent during a transition period using only
> periodic rsync of the master wiki to a temporary replica.
> Both domain and http vs. https changes occurred.  The
> main challenge was that some wiki content used hard-coded
> http://... URLs to other areas of the web space outside
> the wiki but on the same server.  These links broke when
> rsyncing updates to a different server.  I hoped not to
> change rendered content simply because I was moving the
> wiki to a new platform, and envisioned using computed
> variables that could be used in place of the hard-coded
> URLs.
> Use of custom page variables appeared viable, but I found
> it difficult to gain understanding of syntax rules that
> apply to defining a Page Variable via a moderately
> complex expression.  I tried a number of simple syntax
> structures with intermittent success though each time I
> tried to modify the simple examples, the change would
> invariably break some syntax rule I was not able to
> discern.
> In the end, by looking at various cookbook files, I found
> a function call assignment syntax structure that worked
> immediately and completely removed complexity of syntax.
> So much time was spent trying to get other syntax forms
> to work that it seems a documentation change could help
> others if it showed an example using a user-function to
> assign the FmtPV value.
> Without meaning to imply that the following example is
> without fault, the following illustrates the format:
> function BaseURL()
> {
>   $URLPrefix = "http";
>   if (! empty($_SERVER['HTTPS']))
>   {
>     if($_SERVER['HTTPS'] == 'on')
>     {
>       $URLPrefix .= "s";
>     }
>   }
>   return $URLPrefix .= "://" . $_SERVER['HTTP_HOST'] . "/Wiki";
> }
> $FmtPV['$BaseURL'] = 'BaseURL()';
> It seems it could be helpful if the custom page variable
> documentation mentioned a function call example as it has
> a very simple syntax and allows for complex computation of
> values to assign.  Even if understanding of the existing
> documentation is due to my own issues, perhaps I am not
> alone and there are others who might benefit from adding
> an example like this.
> I placed this code in config.php and made a handful of changes
> to replace hard coded URL text with {$BaseURL} references on a
> few affected wiki pages (though the code could have been placed
> in a cookbook PHP file included by config.php as cookbook files
> normally are).
> I am willing to edit the wiki myself to add a short example
> (probably without full text of the user-function) if it does
> not create a synchronization issue for other language pages
> I cannot edit, or, if this is seen as undesirable, to simply
> let this mailing list note suffice to put the information
> out there for others.

More information about the pmwiki-users mailing list