author (intermediate)
The InterMap (also called InterWiki in some other wikis) is a system for defining links between WikiWikiWeb sites that was first developed by UseMod and Meatball (see UseMod:InterWiki and Meatball:InterWiki). The method is to use a word shortcut that stands for a defined path. InterMap links have the form MapPrefix:PagePath
, where the host prefix is converted to a partial URL based on entries in the site's intermap.txt
and localmap.txt
files.
The default intermap.txt
distributed with PmWiki (in the scripts/
directory) includes the following InterMap entries:
PmWiki: https://www.pmwiki.org/wiki/PmWiki/ Cookbook: https://www.pmwiki.org/wiki/Cookbook/ Skins: https://www.pmwiki.org/wiki/Skins/ Wiki: http://www.c2.com/cgi/wiki? UseMod: http://www.usemod.com/cgi-bin/wiki.pl? Meatball: http://www.usemod.com/cgi-bin/mb.pl? Wikipedia: https://en.wikipedia.org/wiki/ PITS: https://www.pmwiki.org/wiki/PITS/ PmL10n: https://www.pmwiki.org/wiki/Localization/ Path:
You can map your own prefixes in your local page Site.InterMap Δ.
Thus, "PmWiki:Variables" becomes "https://www.pmwiki.org/wiki/PmWiki/" + "Variables", a link to the PmWiki.Variables page on the official PmWiki web site, Wiki:FrontPage is a link to the front page of the first WikiWikiWeb, and Wikipedia:Stonehenge takes you to the Wikipedia article about the famous megaliths in England.
Like other links, you can use the double-bracket syntax to get different link text:
|
If you want to link just to what the intermap says (e.g. https://en.wikipedia.com/wiki/ for Wikipedia), then do [[Wikipedia:. | Wikipedia's main page]]
, which produces Wikipedia's main page. Note the . (period) after the Map: reference.
The special Path:
InterMap entry can be used to create "relative urls" in links.
The actual set of InterMap links at any site is defined by the site administrator via the Site.InterMap Δ page and the local/localmap.txt file.
An intermap entry takes the following format:
MapPrefix: https://example.com/partial/url/
The InterMap entry can be for any of the link schemes supported by PmWiki.
You can create your own InterMap links by doing one or more of the following:
local/localmap.txt
and place entries like the ones above in it.
local/farmmap.txt
and there place entries like the ones above in it.
These prefixes will be common to all the wikis in the farm.
Do not edit the file scripts/intermap.txt
directly! If you do, you'll
lose your changes when you upgrade PmWiki.
It's possible to use variables within your InterMap entries. The following
entries create ThisWiki:
and ThisPage:
shortcuts:
ThisWiki: $ScriptUrl ThisPage: {$PageUrl}
You can also define InterMap entries where the text of the entry is substituted into the middle of the URL. Just include '$1' in the URL where you want the substitution to take place. For example:
Jargon: http://catb.org/~esr/jargon/html/$1.html
would cause Jargon:F/feature-creep
to be converted to http://catb.org/~esr/jargon/html/F/feature-creep.html
.
It is possible to document your intermap prefixes directly in the page Site.InterMap Δ. The extra text will not cause a performance penalty, nor will it break the definition of prefixes. However, be aware that anything matching a line starting with a word and a colon (:) will be considered to define a prefix.
The order in which various sources are checked for definitions of prefixes
is controlled by the variable $InterMapFiles
. Currently the precedence
(highest to lowest is as follows):
$SiteGroup
.InterMap
$FarmD
/local/farmmap.txt
$FarmD
/scripts/intermap.txt
Are InterMap names case sensitive?
Yes, thus eAdmin:
is a different InterMap link than EAdmin:
.
How can I achieve a localmap.txt
mapping with the effect of Pics: Path:/somepathto/pics/
?
Use the following:
Pics: /somepathto/pics/
How can I define an InterMap in PHP?
Use the following:
$LinkFunctions['PmWikiHome:'] = 'LinkIMap'; $IMap['PmWikiHome:'] = 'https://pmwiki.org/wiki/$1';
How can I define an InterMap link that lets me refer to files at the server "root"?
From the page https://example.org/index.php/Main/HomePage
I want to create a relative link to a directory at the "root" level of the site. The fully qualified URL is https://example.org/commoninfo/infoaboutu.php
. I want to do this because the domain name will change, which would break an absolute link.
Root /
Root:commoninfo/infoaboutu.php
Or, you can use the predefined "Path:" prefix, as in Path:/commoninfo/infoaboutu.php
.
This page may have a more recent version on pmwiki.org: PmWiki:InterMap, and a talk page: PmWiki:InterMap-Talk.