我正在为我的网站浏览MediaWiki皮肤。对于页面内容,我使用<?= $this->html( 'bodycontent' ); ?>
输出所有内容。部分内容,在较长的页面上,是目录(TOC)。
我想将TOC的位置从身体移到侧边栏但我不确定如何阻止TOC显示在bodycontent
或在哪里显示原始数据它在侧栏。
我希望有一个类似于$this->data['sidebar']['navigation']
的数据时间,我可以根据自己的需要对其进行格式化。
如何关闭bodycontent
?
是否有$this->data
个位置有TOC数据?
答案 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'