2016-11-28 68 views
2

我試圖爲每個頁面添加一個自定義邊欄,就像在這個問題中也被問到:Different sidebar for mediawiki pages。 繼答案我創建了兩個頁面(Sidebar1和Sidebar2),然後鏈接到MediaWiki:側邊欄,我用了ParserFunctions以指定正確的頁面以這種方式包括:每頁定製邊欄mediawiki 1.28.0-rc.0

{{#ifeq: {{PAGENAME}} | Main_Page | {{:Sidebar1}} | 
    {{#ifeq: {{PAGENAME}} | Other_page | {{:Sidebar2}} | {{:Sidebar_generic}} }} 
}} 

但是這種解決方案似乎不起作用。

我也試過添加擴展名https://www.mediawiki.org/wiki/Extension:CustomSidebar,但沒有成功。

任何人都可以指出正確的方式來做到這一點?

我使用的mediawiki 1.28.0-rc.0具有以下皮膚:https://www.mediawiki.org/wiki/Skin:Bswiki

回答

0

我已經以某種方式設法做到這一點下面通過插入鉤SkinBuildSidebar的插件「hideSideBar」的代碼:

$wgHooks['SkinBuildSidebar'][] = 'testSidebar'; 


    function testSidebar($skin, &$bar) { 
      global $wgUser; 
      // Hide sidebar for anonymous users 
      if (!$wgUser->isLoggedIn()) { 
        $url = Title::makeTitle(NS_SPECIAL, 'UserLogin')->getLocalUrl(); 
        $bar = array(
          'navigation' => array(
            array('text' => wfMessage('MySidebar')->inContentLanguage()->plain(), 
             ) 
          ) 
        ); 
      } 
      return true; 

我創建了頁面鏈接到MediaWiki:MySidebar,併爲匿名用戶該頁面內的內容作爲邊欄正確顯示,但未格式化。例如:在鏈接到MediaWiki:MySidebar我:

* Entry1 
** Entry2 

但這種方式我看到在側邊欄與原始文本*條目1 ** ENTRY2,而不是一個正確格式化工具條作爲目前使用的皮膚通常做一個條目。

我該如何解決這個問題?

1

最後,我已經解決了這種方式:

function testSidebar($skin, &$bar) { 
     global $wgTitle; 
     if (strcmp($wgTitle,"TestPage1") == 0) { 
       $bar = array(); 
       $skin->addToSidebar($bar,'MySidebar'); 
      } 
     return true; 
}