在《MediaWiki外观设置》一文中,我们简单介绍了一下侧边栏的修改,但也仅限于添加和删除某些菜单项。如果你再深入一点就会发现,这些菜单项中有很多内容是无法随便删除的,比如工具栏。
我知道,MediaWiki提倡的是开放,但还是有人会希望尽可能少的呈现某些内容,而这些偏偏都在工具栏里;另外,大部分的菜单项也确实对于用户没什么太大用处,出现反而会影响使用体验。
最简单的方法之一就是通过CSS的方法,把侧边栏中的某些内容给隐藏掉,这个方法可以参见本站另一篇文章《》。
不过也有可能某些朋友跟我一样,对于匿名用户只提供特定的主题给他们,然后在该主题下屏蔽了某些菜单,那么CSS的方法基本上还是可行的(注意:本方法也就只能骗骗MediaWiki的小白用户,只要网站提供多个主题还是可以切换过来的)。另外,某一天我需要在侧边栏中新添加一个菜单项,那么我就得再次编辑CSS文件,找到需要隐藏<div>的ID,然后{ display: none; }
那有没有更好一些的方法,只给匿名用户提供定制的侧边栏菜单——给他们看到我们希望给到的选项呢?
方法如下:
一、打开LocalSettings.php文件,加入以下代码

<?php
# disable sidebar and toolbox for anonymous user

# advice from mediawiki
$wgEnableSidebarCache = false;

$wgHooks['SkinBuildSidebar'][] = 'lfHideSidebar';
/**
 * Show a different sidebar for anonymous users.
 * based on https://www.mediawiki.org/wiki/Manual:Interface/Sidebar/Hacks
 *
 * $skin Skin object
 * $bar array Contains the array items, out of which the sidebar will be
created.
 * @return true
 */
function lfHideSidebar( $skin, &$bar ) {
  global $wgUser;
  // Hide sidebar for anonymous users
  if ( !$wgUser->isLoggedIn() ) {
    // Shows a special anonymous sidebar.
    $bar = array(
      // Returns the message text of that sidebar with only transformation done.
      // Setting array keys "text"; array keys "href" and "active" stay unset.
        'text' => wfMessage( 'anon_sidebar' )->inContentLanguage()->parse(),
      //'text' => wfMessage( 'anon_sidebar' )->inContentLanguage()->text(),
    );
  } else {
    // No changes, just display the sidebar as usual.
  }
  return true;
}

注意:代码中的text内容可以根据自己的需要修改,比如'导航' => wfMessage( 'anon_sidebar' )->inContentLanguage()->parse(),,在它下面有一行很相像的代码,唯一的区别是,前者可以转化为维基文本,而后者直接就是显示文本。
二、打开浏览器,输入http://你的维基站/mediawiki:Anon_sidebar,然后加入希望别人看到的内容。比如:

* [[首页]]
* [[特殊:随机|随机页面]]

注意:mediawiki:sidebar中的方法不能直接套用到上面的页面中,比如mainpage|mainpage-description并不会显示为首页,并且二级菜单貌似也会失效。另外,本方法对于特定主题可能会有不同的效果(Vector主题的TOOLBOX顽强到只能通过CSS的方法或者另加代码来隐藏),尤其是结合CSS的时候,所以还请多进行几次测试以确保显示效果。

参考文献:
Show a different sidebar for anonymous users
Manual:Interface/Sidebar/Hacks

最后修改:2021 年 01 月 14 日 10 : 49 AM
如果觉得我的文章对你有用,请随意赞赏