PmWiki有两个指令用于生成页面列表:(:页面列表:)
和(:搜索结果:)
.这两个指令基本相同,都接受下面记录的参数。两者之间的主要区别是搜索结果
s生成“搜索结果。。。
“和”###在搜索的###中找到了个页面
“关于结果的信息。
这个(:搜索框:)
指令生成搜索表单(输入文本搜索框)以提交搜索查询。标记通常接受与(:页面列表:)
,从而可以限制、排序和格式化搜索结果
以下面描述的相同方式(:页面列表:)
。有关(:搜索框:)
指令,以及它与(:页面列表:)
,跳到该部分在下面.
基本语法
如果没有任何参数,则显示所有页面的项目符号列表,作为链接,按字母顺序和组排序。
根据提供的参数显示页面列表。参数是可选的。
(:搜索框价值=作业成本法尺寸=99目标=定义label=“标签":)
(:搜索结果:)
参数
中提供的任何参数(:页面列表:)
那不是形式'键=值'
被视为页面文本中必须(或不得)存在的文本。
减号(-)可以用来表示应该排除的内容。因此
(:页面列表线索=PmWiki.DocumentationIndex列表=普通苹果馅饼:)
列出了文档索引包含单词“apple”但不包含单词“pie”的轨迹。
带有页面文本变量
您还可以使用页面文本变量作为一个钥匙根据页面文本变量的存在列出页面。如:
(:pagelist$:pagetextvar=有效:)
列出具有$:pagetextvar设置为阿瓦莱.
基于pagetext变量指定选择时,减号(-)、通配符(?*)和逗号分隔的值列表也适用。如:
(:pagelist$:apagetextvar=t*,-test:)
列出具有$:apagetextvar
像“t”,但不是“test”。
示例:
PTV已设置(非空): | (:页面列表$:MyPageTextVariable=-:) |
PTV为空或未设置: (即,未设置为一个字符后跟0个或多个字符) | (:页面列表$:MyPageTextVariable=-?*:) |
PTV不是VALUE: | (:pagelist$:MyPageTextVariable=-VALUE:) |
PTV已设置,而不是YES: | (:页面列表$:MyPageTextVariable=?*,-是:) |
请注意,如果使用(:页面列表$:MyPTV=$:您的PTV:)
PTV包含PmWiki格式,因此您可能无法获得预期的匹配。目前,唯一的解决方法是使用通配符,因此如果格式是嵌入的,你可能会运气不好。
注意:页面列表不计算标记表达式使用PTV时。所以如果您的页面文本变量使用标记表达式来设置值时,页面列表将看到标记表达式文本的文字值,而不是表达式的结果。(例如,PTV定义(:foo:{(子abcdef 24)}:)
页面列表将显示为一个开放的花括号,后跟一个开放paren,后跟s-u-b-s-t-r等,而不是显示为b-c-d-e)在页面列表输出中对标记表达式的任何处理都发生在后续规则中(在页面列表之后)在当前页面的上下文中,因此这些值不能用于排序或选择页面。(来源)
带页面变量(PV)
页面变量可以在页面列表中使用,方式与页面文本变量。请参阅页面文本变量有关更多详细信息,请参见上文。只需使用$变量
而不是$:变量
.
组=和姓名=
“组=
“和”姓名=
“参数将结果限制为特定组中或具有特定名称的页面:
Pmwiki组中的所有页面: | (:页面列表组=PmWiki:)
|
除PmWiki或网站组中的页面外的所有页面: | (:页面列表组=-PmWiki,-站点:)
|
所有RecentChanges页面 | (:页面列表名称=最近的更改:)
|
除最近更改外的所有页面 | (:页面列表名称=-最近的更改:)
|
通配符
名称、组、链接和类别参数可以包含通配符仅显示与给定模式匹配的页面的字符:
- 星号(*)表示零个或多个字符
- 问号(?)正好代表一个字符
- 方括号([])中包含的一组字符表示方括号中的任何一个字符
- 逗号分隔不同的说明符,其中至少应有一个匹配。
- 说明符前的减号要求它不存在。
- 只为
链接=
和类别=
,说明符前的加号要求它存在。
示例:
以“PmWiki”开头的任何组中的所有页面 | (:页面列表组=PmWiki*:)
|
任何组中以“PmWiki”开头的所有页面,中文除外 | (:页面列表组=PmWiki*,-PmWikiZh:)
|
PmCal组中名称以“2005”开头的所有页面: | (:页面列表名称=PmCal.2005*:)
|
名称以a和B开头的所有菜谱 注意用于相同结果的不同说明符 | (:页面列表组=食谱名称=A*,B*:)(:pagelist name=Cookbook.A*,Cookbook.B*:)(:页面列表组=食谱名称=[AB]*:)(:页面列表名称=食谱。[AB]*:)
|
媒体类别中的页面或图像(至少一个) | (:pagelist category=媒体,图像:)
|
媒体类别中的页面和图像(两者) | (:页面列表类别=+媒体,+图像:)
|
如果要使用多个条件,则需要使用逗号分隔字符串
key=“一个值,另一个值”
线索=
“线索=
“选项从线索索引.
(:页面列表线索=PmWiki.DocumentationIndex顺序=-时间:)
(:页面列表线索=最近更改计数=5:)
列表=
“列表=
选项允许搜索根据管理员设置的预定义模式包括或排除页面。
- "
列表=正常
“是预定义的,不包括以下内容所有最近的更改
,最近更新
,组标题
,尾区
,组属性
,等等。注意list=normal也不包括当前页面。 - "
list=全部
覆盖wiki管理员可能设置的“默认”列表,以从常规搜索结果中排除PmWiki或Site等组。 - "
list=分组住宅
“只列出wiki上每个组的主页集团。组
,或集团。主页
,或其他/本地化,如中所定义$DefaultName(默认名称)
、和/或$PagePathFmt
.
Wiki管理员可以通过$搜索模式
数组(请参见食谱:搜索结果).
柔性制造技术=
“柔性制造技术=
”选项确定结果列表的显示方式。私人维基预定义多种格式:
fmt=#按组
-在组中显示页面(默认格式)fmt=#简单
-以“组”的形式显示页面的简单排序列表。姓名fmt=#标题
-按页面标题显示页面列表。使用“order=标题
“按标题排序(默认是按页面名称排序)。fmt=#titlespaced
-按页面标题显示页面列表,如上所述,但标题中的单词之间要有空格。fmt=#组
-显示Wiki组列表(不列出组中的页面)fmt=#包含
-显示列表中每个页面的内容(注意,对于长列表,这可能需要很长时间!)fmt=#群居
-组主页的优化项目符号列表(将使用count=…)需要PmWiki 2.2.103。fmt=#includefaq
-只包括#常见问题
列表中页面的节。(这也可能很昂贵,尤其是如果列表中包含没有[[#常见问题]]
锚!)fmt=#描述
-列出页面并附加页面描述(如果存在)。创建所有名称的短划线,但添加嵌套循环以消除它会导致标记问题(不允许嵌套循环)。fmt=#simplename
-页面名称的简单项目符号列表,不包含组名称。fmt=#simplenamespaced
-分隔页面名称的简单项目符号列表,不包含组名称。fmt=#标题摘要
-页面标题和摘要的简单项目符号列表,在页面中由定义(:标题ttttt:)
和(:摘要:sssss:)
标记。
这些格式由定义页面列表模板,可定制。
此格式不是由页面列表模板预定义的:
fmt=计数
-显示列表中的页数(注意没有“#”)。在一条小路上,fmt=计数
统计现有和不存在的页面;要将计数限制为现有页面,请使用:如果=“exists{=$FullName}”fmt=count
(邮件列表).
链接=和类别=
“链接=
“和”类别=
参数实现“反向链接”——即,它返回一个页面列表,其中包含指向目标的链接或在类别中声明的链接类别页面和查找相关页面。
这个category=名称
参数不同于link=类别。姓名
因为它只列出在带有标记的类别中声明的页面[[!姓名]]
,不包括仅链接到的页面[[类别/名称]]
(除非它们还包含[[!姓名]]
).
(:页面列表链接=PmWiki。文档索引:)
(:页面列表链接={$FullName}:)
(:页面列表类别=外观:)
自PmWiki 2.3.0以来,链接=
和类别=
接受多个负目标和通配符列表,请参阅一节通配符.
注:,链接=
和类别=
将忽略指令(:如果…:)
,(:包括…:)
,(:重定向…:)
,(:页面列表…:)
和页面文本变量指令,同时搜索页面中的链接。这意味着包含的页面中的链接将找不到,而未显示的条件标记中的链接将被找到。请参见页面文本变量在页面上隐藏链接的同时仍然允许链接=
找到它。
注:新类别=
参数要求所有包含[[!类别]]
要重新编制索引的链接。查看配方食谱:重新索引类别可以实现自动化。
计数=
“计数=
“选项提供了以下功能
- 将页面列表限制为特定的页数
- 列表的子集
- 从列表末尾返回项目,列表的子集
- 按相反顺序显示页面
十个最近修改的页面的简单项目符号列表 |
(:pagelist trail=Site.AllRecentChanges计数=10 fmt=#简单:)
|
显示列表的前十页 |
count=10#显示列表的前十页
|
负数指定从列表末尾显示的页面: |
count=-10#显示列表的最后十页
|
可以使用“..”指定范围,因此: |
count=1..10#列表的前十页count=5..10第5至第10页列表
|
范围内的负数从列表末尾开始计数: |
count=-10..-5从末尾算起第10个,从结尾算起第9个。。。,倒数第5位
|
省略范围的开始或结束使用列表的开始或结尾: |
count=10..#跳过前十页计数=。。10#清单第1页至第10页count=-10..#列表的最后十页计数=-10#除最后九页外的所有内容
|
范围可以颠倒,表示输出中的页面顺序也应该颠倒: |
count=5..10第5至第10页列表count=10..5#与5..10相同,但顺序相反count=-1..1#所有页面按相反顺序排列
|
这里的“倒序”指的是顺序之后已进行任何排序。因此,右边的三个指令是等效的: |
(:页面列表顺序=-名称计数=10:)(:页面列表顺序=-名称计数=1..10:)(:页面列表顺序=名称计数=-1..-10:)
|
包裹=
“包
“选项具有值,没有人和内联.
使用“wrap=inline”和“wrap=none”,页面列表(标记或HTML)的输出直接嵌入页面的标记中,没有任何环绕class=</div(分频)>
标签。
使用“wrap=inline”,任何周围<ul>
继续。如果没有“wrap=inline”,HTML输出将启动一个新的<ul>
。如果你想获得第二个级别,这一点很重要<ul>
自启动新的后由页面列表生成<ul>
带有“**”不会产生第二个级别<ul>
但是<dl><dd><ul>。。。
“wrap=inline”可能有其他影响,因为它禁止调用$FPL模板标记函数
(默认为MarkupToHTML)。
类=
默认情况下,页面列表具有“fpltemplate”类。“bygroup”、“simple”、“group”和“title”页面列表格式具有特定的类名fplbygroup、fplsimple等。您可以使用类=
参数或通过设置$FPLFormatOpt
数组。
请求=
使用(:pagelist[other parameters]请求=1:)
通过在URL中提供请求参数,可以覆盖大多数页面列表参数。例如,(:页面列表顺序=名称请求=1:)
通常会按名称对列表进行排序。但如果页面的URL包含?order=时间
,列表将按时间排序。如果URL包含?订单=
,列表将无序。注意:在URL中,将参数中的任何“#”编码为“%23”。由于此参数使没有编辑权限的用户能够运行他们选择的页面列表,因此在使用之前请考虑其对网站的安全影响。
自2.2.71版以来,可以显式地只允许可以重写的某些参数,也可以不允许重写某些参数。如果需要,请输入参数名称,而不是1。
允许覆盖所有参数:(:页面列表请求=1:)
只允许重写“order”和“count”参数:(:pagelist request=订单,计数:)
允许覆盖除“fmt”和“trail”之外的所有参数,注意每个禁止参数前的“减号”:(:pagelist请求=-fmt,-tail:)
需求=1
这个需求=1
参数要求发布搜索词(即,用户在搜索表单上按“搜索”,或在链接后使用其他参数,如[[页面?q=条款和顺序=-名称]]
)在执行页面列表之前。请注意(:页面列表请求=1请求=1:)
工作方式大致类似(:搜索结果:)
没有线条“搜索结果。。。“和”在搜索的Y页中找到X页“.需要”request=1“和”req=1“。
执行搜索时,可以通过搜索框
指令,如果页面包含“搜索结果
指令,该页将用于显示搜索结果;如果该页没有搜索结果
“指令,页面现场。搜索
将用于显示结果。
密码=
“密码
选项只返回那些具有某种密码属性的页面。
如果=
“如果
“选项允许将条件指定为页面列表处理的一部分,而不是从页面列表模板。仅检索条件为true的页面。任何可能的进入(:如果…:)
可以用作条件。例如
(:pagelist if=“日期{(ftime%GW%V{*$Name})}{=$Name}”:)
返回名称与当前页面在同一周内的所有页面。
如果引号中的任何参数可能包含空格,则必须将其引用:
(:pagelist if=“date 2009-01-01..2009-12-31'{=$:Mydate}'”:)
订单=
“订单=
“选项允许根据不同的条件对列表中的页面进行排序。使用减号表示反向排序。可以使用逗号指定多个排序条件,您可以创建自己的自定义页面列表排序顺序:
order=名称
-按名称的字母顺序(默认顺序)order=$Name
-按名称字母顺序跨组排列order=标题
-按标题而不是名字的字母顺序order=时间
-最近更改的页面最后的
订单=ctime
-页面创建时间(见注释)order=组,标题
-根据多个条件,在本例中,按组中的标题排序顺序=随机
-将页面按随机顺序排列订单=$:pagetextvarname
-按字母顺序页面文本变量值(注意没有大括号)订单=$pagevarname
-按字母顺序页面变量值(注意没有大括号)
此外订单=
选项允许编写自定义排序函数。
- 注意:trail=保留页面在trail上显示的顺序(除非您明确指定了order=或页面列表模板中有默认顺序)。因此,当指定trail=时,PmWiki的字母默认顺序不适用。
- 注意:ctime仅添加到pmwiki 2.1.beta15以后的页面中,早期版本创建的页面没有ctime属性,因此无法按这种方式排序。
缓存=0
Pagelist具有缓存列表的功能,这大大加快了处理速度(当$PageListCacheDir(页面列表缓存目录)
已设置)。这种缓存每隔一段时间就会导致不希望的结果。指定缓存=0
禁用缓存。
将变量指定为参数
您还可以指定与pagelist语句内联的变量值,并使用{$$变量1}
格式:
(:pagelist fmt=#pagelist variable1=“value”variable2=“value2”:)
这假设站点具有$EnableRelativePageVars(启用相对页面变量)
启用(自2.2.9起默认)。
例如,在模板中:
>>评论<<[[#tvars]](:模板默认计数=1 ParamName=Simon:)嗨,{$$ParamName},你今天好吗?[[#tvarsend]]>><< |
(:模板默认计数=1 ParamName=Simon:)嗨,{$$ParamName},你今天好吗?
|
这提供了:
(:pagelist fmt=#tvars ParamName=“Sam”:)(:pagelist fmt=#tvars ParamName=“Sally”:)(:页面列表fmt=#tvars:) |
|
另请参见$EnableUndefinedTemplateVars(启用未定义模板变量)
.
示例
包括横幅组中随机页面的内容:
(:pagelist group=横幅顺序=随机计数=1 fmt=#include list=正常:)
显示最近十次更改页面的简单列表:
(:pagelist trail=Site.AllRecentChanges计数=10 fmt=#简单:)
搜索框指令
这个(:搜索框:)
指令通常接受与(:页面列表:)
和(:输入搜索:)
指令:
- 页面列表参数可以添加到搜索框的输入文本(或标记,或两者)
- 输入文本框参数可以添加到搜索框标记中
- 可以在搜索框标记中指定初始搜索字符串,但其格式必须为
value='搜索字符串'
。该搜索字符串显示在输入文本中,并且可以在运行搜索时进行修改。 - 默认占位符值为“Search”(以其他语言本地化),可以在表单中修改
placeholder=“键入搜索词…”
或使用删除placeholder=“”
。在最近的浏览器中,当该值为空时,该值在搜索字段中显示为灰色。 - 您可以选择添加
阿里亚·拉贝尔
和其他咏叹调-*
将附加到输入文本字段的辅助功能属性。 - 可以使用size参数指定文本输入字段的大小,其中“size=40”将指定当前默认值。
- 提示:如果页面上出现多个搜索框,请添加如下空白初始值
值=“”
,到每个搜索框的标记将阻止一个框的搜索字符串填充所有其他框。
- 可以使用参数设置用于显示搜索框结果的目标页面
目标=组名称。页面名称
。默认为当前页面。 - 通过在配置文件中定义$SearchBoxFmt变量,可以覆盖整个搜索框表单。如果定义了$SearchBoxFmt,则
(:搜索框:)
忽略,而使用$SearchBoxFmt变量的内容。
附加参数label=“标签”
可用于更改关联提交按钮的标签:
(:searchbox label=“搜索此wiki”:)
使用label=“”
删除提交按钮(用户需要按“Enter”进行搜索)。
默认情况下,输入字段具有与HTML/XHTML兼容的“文本”类型。或者,您可以将其设置为HTML5的“搜索”输入类型,请参见$搜索框输入类型
(一些HTML5皮肤已经设置了这一点)。
Searchresults指令
这个(:搜索结果:)
指令通常接受与(:页面列表:)
和(:输入搜索:)
指令。
自定义“搜索…的结果”和“在…中找到3页”
要更改搜索结果周围的文本,请自定义以下内容并将其添加到本地/config.php
或$农场D
/本地/farmconfig.php
。请注意“恩”
应更改为本地化语言。
XLSDV('en',阵列('SearchFor'=>'搜索结果<em>$Needle</em>:','SearchFound'=>“在搜索的$MatchSearched页中找到了$MatchCount页。”));
或者,调整您的翻译页.
这个$搜索结果Fmt
变量也可以在中设置本地/config.php
或农场D美元
/本地/farmconfig.php
.
SDV($SearchResultsFmt,“<div class='wikisearch'>\$[SearchFor]<div class='vspace'></div>\$MatchList<div class='vspace'></div>\$[SearchFound]</div>“);
您可以通过在config.php中添加以下内容来删除生成列表上方和下方的行:
$SearchResultsFmt=“$MatchList”;
另请参阅
常见问题
PmWiki如何使用PageStore打开页面?
当PmWiki需要打开文件进行读取时,它会询问PageStore,对象一个接一个,按照您在config.php中定义它们的顺序,如果他们有我的群组。我的页面
。找到此页面的第一个PageStore对象将返回它,如果有更多的PageStore,他们将不会被打扰。
当使用以下路径定义PageStore对象时wiki.d/{$Group}/{$FullName}
然后问“有页面吗我的群组。我的页面
",PageStore只检查“是否有文件wiki.d/MyGroup/MyGroup。我的页面
“所以它只会在wiki.d/MyGroup子目录
,不在其他子目录。
编写页面时,只使用第一个PageStore对象,即通常$WikiDir(维基目录)
这样我们可以在wikilib.d中获得文档,但如果您修改PmWiki或wiki上的网站组中的页面,它将被保存从现在起,只有wiki.d中的文件才会被读取和写入。
当只提供名称或单词时,页面列表和搜索结果的行为是什么?
页面列表和搜索结果都在搜索所有组,除非(在标记或搜索字段中存在group=ThisGroup参数),或者(你有(:模板默认组=SomeGroup,{*$group}:)
在页面列表中模板),或(有一个请求=1
参数,并且有不知怎么的$_REQUEST[“组”]
变量(如从搜索表单或从url),或(您设置一些$搜索模式
[“xy”]
和列表=xy
)、或(设置默认值$MakePageListOpt[“组”]
或$SearchBoxOpt(搜索框选项)
[“组”]
).
如果不使用一个选项,则不应预定义此选项。如果没有针显示所有页面;如果组=
不用于显示所有组;如果姓名=
未使用显示所有名称;如果链接=
未使用显示页面链接或不链接到任何地方;如果计数=
不使用显示所有页面,而使用它们的一部分。(唯一的例外是订单=
默认为的选项order=名称
因为没有它,结果的顺序可能会不一致在页面重新加载之间,如果您还使用计数=21..30
.)
自定义函数如何以数组的形式检索页面列表的结果?
请参见邮件列表中的此线程.