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

如何更改MediaWiki皮肤中TOC的位置,mediawiki,mediawiki-templates,Mediawiki,Mediawiki Templates,我正在为我的网站设计MediaWiki皮肤。对于页面内容,我使用将其全部输出。在较长的页面上,部分内容是目录(TOC) 我想将TOC的位置从正文中移到侧栏中,但我不确定如何防止TOC显示在bodycontent中,或从何处获取原始数据以在侧栏中显示 我希望有一个类似于$this->data['sidebar']['navigation']的数据时间,我可以用它来格式化我想要的格式 如何在正文内容中关闭TOC 是否有一个包含TOC数据的$this->data位置?MediaWiki蒙皮系统并不是专

我正在为我的网站设计MediaWiki皮肤。对于页面内容,我使用
将其全部输出。在较长的页面上,部分内容是目录(TOC)

我想将TOC的位置从正文中移到侧栏中,但我不确定如何防止TOC显示在
bodycontent
中,或从何处获取原始数据以在侧栏中显示

我希望有一个类似于
$this->data['sidebar']['navigation']
的数据时间,我可以用它来格式化我想要的格式

如何在
正文内容中关闭TOC


是否有一个包含TOC数据的
$this->data
位置?

MediaWiki蒙皮系统并不是专门为此设计的,但有人创建了一个扩展来简化您的工作:

使用该扩展,您可以执行如下操作(在
函数execute()
中):

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

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

/* Print body */
echo $new_body;

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