FAQ
This page will attempt to summarize some of the more commonly asked questions. The answers are on the corresponding pages (see link). If you have a question which isn't answered here, you can leave your question on the Questions page or search for documentation using the search facility. More documentation can be found on the documentation index page.
Basic PmWiki editing rules
I'm new to PmWiki, where can I find some basic help for getting started?
The Basic Editing page is a good start. From there, you can just follow the navigational links at the top or the bottom of the page (they are called Wiki Trails) to the next pages, or to the Documentation Index page, which provides an outline style index of essential documentation pages, organized from basic to advanced.
How do I include special characters such as Copyright (©) and Trademark (® or ™) on my wiki pages?
See special characters on how to insert special characters that don't appear on your keyboard.
How can I preserve line-breaks from the source text?
PmWiki normally treats consecutive lines of text as being a paragraph, and merges and wraps lines together on output. This is consistent with most other wiki packages. An author can use the (:linebreaks:)
directive to cause the following lines of markup text in the page to be kept as separate lines in the output. Or a wiki administrator can set in config.php
to force literal new lines for the whole site.
$HTMLPNewline
= '<br/>';
Can I just enter HTML directly?
By default (and by design), PmWiki does not support the use of HTML elements in the editable markup for wiki pages. There are a number of reasons for this described in the PmWiki Philosophy and Audiences. Enabling HTML markup within wiki pages in a collaborative environment may exclude some potential authors from being able to edit pages, and pose a number of display and security issues. However, a site administrator can use the Cookbook:Enable HTML recipe to enable the use of HTML markup directly in pages.
Where can I find more documentation?
See the documentation index and the markup master index pages.
Creating New Pages
How do I create a new page?
Typing [[my new page]]
will create a link to the new page. There's a lot you can do with double bracket links.
Why do some new pages have a title with spaces like "Creating New Pages" and others end up with a WikiWord-like title like "CreatingNewPages"?
The default page title is simply the name of page, which is normally stored as "CreatingNewPages." However, you can override a page's title by using the (:title Creating New Pages:)
directive. This is especially useful when there are special characters or capitalization that you want in the title that cannot be used in the page name.
Links
How do I create a link that will open as a new window?
Use the %newwin%
wikistyle, as in:
%newwin% https://example.com/ %% | https://example.com/(approve sites) |
How do I create a link that will open a new window, and configure that new window?
This requires javascript. See Cookbook:PopupWindow.
How do I place a mailing address in a page?
Use the mailto:
markup, as in one of the following:
* mailto:myaddress@example.com * [[mailto:myaddress@example.com]] * [[mailto:myaddress@example.com | email me]] * [[mailto:myaddress@example.com?subject=Some subject | email me]] |
The markup [[mailto:me@example.com?cc=someoneelse@example.com&bcc=else@example.com&subject=Pre-set Subject&body=Pre-set body | display text]]
lets you specify more parameters like the message body and more recipients (may not work in all browsers and e-mail clients).
See also Cookbook:DeObMail for information on protecting email addresses from spammers.
How can I enable links to other protocols, such as nntp:, ssh:, xmpp:, etc?
How do I make a WikiWord link to an external page instead of a WikiPage?
Use link markup. There are two formats:
[[https://example.com/ | WikiWord]] [[WikiWord -> https://example.com/]]
How do I find all of the pages that link to another page (i.e., backlinks)?
In the wiki search form, use link=Group.Page
to find all pages linking to Group.Page.
Use the link=
option of the (:pagelist:)
directive, as in
(:pagelist link=SomePage list=all:) -- show all links to SomePage (:pagelist link={$FullName} list=all:) -- show all links to the current page
Note that (with a few exceptions) includes, conditionals, pagelists, searchresults, wikitrails, and redirects are not evaluated for Wikilinks, and so any links they put on the page will not be found as backlinks. All other directives and markup, for example links brought to the page by (:pmform:), will be found.
What link schemes does PmWiki support?
How do I open external links in a new window or mark them with an icon?
How can I use an image as a link?
Use [[Page| Attach:image.jpg ]] or [[ https://site | https://site/image.jpg ]] See Images#links
Why my browser does not follow local file:// links?
For security reasons, most browsers will only enable file:// links if the page containing the link is itself on the local drive. In other words, most browsers do not allow links to file:// from pages that were fetched using https://(approve sites) such as in a PmWiki site. See also Cookbook:DirList for a workaround.
How links to the first existed page ? for example [[Group1.Page Group2.Page|Page]]
(:if exists Group1.Page:) [[Group1.Page|Page]] (:elseif exists Group2.Page:) [[Group2.Page|Page]] (:ifend:)
How do I make Reference links also show up on the bottom of the page like Wikipedia? Or, how do I list all links on a page?
See Cookbook:Footnotes.
Images
Why are some external images correctly embedded, and others aren't?
If the current page is on a secure URL with the "https://" protocol, some browsers will refuse to load pictures from insecure URLs (the other way around is allowed). Also, some webmasters configure their servers to disallow hotlinking.
Is it possible to link an image on PmWiki without using a fully qualified URL?
Yes. For images that are attachments, the general format is Attach:Groupname./image.gif
. To link to an image that is on the same server, use Path:/path/to/image.gif
where "Path:" replaces the server name like "https://www.example.com".
Can I attach a client image file on PmWiki?
Yes, see Uploads .
How can I include a page from another group that contains an attached image?
Include the page in the normal way, ie (:include GroupName.Pagename:)
. In the page to be included (that contains the image) change Attach:filename.ext
to Attach:{$Group}./filename.ext
.
Why, if I put an image with rframe or rfloat and immediatly after that I open a new page section with ! the section title row is below the image instead of on the left side?
Because the CSS for headings such as ! contains an element clear:both which forces this behaviour. Redefine the CSS locally if you want to stop this happening, but I think the bottom border (that underlines the heading) would need further re-definition. I just use bolding for the title, and 4 dashes below ----
to separate a new section, and it saves the effort of fiddling with the core definitions.
Unlike the lframe and rframe directives, cframe does not fully honour the width setting. While the frame itself resizes to match the request, the enclosed image does not, and retains its original width. Effect is the same in IE and Fx. I've added an example beneath the standard example above.
Is it possible to disallow all images? I already disabled uploads but I also want to disallow external images from being shown on my wiki pages.
Yes, add to config.php
:
DisableMarkup('img'); $ImgExtPattern = "$^";
How can I make it so that when I place an image in a page, the block of text it is in is a <p>
(paragraph) rather than a <div>
(division)?
If you just want it to happen for a single image (instead of all), then
try putting [==]
at the beginning of the line, as in:
[==] https://www.pmwiki.org/pub/pmwiki/pmwiki-32.gif
Having [==]
at the beginning of a line forces whatever follows to
be part of a paragraph.
Is there any way to use relative paths for images?
See Cookbook:RelativeLinks and $EnableLinkPageRelative
.
Is there a way to attach a BMP and have it display rather than link?
Add to config.php
the following line:
$ImgExtPattern = "(?:$ImgExtPattern|\\.bmp|\\.BMP)";
Note that BMP images are uncompressed and quite heavy. You may wish to convert them to PNG (lossless) or JPG (lossy) format, and thus reduce 5-20 times their filesizes.
How do I add an image type to $ImgExtPattern
and yet have it include any future default image types added in PmWiki?
You can append the extensions to the $ImgExtPattern
variable this way:
$ImgExtPattern = "(?:$ImgExtPattern|\\.webp|\\.WEBP)";
Is there a way to have a table to the left or right of an image?
Yes, see TableAndImage(approve sites).
Tables
How do I create a basic table?
Tables are created via use of the double pipe character: ||
. Lines beginning with this markup denote rows in a table; within such lines the double-pipe is used to delimit cells. In the examples below a border is added for illustration (the default is no border).
|| border=1 rules=rows frame=hsides || cell 1 || cell 2 || cell 3 || || cell 1 || cell 2 || cell 3 || |
|
How do I create cell headers?
Header cells can be created by placing ! as the first character of a cell. Note that these are table headers, not headings, so it doesn't extend to !!, !!!, etc.
|| border=1 rules=cols frame=vsides ||! cell 1 ||! cell 2 ||! cell 3 || || cell 1 || cell 2 || cell 3 || |
|
How do I obtain a table with thin lines and more distance to the content?
"Thin lines" is tricky and browser dependent, but the following works for Firefox and IE (Nov. 2009):
||border="1" style="border-collapse:collapse" cellpadding="5" width=66% ||!Header ||! Header || '''Header'''|| ||cells || with || padding|| || || || || |
|
How do I create an advanced table?
See table directives
My tables are by default centered. When I try to use '||align=left' they don't align left as expected.
Use ||style="margin-left:0px;" instead.
How can I specify the width of columns?
You can define the widths via custom styles, see Cookbook:FormattingTables and $TableCellAttrFmt
. Add in config.php :
$TableCellAttrFmt = 'class=col$TableCellCount';
table.column td.col1 { width: 120px; } table.column td.col3 { width: 40px; }
How can I display a double pipe "||" in cell text using basic table markup?
Escape it with [=||=]
to display || unchanged.
How do I apply styles to the elements of the table, like an ID to the table row, or a class/style to the TD?
See $WikiStyleApply.
Alternately, use table directives, which allow specifying styling either directly (style="...") or by a class="..." attribute for CSS.
Is there a simple way to change the table defaults? I prefer a border and I'm tired of adding it to every table.
You can set
and/or define your own styles in your stylesheet. The "simpletable" class is available in the core skins, and can be redefined or overridden in pub/css/local.css.
$SimpleTableDefaultClassName
= 'simpletable';
Table directives
Can I define table headers using the table directive markup?
Yes, use (:head:)
or (:headnr:)
with PmWiki version 2.2.11 or newer. See also Cookbook:AdvancedTableDirectives.
Is it possible to do nested tables?
Yes, if you nest simple tables inside advanced tables. See also Cookbook:AdvancedTableDirectives.
Is it possible to add background images to tables and table cells?
Yes, see Cookbook:BackgroundImages.
Is it possible to apply styles to the elements of the table, like an ID to the table row, or a class/style to the TD?
Yes, see $WikiStyleApply.
Is it possible to automatically generate columns or rows in tables, i.e. without having to do a lot of counting?
Yes, this is possible with the Cookbook:CreateColumns recipe - it allows you to specify a certain number of columns, and/or to specify a certain number of items per column. Plus, someone has provided some similar markup on the TableDirectives-Talk page.
Is it possible to use table captions in table directives similar to simple tables? Tried ! Captiontext !
and (:caption:)
. Didn#t work. How to do?
Yes, this is possible with the Cookbook:AdvancedTableDirectives recipe - There you will find a (:caption:)
directive.
PageDirectives
Can I get (:redirect:)
to return a "moved permanently" (HTTP 301) status code?
Use (:redirect PageName status=301:)
.
Is there any way to prevent the "redirected from" message from showing at the top of the target page when I use (:redirect:)
?
From version 2.2.1 on, set in config.php
and in the page $EnableRedirectQuiet
=1;(:redirect OtherPage quiet=1:)
for a quiet redirect.
Is there any method for redirecting to the equivalent page in a different group, i.e. from BadGroup/thispage => GoodGroup/thispage using similar markup to (:redirect Goodgroup.{Name}:)?
(:redirect Goodgroup.{$Name}:)
works if you want to put it in one page.
(:redirect Goodgroup.{*$Name}:)
into Badgroup.GroupHeader
- however, that only works with pages that really exist in Goodgroup
; if you visit a page in Badgroup
without a corresponding page of the same name in Goodgroup
, instead of being redirected to a nonexistant page, you get the redirect Directive at the top of the page.
(:if exists Goodgroup.{*$Name}:)(:redirect Goodgroup.{*$Name}:)(:ifend:)
in Badgroup.GroupHeader
you get redirected to Goodgroup.Name
if it exists, otherwise you get Badgroup.Name
without the bit of code displayed.
How can a wiki enable linebreaks by default, i.e. without having the directive (:linebreaks:)
in a page or in a GroupHeader?
Add to config.php
such a line:$HTMLPNewline = '<br/>';
IncludeOtherPages
What's the maximum number of includes that can exist in a page?
$MaxIncludes
)
By default, PmWiki places a limit of 50 include directives for any given page, to prevent runaway infinite loops and other situations that might eat up server resources. (Two of these are GroupHeader and GroupFooter.) The limit can be modified by the wiki administrator via the $MaxIncludes
variable.
Is there any way to include from a group of pages without specifying by exact name, e.g. between Anchor X and Y from all pages named IFClass-* ?
This can be achieved using page lists.
There appears to be a viewing issue when the included page contains the (:title:) directive.
In a default installation, the last title in the page overrides previous ones so you can place your (:title :) directive at the bottom of the page, after any includes. See also $EnablePageTitlePriority
.
How to test to see if the page is part of another page?
(:if ! name {PmWiki.IncludeOtherPages$FullName}:) %comment% name of this page is not the same as the page this text was sourced from ->[[{PmWiki.IncludeOtherPages$FullName}#anchor | more ...]] (:ifend:) |
|
Is there any way to include (chapters of) pages which are protected (authuser.php)?
You can achieve this the other way around: have the public sections in a public page (passwdread=@nopass or @_site_read) and include those into both the protected page, and the public page.
Note that it is strongly recommended to NOT hide sensitive content inside a conditional in an unprotected page.
InterMap
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
.
PageLists
fmt=#includefaq
- Include just the#faq
sections from pages in the list. (This can also be expensive, especially if the list includes pages that don't have the[[#faq]]
anchor!)fmt=#description
- List pages and append the page's description if it exists. Creates dash by all names, but adding a nested loop to get rid of it causes markup problems (nested loops are not allowed).fmt=#simplename
- Simple bullet list of page names, without the Group name.fmt=#simplenamespaced
- Simple bullet list of spaced page names, without the Group name.fmt=#titlesummary
- A simple bullet list of page title and summary, defined in page by(:title ttttt:)
and(:Summary:sssss:)
markup.
These formats are defined by page list templates, which can be customized.
This format is not predefined by a page list template:
fmt=count
- Display the number of pages in the list (note the absence of the "#"). In a trail,fmt=count
counts existing and non-existing pages ; to limit count to existing pages, use :if="exists {=$FullName}" fmt=count
(mailing list(approve sites)).
link= and category=
The "link=
" and "category=
" arguments implement "backlinks" -- i.e., it returns a list of pages with a link to the target, or declared in the category. It's especially useful for category pages and finding related pages.
The category=Name
argument differs from link=Category.Name
as it only lists pages declared in the category with the markup [[!Name]]
, and does not include pages simply linking to [[Category/Name]]
(unless they also contain [[!Name]]
).
- all pages with a link to PmWiki.DocumentationIndex
(:pagelist link=PmWiki.DocumentationIndex:)
- all pages with links to the current page
(:pagelist link={$FullName}:)
- all pages in the "Skins" category
(:pagelist category=Skins:)
Since PmWiki 2.3.0, link=
and category=
accept multiple and negative targets and wildcard lists, see the section Wildcards.
Note, link=
and category=
will ignore the directives (:if...:)
, (:include...:)
, (:redirect...:)
, (:pagelist...:)
, and page text variable directives, while searching for links in a page. That means links in included pages will not be found, and links inside non-displayed conditional markup will be found. See PageTextVariables for ways to hide a link on a page while still allowing link=
to find it.
Note: The new category=
argument requires all pages containing [[!Category]]
links to be reindexed. See the recipe Cookbook:ReindexCategories which can automate this.
count=
The "count=
" option provides the ability to
- limit the pagelist to a specific number of pages
- subsets of a list
- return items from the end of a list, subsets of a list
- display pages in reverse sequence
A simple bullet list of ten most recently modified pages |
|
Display the first ten pages of a list |
|
Negative numbers specify pages to be displayed from the end of the list: |
|
Ranges may be specified using '..', thus: |
count=1..10 # first ten pages of list count=5..10 # 5th through 10th pages of list |
Negative numbers in ranges count from the end of the list: |
|
Omitting the start or end of the range uses the start or end of the list: |
count=10.. # skip first ten pages count=..10 # 1st through 10th page of list count=-10.. # last ten pages of list count=..-10 # all but the last nine pages |
Ranges can be reversed, indicating that the order of pages in the output should likewise be reversed: |
count=5..10 # 5th through 10th pages of list count=10..5 # same as 5..10 but in reverse sequence count=-1..1 # all pages in reverse sequence |
"Reverse sequence" here refers to the sequence after any sorting has taken place. Therefore the three directives to the right are equivalent: |
(:pagelist order=-name count=10:) (:pagelist order=-name count=1..10:) (:pagelist order=name count=-1..-10:) |
wrap=
The "wrap
" option has the values, none and inline.
With "wrap=inline" and "wrap=none", the output from pagelist (markup or HTML) is directly embedded in a page's markup without any surrounding <div> class=...</div>
tags.
With "wrap=inline", any surrounding <ul>
is continued. Without "wrap=inline", the HTML output starts a new <ul>
. This is important if you want to get a second level <ul>
produced by the page list since starting a new <ul>
with "**" doesn't yield a second level <ul>
but <dl><dd><ul>...
"wrap=inline" likely has other effects since it suppresses the call to $FPLTemplateMarkupFunction
(being MarkupToHTML by default).
class=
By default, a pagelist has the 'fpltemplate' class. The 'bygroup', 'simple', 'group' and 'title' page list formats have specific class names fplbygroup, fplsimple etc. You can set any class using the class=
parameter or by setting the $FPLFormatOpt
array.
request=
With (:pagelist [other parameters] request=1:)
you can override most pagelist parameters, by providing request parameters in the URL.
For example, (:pagelist order=name request=1:)
will normally sort the list by name. But if the page's URL contains ?order=time
, the list will be sorted by time. If the URL contains ?order=
, the list will be unordered. Note: In the URL, encode any "#"s that are in your parameters as "%23". Since this parameter gives users who don't have edit rights the ability to run a pagelist of their choosing, consider its security implications for your website before using it.
Since version 2.2.71, it is possible to explicitly allow only certain parameters that can be overridden, or to disallow some parameters to be overridden. If you need this, instead of 1, enter the parameter names.
Allow all parameters to be overridden:(:pagelist request=1:)Allow only 'order' and 'count' parameters to be overridden:
(:pagelist request=order,count:)Allow all parameters to be overridden, except 'fmt' and 'trail', note the "minus" sign before each forbidden parameter:
(:pagelist request=-fmt,-trail:)
req=1
The req=1
parameter requires that search terms be posted (that is, that the user presses "search" on a search form, or follows a link with additional parameters like [[Page?q=terms&order=-name]]
) before the pagelist is executed. Note that (:pagelist request=1 req=1:)
works mostly like (:searchresults:)
without the lines "Results of search for ..." and "X pages found out of Y pages searched". Both "request=1" and "req=1" are needed.
When a search is performed, either via a searchbox
directive, or via the search form of the skin, if the page contains a "searchresults
" directive, that page will be used to display the results of the search; if the page doesn't have a "searchresults
" directive, the page Site.Search
will be used to display the results.
passwd=
The "passwd
" option returns only those pages that have some sort of password attribute on them.
if=
The "if
" option allows a condition to be specified as part of the pagelist processing, rather than from within the page list template. Only those pages for which the condition is true are retrieved. Anything that could go within an (:if ...:)
can be used as a condition. For example
(:pagelist if="date {(ftime %GW%V {*$Name})} {=$Name}" :)
returns all of the pages where the name is in the same week as that of the current page.
If any arguments within the quotes could contain a space they must be quoted:
(:pagelist if="date 2009-01-01..2009-12-31 '{=$:Mydate}'" :)
order=
The "order=
" option allows the pages in the list to be sorted according to different criteria. Use a minus sign to indicate a reverse sort. Multiple sorting criteria can be specified using a comma, and you can create your own custom pagelist sort order:
order=name
- alphabetically by name (default order)order=$Name
- alphabetically by name across groupsorder=title
- alphabetically by title rather than namesorder=time
- most recently changed pages lastorder=ctime
- time of page creation (see note)order=group,title
- by multiple criteria, in this instance sort by title within groupsorder=random
- shuffle the pages into random sequenceorder=$:pagetextvarname
- alphabetically by page text variable value (note no braces)order=$pagevarname
- alphabetically by page variable value (note no braces)
Also, the order=
option allows custom ordering functions to be written.
- Note: trail= preserves the order of the pages as they appear on the trail (unless you've specified order= explicitly or there is a default order in the page list template). So PmWiki's alphabetical default order does not apply when trail= is specified.
- Note: ctime was added to pages only from pmwiki 2.1.beta15 onwards, pages created by earlier versions don't carry a ctime attribute and can't be sorted that way.
cache=0
Pagelist has the capability to cache lists which greatly speeds up processing (when $PageListCacheDir
is set). Every once in a while this caching can result in undesired results. Specifying cache=0
disables caching.
Specifying variables as parameters
You can also specify variable values inline with the pagelist statement, and refer to the variables in the template using the format:
(:pagelist fmt=#pagelist variable1="value" variable2="value2":)
This assumes that a site has
enabled (default since 2.2.9).
$EnableRelativePageVars
For example, in the template:
>>comment<< [[#tvars]] (:template default count=1 ParamName=Simon:) Hi, , how are you today? [[#tvarsend]] >><< |
This gives:
(:pagelist fmt=#tvars ParamName="Sam":) (:pagelist fmt=#tvars ParamName="Sally":) (:pagelist fmt=#tvars:) |
See also
.
$EnableUndefinedTemplateVars
Examples
Include the contents of a random page from the Banners group:
(:pagelist group=Banners order=random count=1 fmt=#include list=normal:)
Display a simple list of the last ten recently changed pages:
(:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)
The Searchbox Directive
The (:searchbox:)
directive generally accepts the same parameters as (:pagelist:)
and (:input search:)
directives:
- Pagelist parameters can be added to the input text of a searchbox (or to the markup, or both)
- Input text box parameters can be added to the searchbox markup
- An initial search string can be specified in the searchbox markup, but it must be in the form
value='search string'
. That search string is displayed in the input text and can be modified by when the search is run. - The default placeholder value is "Search" (localized in other languages), and can be modified in the form
placeholder="Type search terms..."
or removed withplaceholder=""
. In recent browsers, this value appears gray in the search field when it is empty. - Optionally, you can add
aria-label
and otheraria-*
accessibility attributes that will be attached to the input text field. - The size of the text input field can be specified with the size parameter, where "size=40" would specify the current default value.
- Tip: If more than one searchbox appears on a page, adding a blank initial value like this
value=''
, to the markup for each searchbox will prevent a search string for one box from populating all of the other boxes.
- Tip: If more than one searchbox appears on a page, adding a blank initial value like this
- An initial search string can be specified in the searchbox markup, but it must be in the form
- The target page for displaying searchbox results can be set with the parameter
target=GroupName.PageName
. The default is the current page. - The entire searchbox form can be overridden by defining the $SearchBoxFmt variable in one's configuration file. If $SearchBoxFmt is defined, then the parameters to
(:searchbox:)
are ignored, and the content of the $SearchBoxFmt variable are used instead.
The additional parameter label="Label"
can be used to change the label of the associated submit button:
(:searchbox label="Search this wiki":)
Use label=""
to remove the submit button (users need to press "Enter" to search).
By default, the input field has the "text" type for compatibility with HTML/XHTML. Alternatively, you can set it to the "search" input type for HTML5, see
(some HTML5 skins already set this).
$SearchBoxInputType
The Searchresults directive
The (:searchresults:)
directive generally accepts the same parameters as (:pagelist:)
and (:input search:)
directives.
Customizing "Results of search for..." and "3 pages found out of..."
To change the text surrounding the search results, customize the following and add it to local/config.php
or
. Note that $FarmD
/local/farmconfig.php'en'
should be changed to the localized language.
XLSDV('en', array( 'SearchFor' => 'Results of search for <em>$Needle</em>:', 'SearchFound' => '$MatchCount pages found out of $MatchSearched pages searched.' ));
Alternatively, adjust the 'SearchFor' and 'SearchFound' phrases in your translation pages.
The $SearchResultsFmt
variable can also be set in local/config.php
or
.
$FarmD
/local/farmconfig.php
SDV($SearchResultsFmt, "<div class='wikisearch'>\$[SearchFor] <div class='vspace'></div>\$MatchList <div class='vspace'></div>\$[SearchFound]</div>");
You can remove the lines above and below the generated list by adding this in config.php:
$SearchResultsFmt = '$MatchList';
See Also
- Site.PageListTemplates - default pmwiki pagelist templates
- Cookbook:PagelistTemplateSamples - contributed pagelist template samples
- PageListTemplates - how to create custom pagelist templates for the fmt= option
- PagelistVariables - local/config.php customizations
- Cookbook:Forms - documentation for
(:input text:)
markup, which applies to(:searchbox:)
- CustomPagelistSortOrder - creating custom order sort functions
- Cookbook:CustomPagelistSortOrderFunctions -
- Cookbook:PageListMultiTargets -
- Cookbook:SearchResults -
- PageDirectives#attachlist - display a list of attachments
- PmWiki.Search - Targeting and customizing search results
FAQ
How PmWiki opens pages with PageStore?
When PmWiki needs to open a file for reading, it will ask the PageStore,
objects one after another, in the order you have defined them in config.php,
if they have MyGroup.MyPage
. The first PageStore object that finds this page
will return it and if there are more PageStores they will be not bothered.
When you define a PageStore object with paths like
wiki.d/{$Group}/{$FullName}
and then ask "is there a page MyGroup.MyPage
",
the PageStore only checks "is there a file wiki.d/MyGroup/MyGroup.MyPage
" so
it will only look in the wiki.d/MyGroup sub-directory
, not in other
subdirectories.
When you write a page, only the first PageStore object is used, that is
usually $WikiDir
. This way we can have documentation in wikilib.d but if you
modify a page from the PmWiki or Site groups on your wiki, it will be saved
in wiki.d and from now on only the file in wiki.d will be read and written.
What is the behavior of pagelist and searchresults when only name or word is provided?
Both pagelist and searchresults are searching for all groups unless either
(there is a group=ThisGroup argument in the markup or in the search field),
or (you have (:template default group=SomeGroup,{*$Group}:)
in the pagelist
template), or (there is a request=1
argument in the markup and there is
somehow a $_REQUEST['group']
variable, eg from a search form or from the
url), or (you set some
and $SearchPatterns
['xy']list=xy
), or (set a default
$MakePageListOpt['group']
or
).
$SearchBoxOpt
['group']
If one option is not used, then this option should not be predefined. If
there is no needle show all pages; if group=
is not used show all groups; if
name=
is not used show all names; if link=
is not used show pages linking or
not linking to anywhere; if count=
is not used show all pages instead of a
portion of them. (The only exception is the order=
option which defaults to
order=name
because without it the results may be ordered inconsistently
between page reloads, especially bad if you also use count=21..30
.)
How can a custom function retrieve the results of a pagelist as an array?
See this thread on the mailing list(approve sites).
WikiGroup
FAQ
How can I get rid of the 'Main' group in urls for pages pointing to Main?
How can I limit the creation of new groups?
See Cookbook:Limit Wiki Groups.
Why doesn't [[St. Giles and St. James]] work as a link? (It doesn't display anything.)
Because it contains periods, and destroys PmWiki's file structure, which saves pages as Group.PageName. Adding those periods disrupts this format. Links may only contain words. If you need a link precisely as shown, the page must be named eg StGilesAndStJames then you can use the (:title:)
directive to have the page's title appear with periods (:title St. Giles and St. James:)
. (Although in US grammar the period is often omitted and in UK grammar the period must be(approve sites) omitted for contractions like St).
How can I delete a wiki group?
Normally you can't, as this requires an admin with server-side access to delete the file that makes up the group's RecentChanges
page. But there is an option method of making it possible to delete RecentChanges
pages from within the wiki if the admin enables the code found on Cookbook:RecentChanges Deletion.
How can I delete a wiki group's Group.RecentChanges
page?
Normally you can't, as this requires an admin with server-side access to delete a file. But there is an optional method of making it possible to delete RecentChanges
pages from within the wiki if the admin enables the code found on Cookbook:RecentChanges Deletion.
Can I delete a wiki group inside wiki.d
folder on the server to eliminate the group?
Yes, if you delete all files named YourGroup.*
, the pages from that group will be removed from the wiki. Note that the documentation (group PmWiki
) and the site configuration (groups Site
and SiteAdmin
) that exist in the default installation, are located in wikilib.d
and not in wiki.d
, and some recipes provide files located in a wikilib.d
subdirectory in the cookbook directory. (You shouldn't delete the groups Site
and SiteAdmin
, they are required for normal function.)
How can I list all pages in a WikiGroup?
In a wiki page use (:pagelist group=GroupName list=all:)
or in a search box type GroupName/ list=all
.
GroupHeaders and GroupFooters
How do I set the same header or footer for all pages/groups?
The header and footer for each page are controlled by the variables $GroupHeaderFmt
and $GroupFooterFmt
. If your site-wide header and footer pages are Site.SiteHeader
and Site.SiteFooter
, you can add this in config.php
:
### If you use Site.SiteHeader and Group.GroupHeader $GroupHeaderFmt = '(:include {$SiteGroup}.SiteHeader' . ' basepage={*$FullName}:)(:nl:)' . $GroupHeaderFmt; ### If you use Site.SiteHeader instead of Group.GroupHeader $GroupHeaderFmt = '(:include {$SiteGroup}.SiteHeader' . ' basepage={*$FullName}:)(:nl:)'; ### If you use Site.SiteFooter and Group.GroupFooter $GroupFooterFmt .= '(:nl:)(:include {$SiteGroup}.SiteFooter' . ' basepage={*$FullName}:)'; ### If you use Site.SiteFooter instead of Group.GroupFooter $GroupFooterFmt = '(:nl:)(:include {$SiteGroup}.SiteFooter' . ' basepage={*$FullName}:)';
Note that single quotes must be used in the lines above.
See also the Cookbook:AllGroupHeader recipe.
Instead of using an additional page, you could set any wiki text in $GroupHeaderFmt
, for example:
$GroupHeaderFmt .= "Global message here.";
WikiTrails
What's the difference between a PageList and a WikiTrail?
The pagelist directive dynamically generates a list of pages. There are many ways to generate the list, including using a WikiTrail as the source.
The pagelist directive then displays the pages that match the criteria using an optional template - for example displaying each page name on a separate line as a link or including the entire content.
The pagelist directive currently does not have built-in navigation markup that you can put on the pages in the list.
By contrast, WikiTrails are simply specified via links on an "index" page and you can put previous-next navigation markup on each page. The two serve very different purposes. WikiTrails are useful for specifying the pages in web feeds, for creating a "tour" through a predefined set of pages, and many other things.
PageHistory
Is there a way to remove page history from page files?
1. Administrators can clean page histories using the Cookbook:ExpireDiff recipe.
2. Administrators with FTP file access can download individual pages from the wiki.d
directory, open them in a text editor, manually remove history, and re-upload the files to wiki.d/
directory. Care must be exercised, when manually editing a page file, to preserve the minimum required elements of the page and avoid corrupting its contents. See PageFileFormat#creating.
3. Edit the page. Select all the contents of the edit text area and cut them to the clipboard. Enter delete
into the text area and click on the save and edit button. Select all the contents of the edit text area and paste the contents of the clipboard over them. Click on the save button. This will remove all of the page's history up to the final save in which the pasted material is re-added.
How can I restrict viewing the page history (?action=diff)
to people with edit permission?
In the local/config.php
file, set
$HandleAuth['diff'] = 'edit'
;
In case of this restriction is set up on a farm, and you want to allow it on a particular wiki, set in your local/config.php
:
$HandleAuth['diff'] = 'read'
;
This page may have a more recent version on pmwiki.org(approve sites): PmWiki:FAQ, and a talk page: PmWiki:FAQ-Talk.