我正在为我的网站开发MediaWiki皮肤。对于页面内容,我使用<?= $this->html( 'bodycontent' ); ?>
来输出所有内容。其中一部分,在较长的页面上,是目录(TOC)。
我想把TOC的位置从正文中移到侧边栏中,但我不知道如何防止TOC显示在bodycontent
中,也不知道从哪里获得原始数据以在侧边栏中显示它。
我希望有一个类似于$this->data['sidebar']['navigation']
的数据时间,我可以用它来格式化我想要的格式。
如何关闭bodycontent
中的TOC?
是否有$this->data
位置具有TOC数据?
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'