2024年1月31日更新
User::isLoggedIn()
函数已经被官方弃用,取而代之的是User::isAnon()
,所以方法更新如下:
function efAddSkinStylesAnon( OutputPage &$out, Skin &$skin ) {
if ( $skin->getUser()->isAnon() ) {
// Hide history tab
if ( $skin->getSkinName() == 'timeless' ) {
$out->addInlineStyle( '#my-link { display:none; }' );
}
}
return true;
}
$wgHooks['BeforePageDisplay'][] = 'efAddSkinStylesAnon';
除替换函数外,也应该避免使用全局$wgUser
。
2022年5月29日原文
这次的问题很简单,就是希望针对匿名用户能够禁用某些链接,就像下面这样:
创建笔记的功能只针对注册用户开放,而匿名用户就不必显示了(因为权限设置,就算是显示了也没办法使用,还不如不要出现该按钮)。实现代码如下:
function efAddSkinStylesAnon( OutputPage &$out, Skin &$skin ) {
global $wgUser;
if( !$wgUser->isLoggedIn() )
{
// Hide history tab
if ( $skin->getSkinName() == 'timeless' ) {
$out->addInlineStyle( '#my-link { display:none; }' );
}
}
return true;
}
$wgHooks['BeforePageDisplay'][] = 'efAddSkinStylesAnon';
因为对匿名用户,默认皮肤是timeless,而#my-link
则是链接(按钮)的id。