在我的本地我使用mediawiki模板创建了许多页面,任何人都可以看到该页面,但我想为编辑页面添加一个链接。我希望这样做“如果用户已登录则编辑页面如果不登录则点击该链接然后页面重定向到登录页面,登录后用户编辑页面”...
(可以在模板中获取会话值以检查条件是否因为我的计划使用if条件,...)
如果有任何其他解决方案,那么也给我
答案 0 :(得分:0)
您必须编写一个extension that provides a parser function来检查用户是否已登录(没有内置方法来检查)。编写这样的扩展非常简单(见下文),但请注意,这使得无法缓存使用解析器函数的页面,从而使页面加载更多更慢。如果您需要在常规内容页面上执行此操作,则在加载页面内容后修改页面内容的前端(javascript)解决方案很可能是更好的选择。无论如何,这是一个可能的解决方案:
$wgHooks['ParserFirstCallInit'][] = 'efLoggedinParserFunction_Setup';
function efLoggedinParserFunction_Setup( &$parser ) {
$parser->setFunctionHook( 'loggedin', 'efLoggedinParserFunction_Render' );
return true;
}
function efLoggedinParserFunction_Magic( &$magicWords, $langCode ) {
$magicWords['loggedin'] = array( 0, 'loggedin' );
return true;
}
function efLoggedinParserFunction_Render( $parser) {
$res = $parser->getUser()->isLoggedIn();
return array( $res, 'noparse' => false);
}
这应该为您提供一个返回{{#loggedin}}
或true
的解析器函数false
,以便您可以编写例如。 {{#ifeq:{{#loggedin}}|true| Welcome, logged in user! }}
请注意,我根本没有测试此代码。