我正在尝试在MediaWiki皮肤中显示网页的类别,而不使用以下默认代码:
<?php if ( $this->data['catlinks'] ) { $this->html( 'catlinks' ); } ?>
这增加了一堆我不想要的不必要的HTML。
<div id='catlinks' class='catlinks'>
<div id="mw-normal-catlinks" class="mw-normal-catlinks">
<a href="/wiki/Special:Categories" title="Special:Categories">Category</a>:
<ul><li><a href="/w/index.php?title=Category:Player_Character&action=edit&redlink=1" class="new" title="Category:Player Character (page does not exist)">Player Character</a></li></ul>
</div>
</div>
理想情况下,我只是将类别名称视为纯文本或数组,但我不想从上面代码返回的HTML中推断它们。
如何将MediaWiki页面的类别作为纯文本回显?
更新
我正在使用此代码为我的Wiki生成类别面包屑。从最顶级的类别开始,然后开始工作。 (未经过过度测试)。请注意,这可能非常hacky,作为扩展会更好。
// Get the current page's Title
$wiki_title = $this->data['skin']->getTitle();
// Get the categories
$parenttree = $wiki_title->getParentCategoryTree();
// Skin object passed by reference cause it can not be
// accessed under the method subfunction drawCategoryBrowser
$tempout = explode( "\n", $this->data['skin']->drawCategoryBrowser( $parenttree ) );
// Convert data to usable array
$wiki_category_breadcrumbs = explode( ">", $tempout[1]);
// Returns every category as URL with <li> tags wrapped around it
foreach( $wiki_category_breadcrumbs as $value ) {
echo "<li>". $value ."</li>";
}
答案 0 :(得分:1)
类别仅作为html提供的事实是MediaWiki skinning的一个更怪异的部分。但是仍然可以将它们作为数组提取。根据您的皮肤代码中的位置(您不会告诉我们$this
指的是什么),这些(未经测试的)片段应该可以完成这项工作:
来自execute()
- 函数:
$title = $this->data['skin']->getTitle();
$categories = $title->getParentCategories();
来自initPage()
- 函数:
$title = $this->getTitle();
$categories = $title->getParentCategories();