我正在尝试为每个页面添加自定义侧边栏,如此问题中所提到的: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。
答案 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,而不是正确格式化的侧边栏,因为当前正在使用的皮肤通常会这样做。
如何解决此问题?