每页自定义侧边栏mediawiki 1.28.0-rc.0

时间:2016-11-28 23:58:15

标签: php mediawiki sidebar

我正在尝试为每个页面添加自定义侧边栏,如此问题中所提到的:Different sidebar for mediawiki pages。 根据答案,我创建了两个页面(Sidebar1和Sidebar2),然后在MediaWiki:Sidebar中我使用了ParserFunctions来指定要包含的正确页面:

{{#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

2 个答案:

答案 0 :(得分:1)

最后我以这种方式解决了:

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

答案 1 :(得分:0)

我以某种方式设法按照插件的代码" hideSideBar"通过向SkinBuildSidebar插入一个钩子:

$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

但是通过这种方式,我在侧边栏中看到了一个条目,其中包含原始文本* Entry1 ** Entry2,而不是正确格式化的侧边栏,因为当前正在使用的皮肤通常会这样做。

如何解决此问题?