2

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

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

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

如何关闭目录中的 TOC bodycontent

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

4

1 回答 1

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;

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

于 2016-05-03T08:47:44.750 回答