MediaWikiのスキンPHPファイルを若干変更することで、未ログオンユーザであるかどうかを検出して、特別ページの閲覧することを阻止するための手法を説明する。
たとえば、[[特別:Search]]、[[特別:RecentChanges]]、[[特別:Upload]]、[[特別:Contributions/Oasis]]、[[特別:Version]]などのページを未ログオンユーザが閲覧できないようにすることである。
なお、MediaWikiの推奨方法は「拡張機能」を用いる方法であるため、このページで説明する方法ではなく、(MediaWiki) specialpage restrict拡張機能の手法を採用することを推奨する。
Modernスキンを例にとって説明する。
変更前
<!-- content --> <div id="mw_content"> <!-- contentholder does nothing by default, but it allows users to style the text inside the content area without affecting the meaning of 'em' in #mw_content, which is used for the margins --> <div id="mw_contentholder"> <div class='mw-topboxes'> <div class="mw-topbox" id="siteSub"><?php $this->msg('tagline') ?></div> <?php if($this->data['newtalk'] ) { ?><div class="usermessage mw-topbox"><?php $this->html('newtalk') ?></div> <?php } ?> <?php if($this->data['sitenotice']) { ?><div class="mw-topbox" id="siteNotice"><?php $this->html('sitenotice') ?></div> <?php } ?> </div> <div id="contentSub"><?php $this->html('subtitle') ?></div> <?php if($this->data['undelete']) { ?><div id="contentSub2"><?php $this->html('undelete') ?></div><?php } ?> <?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#mw_portlets"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?> <?php $this->html('bodytext') ?> <div class='mw_clear'></div> <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?> </div><!-- mw_contentholder --> </div><!-- mw_content -->
変更後
<!-- content --> <div id="mw_content"> <!-- contentholder does nothing by default, but it allows users to style the text inside the content area without affecting the meaning of 'em' in #mw_content, which is used for the margins --> <div id="mw_contentholder"> <?php if(($this->data['nscanonical'] == "Special") && !($this->data['titletext'] == "UserLogin" || $this->data['titletext'] == "UserLogout" ) && empty($this->data['loggedin'])) { echo "\t\t<p>This page is protected from non login user.</p>\n"; } else { ?> <div class='mw-topboxes'> <div class="mw-topbox" id="siteSub"><?php $this->msg('tagline') ?></div> <?php if($this->data['newtalk'] ) { ?><div class="usermessage mw-topbox"><?php $this->html('newtalk') ?></div> <?php } ?> <?php if($this->data['sitenotice']) { ?><div class="mw-topbox" id="siteNotice"><?php $this->html('sitenotice') ?></div> <?php } ?> </div> <div id="contentSub"><?php $this->html('subtitle') ?></div> <?php if($this->data['undelete']) { ?><div id="contentSub2"><?php $this->html('undelete') ?></div><?php } ?> <?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#mw_portlets"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?> <?php $this->html('bodytext') ?> <div class='mw_clear'></div> <?php if($this->data['catlinks']) { $this->html('catlinks'); } ?> <?php } ?> </div><!-- mw_contentholder --> </div><!-- mw_content -->