【发布时间】:2016-02-05 16:59:37
【问题描述】:
我正在尝试在我的 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>";
}
【问题讨论】:
-
您对输出的期望是什么?
-
我打算将类别存储在一个变量中,然后我将使用它来生成面包屑并将特定于类别的类添加到某些元素。所以它可以是从纯文本到数组的任何东西。
-
什么是
$this?最后我检查了有几种不同的方法来构建皮肤;能否提供更多细节? -
我不完全确定
$this指的是什么。 (可能是我很难抓取数据的原因。)您可以在此页面上的皮肤中看到它在什么上下文中使用:mediawiki.org/wiki/Manual:Skinning/Archive#Initialization
标签: php mediawiki categories