(MediaWiki) スキンによる未ログオンユーザ閲覧制限

戻る一つ前のメニューに戻る

MediaWikiのスキンPHPファイルを若干変更することで、未ログオンユーザであるかどうかを検出して、特別ページの閲覧することを阻止するための手法を説明する。

たとえば、[[特別:Search]]、[[特別:RecentChanges]]、[[特別:Upload]]、[[特別:Contributions/Oasis]]、[[特別:Version]]などのページを未ログオンユーザが閲覧できないようにすることである。

なお、MediaWikiの推奨方法は「拡張機能」を用いる方法であるため、このページで説明する方法ではなく、(MediaWiki) specialpage restrict拡張機能の手法を採用することを推奨する。

スキンPHPファイルの変更箇所

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 -->

関連項目

戻る一つ前のメニューに戻る