我有一些标记,例如:
Markup('talk', '<include',
'/\\(:talk:\\)/i',
'MarkupTalk');
function MarkupTalk($m) {
return 'Talk page: (:include {$BaseName}-talk:)'
}
但是当我使用它时,它什么也没做!
Example text (:talk:) more text
输出
<div id="wikitext">
<p>Example text Talk page: more text</p>
几乎就像(:include:)
指令是评论一样!似乎(:include:)
在其他标记中定义时不起作用。
如何正常运作?
答案 0 :(得分:0)
这不能正常工作的原因是你的标记:
talk <include B>=><
在其依赖项之一后进行评估:
{$var} >$[phrase] B=>>
要解决此问题,您在评估标记时可以更改:
Markup('talk', '<{$var}',
'/\\(:talk:\\)/i',
'MarkupTalk');
但如果您有任何标记输出(&#34;取决于&#34;),那么这可能是不可取的。相反,您可以修改您的函数以使用PageVar()
中所述的PmWiki.PageVariables函数,如下所示:
function MarkupTalk($m) {
global $pagename;
$pagename = ResolvePageName($pagename);
return 'Talk page: (:include '. PageVar($pagename, '$BaseName') .'-talk:)'
}
这会删除{$var}
作为依赖项,并允许在{$var}
之后安全地评估您的标记。