0

我有一些标记,例如:

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:)不起作用。

我怎样才能使它正常工作?

4

1 回答 1

0

这不能正常工作的原因是您的标记:

talk             <include         B>=><            

在其依赖项之一之后进行评估:

{$var}           >$[phrase]       B=>>             

要解决此问题,您可以更改评估标记的时间:

Markup('talk', '<{$var}',
  '/\\(:talk:\\)/i',
  'MarkupTalk');

但如果您有任何输出(“取决于”)您的标记,这可能是不可取的。相反,您可以修改您的函数以使用PmWiki.PageVariablesPageVar()中所述的函数,如下所示:

function MarkupTalk($m) {
  global $pagename;
  $pagename = ResolvePageName($pagename);
  return 'Talk page: (:include '. PageVar($pagename, '$BaseName') .'-talk:)'
}

这将{$var}作为依赖项删除,并允许在{$var}is 之后安全地评估您的标记。

于 2018-04-08T13:02:22.443 回答