Extension:NoTitle/ja

From MediaWiki.org

Jump to: navigation, search
MediaWiki Extensions
List of MediaWiki Extensions
Crystal Clear action run.png
NoTitle

Release status: beta

実装 Extended syntax
使われているフック ParserBeforeStrip

BeforePageDisplay

説明 記事中にマジックワードを記述することで、主タイトル行を非表示にします
作者 Carlo Cabanilla
バージョン 1.01 (5/18/2007)
MediaWiki 1.9.3および1.13.3で確認
ダウンロード この記事中に拡張機能のプログラムを記載

NoTitle拡張機能は記事中にマジックワードを記述することにより、主タイトル行を非表示にする機能を実装します。

なお、主タイトルとはスキンPHPファイルで<h1>~</h1>で囲まれた部分で、クラス指定class="firstHeading"が行われているものとします。MediaWikiのデフォルト・スキンであるMonoBookスキンを想定しています。

Contents

[edit] 使用法

主タイトル(見出しレベルH1)を非表示にしたい任意の記事でマジックワード『__NOTITLE__』を記述します。

[edit] 拡張機能のソースコード

次に示すソースコードをnotitle.phpとしてextensionsディレクトリに保存する。

<?php
 
$NoTitle = new NoTitle();
 
$wgHooks['MagicWordMagicWords'][] = array($NoTitle, 'addMagicWord');
$wgHooks['MagicWordwgVariableIDs'][] = array($NoTitle, 'addMagicWordId');
$wgHooks['LanguageGetMagic'][] = array($NoTitle, 'addMagicWordLanguage');
$wgHooks['ParserAfterStrip'][] = array($NoTitle, 'checkForMagicWord');
$wgHooks['BeforePageDisplay'][] = array($NoTitle, 'hideTitle');
 
class NoTitle
{
  function NoTitle() {}
 
  function addMagicWord(&$magicWords) {
    $magicWords[] = 'MAG_NOTITLE';
    return true;
  }
 
  function addMagicWordId(&$magicWords) {
    $magicWords[] = MAG_NOTITLE;
    return true;
  }
 
  function addMagicWordLanguage(&$magicWords, $langCode) {
    switch($langCode) {
    default:
      $magicWords['MAG_NOTITLE'] = array(0, '__NOTITLE__');
    }
    return true;
  }
 
  function checkForMagicWord(&$parser, &$text, &$strip_state) {
    global $action;
    $mw = MagicWord::get('MAG_NOTITLE');
 
    if (!in_array($action, array('edit', 'submit')) && $mw->matchAndRemove($text)) {
      $parser->mOptions->mHideTitle = true;
      $parser->disableCache();
    }
 
    return true;
  }
  function hideTitle(&$page) {
 
    if ($page->parserOptions()->mHideTitle) {
      $page->mScripts .= '<style>h1.firstHeading { display:none; } </style>';
    }
 
    return true;
  }
}

オリジナル・プログラムのPHP構文上の矛盾を2箇所修正しています。詳細はノートページに記載しています。

[edit] インストール

LocalSettings.phpのなるべく後ろの方に、次の行を追加する。

require_once("$IP/extensions/notitle.php");

[edit] カスタマイゼーション

[edit] Modernスキンで利用する

Wikimediaに標準でインストールされているModernスキンにおいて<h1 class="firstHeading">~</h1>ではなく、<h1 id="firstHeading">~</h1>となっているため、効果が得られない問題に対処する手法。

ソースコードの中で、スタイルシートを出力する部分を少し改変する。

改変前

$page->mScripts .= '<style>h1.firstHeading { display:none; } </style>';

改変後

$page->mScripts .= '<style>h1.firstHeading, h1#firstHeading { display:none; } </style>';