Extension:NoTitle/ja
From MediaWiki.org
|
NoTitle Release status: beta |
|
|---|---|
| 実装 | Extended syntax |
| 使われているフック | ParserBeforeStrip |
| 説明 | 記事中にマジックワードを記述することで、主タイトル行を非表示にします |
| 作者 | 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>';