Php mediawiki—我想检查用户是否在创建的页面中登录以进行更改
在我的本地网站中,我使用mediawiki模板创建了许多页面,任何人都可以看到该页面,但我想为编辑页面添加一个链接。我想这样做“如果用户已经登录,然后编辑页面,如果没有登录,然后当点击该链接,然后页面重定向到登录页面,并在用户登录后编辑页面” (可以将模板中的会话值用于检查if条件,因为我计划使用if条件,…) 如果有任何其他解决方案,那么也给我您必须编写一个,检查用户是否登录(没有内置的方法来检查)。编写这样的扩展非常简单(见下文),但是请注意,这使得不可能在使用解析器函数的地方缓存页面,从而使页面加载速度大大降低。如果您需要在常规内容页面上执行此操作,则加载页面内容后修改页面内容的前端(javascript)解决方案很可能是更好的选择。无论如何,这里有一个可能的解决方案:Php mediawiki—我想检查用户是否在创建的页面中登录以进行更改,php,mediawiki,Php,Mediawiki,在我的本地网站中,我使用mediawiki模板创建了许多页面,任何人都可以看到该页面,但我想为编辑页面添加一个链接。我想这样做“如果用户已经登录,然后编辑页面,如果没有登录,然后当点击该链接,然后页面重定向到登录页面,并在用户登录后编辑页面” (可以将模板中的会话值用于检查if条件,因为我计划使用if条件,…) 如果有任何其他解决方案,那么也给我您必须编写一个,检查用户是否登录(没有内置的方法来检查)。编写这样的扩展非常简单(见下文),但是请注意,这使得不可能在使用解析器函数的地方缓存页面,从而
$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}欢迎,登录用户!}
请注意,我根本没有测试这段代码