MediaWiki的页面中包含了各种链接、按钮和交互元素,并每个页面上的内容又根据不同用户有着不同的增减和限制。但是,某些功能可能并非与所有用户相关。例如,在只有注册用户才能编辑的公共维基中,可能没有必要向匿名访问者显示“查看源代码”的链接。同样,匿名用户可能对访问文章的历史记录不感兴趣。

虽然我们无法轻松删除这些元素,但我们可以简单地使用CSS将它们从页面中隐藏起来。 MediaWiki提供了一种定义CSS的方法——即在特定页面中加入CSS代:如适用于全站且每个用户都会加载的MediaWiki:Common.css页面,或者仅当特定用户组内的用户加载时的(例如,MediaWiki:Group-user.css)页面。不幸的是,MediaWiki却没有办法添加仅为匿名用户加载的CSS设置页面。
那么该如何做呢?解决方法是:

  1. 所有浏览者(包括匿名和登录用户)隐藏相关元素。
  2. 为登录用户添加其他样式以显示被隐藏的元素,即覆盖步骤1中添加的全局样式。

要使用这样的维基样式,你需要:

  1. 可以编辑站点样式页面的wiki帐户(需要拥有editsitecss权限)。
  2. 要在wiki站点中使用CSS的话需要设置$wgUseSiteCss = true;(默认开启),但如果禁用它,则以下方法将不起作用。

隐藏MediaWiki元素

第一步是确定要隐藏的元素的CSS选择器。在本例中,我们想要隐藏ID为p-views的导航栏。页面上元素的ID和其他选择器信息可以通过“查看”页面源代码找到。
MediaWiki-p-views-screenshot.webp
现在我们知道CSS的目标是什么(#p-views ,表示ID为p-views的元素),编辑页面MediaWiki:Group-user.css并添加以下内容。我们首先创建样式来取消隐藏元素,这样它就不会因登录用户而消失:

#p-views { 
   display: block !important; 
}

使用!important是为了让用户的样式覆盖所有人的样式,否则,如果稍后应用所有人的样式,导航栏将对所有人隐藏!

接下来,将以下内容添加到MediaWiki:Common.css中:

#p-views { 
   display: none; 
}

确认

本质上就是这样。如果你在注销后重新加载页面,导航栏应该消失了。你可以检查页面源代码,发现该元素仍然存在,只是对匿名用户隐藏了——具体应用的CSS可以在右下角看到。
MediaWiki-P-views-not-shown-with-styles.webp
另一方面,登录帐户后,导航栏就会恢复:
MediaWiki-P-views-shown-with-styles.webp
如果你查看上图的右下角,会发现该栏应用了两组样式。底部的一个为每个人隐藏了该元素,已被划掉。最上面的元素显示了登录用户的元素,它更加明确,因此优先。

针对皮肤的方法

请注意,这只是一种可能的方法。对于仅存在于特定外观中的元素,你可能不希望将隐藏元素的样式添加到MediaWiki:Common.css中。因为它是针对所有页面皮肤加载的,而不仅仅是具有你想要的特定皮肤。如此一来,可能对其他皮肤产生轻微的性能影响之外,还可能使你的MediaWiki:Common.css页面变得又大又笨重。所以,另一种方法就是将隐藏样式添加到特定于皮肤的样式页面——MediaWiki:{skin}.css,其中{skin}替换为皮肤名称(第一个字母大写)。因此,要仅隐藏Vector皮肤中的元素(因为它们仅存在于该皮肤中,或者因为你只想使用该皮肤在页面视图上隐藏它们),那么请在MediaWiki:Vector.css中添加:

#p-views { 
   display: none; 
}

但请注意,恢复元素可见性的样式仍然需要进入MediaWiki:Group-user.css,而不同组的样式页面是没有针对于特定皮肤的。

在配置文件中修改

严格说起来,MediaWiki还是提供了另外一种针对匿名用户的设置方法,只是它更加复杂,通常更适合个人站点。具体做法就是在配置文件中添加一段代码,而其目的仍然是使用CSS隐藏元素。具体可见本站的文章《MediaWiki匿名用户隐藏某些链接(按钮)
该方法的缺点除了对权限要求高之外,系统更新后函数可能被弃用(比如User::isLoggedIn改成User::isAnon)。最重要的还有一点就是时间一长,你可能自己都记不清是在页面中修改了还是在配置文件中修改了。

其他文章

禁用MediaWiki的讨论页

参考资料

本文主要翻译自How to Hide Elements for Anonymous Users in MediaWiki一文,并做了适当的修改。

最后修改:2024 年 03 月 27 日
如果觉得我的文章对你有用,请随意赞赏