2016-02-05 58 views
0

我想在我的鏈接到MediaWiki的皮膚來顯示頁面的類別當前頁面的類別列表,而不訴諸下面的默認代碼:獲得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&amp;action=edit&amp;redlink=1" class="new" title="Category:Player Character (page does not exist)">Player Character</a></li></ul> 
    </div> 
</div> 

理想的情況下,我只想得到類別名稱爲純文本或數組,但我不希望從由上面的代碼返回的HTML推斷它們。

如何將MediaWiki頁面的類別作爲純文本回顯?


更新:

我使用此代碼爲我的百科分類麪包屑。從最頂級的類別開始,並開始工作。 (沒有過度測試)。請注意,這可能非常黑客,並且作爲Extension可能會更好。

// 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("&gt;", $tempout[1]); 

    // Returns every category as URL with <li> tags wrapped around it 
    foreach($wiki_category_breadcrumbs as $value) {   
     echo "<li>". $value ."</li>"; 
    } 
+0

你期望的輸出? – Pooya

+0

我打算將類別存儲在變量中,然後我將使用它來生成麪包屑並向特定元素添加類別特定的類。所以它可以是任何從純文本到數組。 – Swen

+0

'$ this'是什麼?最後我檢查了幾種建築皮膚的不同方法;你能否提供更多的細節? – miken32

回答

1

類別只能作爲html使用的事實是MediaWiki蒙皮的一個很大的部分。儘管如此,仍然可以將它們作爲數組獲取。根據你的皮膚代碼中的(你不告訴我們指的是什麼$this),這些(未經測試)的片段大概應該做的工作:

從​​-function:

$title = $this->data['skin']->getTitle(); 
$categories = $title->getParentCategories(); 

initPage() -function:

$title = $this->getTitle(); 
$categories = $title->getParentCategories(); 
+0

第一個例子適用於我。使用一些自定義代碼,我現在可以獲取數據(如類別),然後在我的皮膚中使用它,但是我想要。一旦我完成它,我將用我的代碼更新我的問題。非常感謝! – Swen