authors, admins (intermediate) PmWiki comes with two directives for generating lists of pages -- (:pagelist:) and (:searchresults:). The primary difference between the two is that searchresults: generates the "Results of search for ..." and "### pages found out of ### searched" messages around the results -- otherwise they're basically the same.

Basic syntax

  • (:pagelist:) without any arguments shows a bulleted list of all pages, as links, ordered alphabetically and in groups.
  • (:pagelist group=abc fmt=def list=ghi order=jkl argument1 argument2 etc:) shows a pagelist according to the parameters supplied. Parameters are optional.

Parameters

Any argument supplied within (:pagelist:) that isn't in the form 'key=value' is treated as text that either must (or must not) exist in the page text. Thus

    (:pagelist trail=PmWiki.DocumentationIndex list=normal apple -pie:)

lists all "normal" pages listed in the DocumentationIndex trail that contain the word "apple" but not "pie".

group= and name=

The "group=" and "name=" parameters limit results to pages in a specific group or with a specific name:

    # All pages in the Pmwiki group:
    (:pagelist group=PmWiki :)
    # All pages except those in the PmWiki or Site groups:
    (:pagelist group=-PmWiki,-Site :)
    # All RecentChanges pages
    (:pagelist name=RecentChanges :)
    # All pages except RecentChanges
    (:pagelist name=-RecentChanges :)

Wildcards

Name and group parameters can contain wildcard characters that display only pages matching a given pattern:

  • An asterisk (*) represents zero or more characters
  • A question mark represents exactly one character

Examples:

    # All pages in any group beginning with "PmWiki"
    (:pagelist group=PmWiki* :)
    # All pages in any group beginning with "PmWiki", except for Chinese
    (:pagelist group=PmWiki*,-PmWikiZh* :)
    # All pages in the PmCal group with names starting with "2005":
    (:pagelist name=PmCal.2005* :)

trail=

The "trail=" option obtains the list of pages to be displayed from a WikiTrail:

    # Display pages in the documentation by modification time
    (:pagelist trail=PmWiki.DocumentationIndex order=-time:)
    # Display five most recently changed pages
    (:pagelist trail=RecentChanges count=5:)

list=

The "list=" option allows a search to include or exclude pages according to predefined patterns set by the administrator. PmWiki predefines "list=normal", which excludes things like AllRecentChanges, RecentChanges, GroupHeader, GroupFooter, and the like from being displayed in the list results. Wiki administrators can define custom lists via the $SearchPatterns array (see Cookbook:SearchResults).

fmt=

The "fmt=" option determines how the resulting list should be displayed. PmWiki predefines several formats:

  • fmt=#bygroup - Display pages alphabetically within groups
  • fmt=#simple - Display a simple ordered list of pages
  • fmt=#title - Display a list of pages by page title. Use "order=title" to have them sorted by title (default is to order by page name).
  • fmt=#group - Display the groups of the pages in the list
  • fmt=#include - Display the contents of each page in the list (note, this could take a very long time for long lists!)

Custom pagelist formats can be defined using pagelist templates and referenced by the fmt= option. (PmWiki's default templates are in Site.PageListTemplates.) There are several ways to indicate which template to use:

  • fmt=#custom uses the #custom section from Site.PageListTemplates (sections are denoted by [[#custom]] anchors.
  • fmt=MyTemplatePage#custom uses a custom format from page MyTemplatePage from its #custom section.
  • fmt=custom uses custom format which is defined in a cookbook script as custom.

Cookbook:PagelistTemplateSamples has many examples of custom pagelist formats. In addition, the Cookbook:Cookbook has other recipes for special fmt= options, in cluding fmt=dictindex (alphabetical index) and fmt=forum (forum postings).

link=

The "link=" option implements "backlinks" -- i.e., it returns a list of pages with a link to the target. It's especially useful for category pages and finding related pages.

    # 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 link=Category.Skins:)

count=

The "count=" option limits the pagelist to a specific number of pages.

    # A simple bullet list of ten most recently modified pages
    (:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)

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:

  • order=name - alphabetically by name
  • order=-name - reverse alphabetical listing
  • order=title - sorted by title
  • order=-time - most recently changed pages first
  • order=ctime - time of page creation
  • order=size - sort by page size
  • order=group,title - sort by title within groups
  • order=random - shuffle the pages into random sequence

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:)

See Also

<< Conditional markup | Documentation Index | Page variables >>