Comment lister les pages
Traduction à compléter.
Question
Comment utiliser la directive (:pagelist:)
?
Réponse
PmWiki possède deux directives destinées à générer des listes de pages -- (:pagelist:)
et (:searchresults:)
. La différence essentielle entre les deux est que 'searchresults': génère les textes "Les résultats de la recherche pour ..." et "### pages trouvées parmi ### " encadrant le résultat -- à part ça, ce sont des directives similaires.
Syntaxe de base
(:pagelist:)
sans arguments affiche une liste à puce de toutes les pages, avec les liens, ordonnées par ordre alphabétique et par groupes.(:pagelist group=abc fmt=def list=ghi order=jkl argument1 argument2 etc:)
affiche une liste de page en fonction des paramètres fournis. Les paramètres sont optionnels.
Paramètres
Tout argument fourni avec (:pagelist:)
qui n'est pas de la forme 'clé=valeur'
est traité comme du texte qui doit (ou ne doit pas) figurer dans le texte de la page. Ainsi
(:pagelist trail=PmWiki.IndexDocumentation list=normal pomme -caramel:)
liste toutes les pages "normales" du trail IndexDocumentation qui contiennent le mot "pomme" mais pas le mot "caramel".
group= paramètre
"group="
limite les résultats aux pages appartenant à un groupe donné.
name= paramètre (nouveauté de pmwiki 2.1.beta21)
"name="
limite les résultats à certaines pages avec un nom spécifique. Utiliser des caractères spéciaux de remplacement avec des noms partiels.
Utiliser des caractères de remplacement dans les noms (nouveauté de pmwiki 2.1.beta21)
Les caractères de remplacement peuvent être utilisés avec les paramètres group et name.
Ce sont le caractère * représentant n'importe quelle séquence de caractères, le caractère ? représente un caractère unique. Le signe - ou le point d'exclamation ! sont utilisés pour indiquer une négation.
Exemples d'utilisation de caratères de remplacement :
- Toutes les pages d'un groupe PmWiki:
(:pagelist group=PmWiki :)
- Toutes les pages sauf celles d'un groupe PmWiki:
(:pagelist group=-PmWiki :)
- Toutes les pages de n'importe quel groupe commençant par "PmWiki":
(:pagelist group=PmWiki* :)
- Toutes les pages de n'importe quel groupe commençant par "PmWiki", mais pas "PmWikiZh":
(:pagelist group=PmWiki*,-PmWikiZh* :)
- Toutes les pages sauf celles nommées "HomePage":
(:pagelist name=-HomePage :)
- Toutes les pages du groupe PmCal dont le nom commence par "2005":
(:pagelist name=PmCal.2005* :)
Les jokers fonctionnent aussi avec les balises de condition, ce qui nous donne:
(:if name PmCal.2005* :) (:if group PmWiki* :) (:if name Profiles.*,-Profiles.Profiles :)
trail= paramètre
"trail="
renvoie la liste des pages affichées dans un WikiTrail.
list= paramètre
"list="
pertmet à la recherche d'inclure/exclure des pages qui sont définies par l'administrateur dans des ensembles précisés dans le fichier config.php. PmWiki prédéfini "list=normal"
, qui exclut les choses telles que AllRecentChanges, RecentChanges, GroupHeader, GroupFooter, GroupAttributes, etc., de l'affichage des résultats. Les administrateurs du Wiki peuvent définir leurs propres listes via le tableau $SearchPatterns
(voir en anglais) Cookbook.SearchResults).
fmt= paramètre
"fmt="
détermine comment la liste résultante doit être affichée.
paramètres fmt prédéfinis:
PmWiki prédéfinit "fmt=simple", "fmt=bygroup", "fmt=title", et "fmt=group". Sans paramètre fmt= la valeur par défaut est par groupe.
fmt=bygroup
est la valeur par défaut et produit une liste de pages triée par groupes.fmt=simple
donne une liste de noms de pages de la forme Groupe.Nom.fmt=title
donne une liste de titres de page. Par défautorder=title
ce qui trie les pages par titre.fmt=group
donne une liste de groupes, sans noms de pages.
PageLists Templates
Depuis la version 2.1.beta15, PmWiki utilise les templates pour ses formats prédéfinis de pagelist, lesquels sont stocké dans Site.PageListTemplates, et peuvent être édité là. D'autres formats personnalisés peuvent être ajoutés, à cette page ou à n'importe quel autre, ou défini dans config.php ou un script cookbook. Il y a plusieurs façons d'indiquer quel template pagelist à utiliser:
fmt=#custom
utilise le format personnalisé de Site.PageListTemplates depuis la section #custom.fmt=MyTemplatePage#custom
utilise le format personnalisé de la page MyTemplatePage depuis sa section #custom.fmt=custom
utilise le format personnalisé qui est défini dans un script cookbook de custom.
Check out these custom PagelistTemplateSamples.
Custom formats added by cookbook scripts:
fmt=dictindex
is added by Cookbook.DictIndex. It gives an pagelist broken into alphabetical sections.fmt=forum
is added by Cookbook.SimpleForum. It gives a 3-column table with page title, modified date and author.
Cookbook recipes can add more output formatting options by creating new format template sections, or via the $FPLFunctions array as a custom function. Several that are planned are also "fmt=publish"
to displays the contents of each page in the list, "fmt=include"
to include portions of a page's text, "fmt=category" to display pages in a form suitable for category listings, and "fmt=menu" to display the list as an expandable or dropdown menu.
link= parameter
"link="
parameter provides a list of pages that have a link to SomeGroup.SomePage specified. Some examples for this (see also Backlinks, FastBacklinks):
- To display a list of all pages that have a page link to PmWiki.DocumentationIndex:
(:pagelist link=PmWiki.DocumentationIndex:)
- To display a list of all pages that link to the current page:
(:pagelist link={$FullName} :)
- To display a list of all pages in group Main that have a page link to Main.HomePage:
(:pagelist group=Main link=Main.HomePage:)
- To display a list of all pages in the "Skins" category.
(:pagelist link=Category.Skins:)
(:pagelist link=Groupname:)
, somehow?
count= parameter
Le paramètre "count="
permet de restreindre le nombre de pages dans la liste générée au n premières, n étant le nombre spécifié.
Exemple: affiche le "top 20" des plus grandes pages du ''cookbook':
(:pagelist group=Cookbook order=-size count=20 :)
order= parameter
order=name
Alphabetical listing (A to Z), this is PmWiki's default.order=-name
Reverse alphabetical listing (Z to A).order=title
Pagelist sorted alphabetically (A to Z) by titles rather than names.order=-title
Reverse alphabetical (Z to A) listing by titles rather than names.order=ctime
Pagelist sorted by creation time (most recently created pages last).order=-ctime
Pagelist in reverse order by creation time (most recently created pages first).order=time
Pagelist sorted by modification time (most recently changed pages last).order=-time
Pagelist in reverse order by modification time (most recently changed pages first).order=size
Pagelist sorted by page size (not file size), smallest pages first.order=-size
Pagelist sorted by page size, biggest pages first.order=random
Pagelist sorted randomly
Examples
Example 1: Display all pages of the current group, except this page, by time of modification, most recent first:
(:pagelist group={$Group} order=-time list=normal -{$FullName}:)
Example 2: Displays a list of all pages with links to Pm's profiles page (i.e., pages containing Pm. What's more, the pages are listed in reverse order by modification time (most recently changed pages first):
(:pagelist link=Profiles.Pm order=-time fmt=simple:)
link=
and order=
options are "expensive" in that they require a fair amount of page scanning in order to obtain their results. On the other hand, link=
and order=
are less expensive than doing full text searches, and in future versions of PmWiki they may end up being optimized even further.
Comments/Questions
A through AZ B through BZ C through CZ titles listing
I will have a large wiki with lots of play titles. I would like to be able to have separate pagelists containing section A titles, section B titles, section C titles, etc. instead of one large alphabetical listing of titles. Is this possible with pagelist? PL 20060218
!!!A section:(:pagelist group=Plays list=normal name=A* :)
!!!B section:(:pagelist group=Plays list=normal name=B* :)
!!!C section:(:pagelist group=Plays list=normal name=C* :)
etc. !!!X Y Z section(:pagelist group=Plays list=normal name=X*,Y*,Z* :)
Searching for page names only (not content)
In a large wiki, pages are often named systematically, so I sometimes need to get a list of pages with specific name parts (the Linux ls *name*
thing). I couldn't find a way to configure it (list=xxx allows so but only for predefined patterns), so I added the following code to pagelist.php (beta36) near line 111 next to the 'group' option:
if ($opt['named']) array_unshift($pats,"/({$opt['named']})/i");
Then with
(:pagelist named=ReleaseNotes list=normal:)
I get (very quick) a list of all pages containing "ReleaseNotes"
in their name. Wouldn't that be worth adding to the mainline code? tpahl
Listing all groups except one
(:pagelist group= -PmWiki:)
will list from all groups execpt PmWiki. See Directives#pagelist
Question
(:pagelist group=Recipes list=normal apple pie:)
lists all pages with apple AND pie in them,
how do I get a list of all pages with apple OR pie?
Answer
I would suggest use two pagelist directives:(:pagelist group=Recipes list=normal apple :)
(:pagelist group=Recipes list=normal pie:)
DirkBlaas
This unfortunately list all pages that have both apple and pie on them twice.
(:pagelist group=Recipes list=normal -apple -pie:)
lists all pages without apple OR pie,
how do I get a list of all pages without apple AND pie in them?
Comment exclure plusieurs groupes à la fois
Ceci est possible à partir de pmwiki 2.1.beta21 en se servant de ce syntaxe:
(:pagelist group=-xxx,-yyy,-zzz :)
(HansB gave me this hint - Thanks!)
Does this apply to the name parameter too, eg
(:pagelist group=TrampingReports order=-name list=normal name=-2005*,-HomePage,-Template:)
Voir aussi
Contributeurs
- Radu
- joachim Durchholz
- HansB
Traduction de Cookbook:PageListsExplained
Page originale sur PmWikiFr.PagelistsExplained - Backlinks
Dernières modifications:
PmWikiFr.PagelistsExplained: 2011-09-10