如何在MediaWiki皮肤中更改TOC的位置

时间:2016-04-30 18:08:30

标签: mediawiki mediawiki-templates

我正在为我的网站浏览MediaWiki皮肤。对于页面内容,我使用<?= $this->html( 'bodycontent' ); ?>输出所有内容。部分内容,在较长的页面上,是目录(TOC)。

我想将TOC的位置从身体移到侧边栏但我不确定如何阻止TOC显示在bodycontent或在哪里显示原始数据它在侧栏。

我希望有一个类似于$this->data['sidebar']['navigation']的数据时间,我可以根据自己的需要对其进行格式化。

如何关闭bodycontent

中的TOC

是否有$this->data个位置有TOC数据?

1 个答案:

答案 0 :(得分:2)

MediaWiki皮肤系统并非真正为此设计,但有人创建了一个扩展程序,使您的工作更轻松:https://www.mediawiki.org/wiki/Extension:DeToc

使用该扩展程序,您可以执行以下操作(在function execute()内):

$body = $this->data['bodycontent'];
$new_body = DeToc::RemoveToc($body, $extracted_toc);

/* Print body */
echo $new_body;

/* Print TOC somewhere else */
echo $extracted_toc;

或者您可以使用$parser->mShowToc = false;关闭TOC,然后自己创建TOC。 MediaWiki在内部使用这样的正则表达式来查找所有部分:'/^\={2,5}(.*?)\={2,5}$/m'