Manual:インターフェイス/サイドバー

This page is a translated version of the page Manual:Interface/Sidebar and the translation is 73% complete.
サイドバーの例
関連項目: Manual:Remove Tabs


MediaWiki:Sidebar は、利用者がナビゲーション バーを変更できるようにします。 サイドバーはウィキの最も重要な場所へのリンクを提供し、サイト管理者にリンクの重要なコレクションを追加する場所を提供します。 例えば、ほとんどのウィキはコミュニティの議論ページやいくつかの便利なツールページにリンクしています。

外装モノブックまたはベクターの場合、サイドバーが検索バーやツールボックスとともに左上 (右横書きの言語の場合は右上) に配置されますが、他の外装では配置が異なる場合があります。 このサイドバーはモバイル サイト利用者には非表示です (Extension:MobileFrontend / Skin:MinervaNeue で生成される版のこと - 表示するには MobileMenu フックで対応できます。)

サイドバーをカスタマイズする

ウィキで MediaWiki:Sidebar をカスタマイズするには、まず最初に「インターフェイス編集」(editinterface) 権限のある利用者(管理者であれば既定で権限がある)としてログインします。[1]

MediaWiki:Sidebar は以下のいずれかの方法でアクセスできます。

  • ブラウザでhttp://あなたのウィキのアドレス/wiki/index.php?title=MediaWiki:Sidebar&action=editを開く。
  • 検索バーに MediaWiki:Sidebar と入力し、エンターキーを押す。
  • Special:AllMessages で "side" を検索する。

以下は、MediaWiki:Sidebarに入力するコードの例です。

* navigation
** mainpage|Accueil
** Special:RecentChanges|Recent changes
* new heading
** portal-url|Forums
** https://www.mediawiki.org|MediaWiki home

このサンプルの場合、以下のサイドバーが表示されます。

 
サイドバーの例
ページを新しく作ることになった場合、エディター画面に既定のサイドバーが表示されます。「MediaWiki:Sidebar」というページをきちんと作成するには、内容を変更してから保存してください。

ナビゲーションバーを新しいセクションに分割

サイドバーを区切り、個別の見出しを作ることができます。 これはアスタリスク(*)を1つ付けることで行えます。

つまり、見出しはレベル1のリスト要素になります。(先ほどのサンプルでは「navigation」と「new heading」が見出しです)。 もし見出しの語句がインタフェースのメッセージ(MediaWiki名前空間にあるページ)に同名のものがある場合、そのメッセージの中身がラベルとなります。そうでなければ、指定されたテキストがそのままラベルになります。 注意点として、マジックワード {{int:}} は適用外のため機能しません。MediaWiki の仕組みでは、まず自動的に翻訳を探して表示しようと試みて、(見つからなければ)既定のメッセージをフォールバック言語で表示するからです。

上記のサンプルだと、* navigation および * new heading は節の見出しです。

サイドバーにリンクを作成

これはアスタリスク(*)を2つ付けることで行えます(レベル2のリスト要素)。 例えば以下のようにです。

** 対象(リンク先)|リンクの文字列
対象(リンク先)
リンク先はインターフェースメッセージ(MediaWiki名前空間内のページ)、Wikiページの名前、外部リンクのいずれかになります。いずれにせよ、リンクは内部リンク、インターウィキ、外部リンクのいずれかになります。[2]
これは以下の手順で実行されます。
  1. 対象(リンク先)に指定されたテキストを取得する。
  2. このテキストと同名のインターフェースメッセージが存在する場合、そのメッセージの内容を使用する。
  3. このテキストがURLである場合(http:// などのURLプロトコルで始まる場合)は、そのURLへリンクする。
  4. いずれにも当てはまらない場合は、通常のウィキリンクとして扱う(指定されたテキストのページへリンクする。インターウィキであればそのインターウィキに指定されたページへリンクする)。
  5. ただし「-」へのリンクになってしまう場合は、その行自体をサイドバーから削除する(これは、リンクを保持するメッセージを変更することで、すべての言語のエントリを除去するのに便利です)。
例:
  • "** portal-url|portal" - MediaWiki:Portal-url に指定されたテキストを使用する(内容は「Project:Community portal」)。
  • "** https://www.mediawiki.org|MediaWiki home" - URLなので、 https://www.mediawiki.org へリンクする。
  • "** Special:RecentChanges|Recent changes" - Special:RecentChanges へリンクする。同名のインタフェース メッセージがなく、有効な URL でもないため。
  • "** w:Foo|Some interwiki page" - 同じ理由で w:Foo にリンクする。
リンクの文字列
リンクの文字列は、インタフェースメッセージの名前(MediaWiki名前空間のページ)かプレーンテキストを指定します。
  • リンクの文字列が既存もしくは既定のインタフェースメッセージと一致すると、メッセージの内容を使用。MediaWiki は自動で地域化バージョンを照会する。例えば使用言語がfr(フランス語)でリンクの文字列がインタフェースメッセージ「forum」だったと仮定すると、「forum/fr」を照会してから「forum」を使用する。
  • それ以外の場合には、リンクの文字列をそのまま使用。
  • 通常のウィキリンクと異なり、リンクの文字列は必須。リンクの文字列がないとその項目は無視されることに注意。
例:
  • ** Homepage|mainpage - MediaWiki:Mainpage に指定されたテキストを使用する(内容は "MediaWiki")。
  • ** Special:Recentchanges|Recent changes - Uses "Recent changes", since there is no interface message of that name.
対象(リンク先)の w:Foo は英語版ウィキペディアへのインターウィキです。 別の言語版へリンクさせる場合は、記事名の前に言語コードを指定してください。 例えば w:pl:Foo かシンプルに pl:Foo のようにです。 しかし、このような多言語対応のウィキへリンクさせる場合は、Special:MyLanguage を使う方が良いでしょう。 試しに、Help:Links#Interlanguage links へリンクしてみましょう。
Special:MyLanguage/Help:Links#Interlanguage_links | helplinks
文字列 helplinks はMediaWiki名前空間から呼び出された翻訳可能なメッセージで、先ほどの portal と同様です。対象(リンク先)は単に特別ページへのリンクです。 MediaWiki:portal-url のように翻訳可能なメッセージの内容から呼び出されてはいません。 対象となるページにその言語版のコンテンツが存在する場合は、そのページが開かれます。 存在しない場合は、デフォルトで指定された言語版のページが開かれます。


節の順序(要素)

いくつかのスキンでは、検索バー、ツールボックス、言語のような、特別な要素の順序をカスタマイズすることもできます。 見出しと同じく、MediaWiki:Sidebar に SEARCH 、TOOLBOX 、LANGUAGES という特別なキーワードを追加することでカスタマイズできます。

ただし、MonoBookなどのスキンは、検索バーの位置をカスタマイズできず、必ずサイドバーの最初のセクションの直後に配置されます。 このような場合は、一番初めに空のセクションを用意することで、検索バーを一番上に移動させることができます。 例えば以下のように指定します。

* empty section
* navigation
** mainpage|mainpage
** Special:Recentchanges|Recent changed
* new heading
** portal-url|portal
** https://www.mediawiki.org|MediaWiki home

外装によっては、最初のセクションのみ表示が異なったり、最初のセクションと(もし存在すれば)2番目のセクションの間に何らかの要素を配置したりすることがあることに注意してください。

ツールチップとアクセスキー

ツールチップとは、グラフィカル・ユーザー・インターフェース(GUI)のアイコンや画像、ハイパーリンクなどの要素の上にカーソルを置いたときに表示されるメッセージのことです。

自分で何か項目をサイドバーに追加した場合は、ツールチップがありません。ただし、ツールチップは以下の手順を踏むことで、自作することができます。 [3]

  • 「MediaWiki:Tooltip-n-<項目のid>」という名前のウィキページを作成し、
  • ツールチップをその新しいページに格納する。

アクセスキーは、コンピューターを使用しているユーザーが、キーボードを使ってページの特定の部分に即座にジャンプできるようにするものです。

アクセスキーも同様に、次の手順で自作できます。

  • 「MediaWiki:Accesskey-n-<id of the item>」という名前のウィキページを作成し、
  • アクセスキーをその新しいページに格納する。

例:


翻訳

文字列を翻訳して使用するには、MediaWiki 名前空間で該当するページを編集します。

例: 「メインページ」という名前の項目を置換する文字列は、MediaWiki:Mainpage から取ります。この時、ドイツ語版ウィキを使用するユーザーのために文字列を設定・変更したい場合、使いたい文字列を MediaWiki:Mainpage/de に追加します。

これでMediaWikiのインタフェースを使って、リンクの文字列を簡単に置換できます。

注意事項として、MediaWikiは既定でサイドバーをその言語、つまりあなたのウィキの既定の言語が使用されます。例えばフランス語が既定の言語だとすると、MediaWiki:Mainpage/fr を編集した際、言語設定を変更していないユーザーと全ての匿名ユーザーには、フランス語のサイドバーが表示されます。

さらに高度な翻訳の解説は Help:Extension:Translate/構造化されていない要素の翻訳 を参照してください。

高度なカスタマイズ

サイドバーを思い通りにカスタマイズするには JavaScript または CSS を用いるか、直接PHPファイルを編集ししてください。なおこれを行う場合は、その前に以下の注意点に目を通してください。

  • JavaScriptは壊れやすいです。JavaScriptを無効にしていれば動作しませんし、ブラウザやスキンによってはスクリプトが頻繁に作動しなくなることもあります。
  • PHPファイルを編集すると予期せぬエラーが発生しやすく、新規ファイルを手動で書き換えない限り、変更箇所は次回の更新で失われます。

MediaWiki:Sidebar でサイドバーとメインロゴを削除する

サイドバーとロゴを完璧に消したい場合は、

MediaWiki:Sidebar を空にして保存します。

以下のCSSを適用すれば、

#column-content { margin: 0 0 1em 0; }
#content { margin: 0 0 0 0; }
#p-cactions { left: .1em; }

ウィキのメインテキストが左に移動します。

サイドバー、タブ、検索バーを完全に削除する

関連項目: Manual:Remove Tabs


ロゴとサイドバー全体を削除したい場合:

#p-logo, .generated-sidebar, #p-lang, #p-tb  { display:none; }

検索バーを削除したい場合:

#p-search { display:none; }

議論タブを削除したい場合:

#ca-talk { display:none!important; }

ページタブを削除したい場合:

#ca-nstab-main { display:none!important; }

UI メッセージを強制的に内容に沿わせる

特に多言語版の場合、ページによっては時により内容の言語に合わせて調整する必要があります。その実現には $wgForceUIMsgAsContentMsg の設定を変えます。この方法でそれぞれのメッセージを上書きする場合には、メインページの内容の言語のバージョンに対してサイドバーからリンクを貼り、かつポータルページから以下を渡すように個別に調整します。

LocalSettings.php

code
$wgForceUIMsgAsContentMsg = [ 'mainpage', 'portal-url' ];

ツールボックスのセクションを追加または削除する

The toolbox appears on the left under MediaWiki:Sidebar in certain skins. On Vector 2022 it appears on the right of the screen (in LTR languages).

As of MediaWiki 1.43 you can append links to the toolbox using MediaWiki:Sidebar via MediaWiki:Sidebar.

* empty section
* navigation
* TOOLBOX
** portal-url|Forum

Adding toolbox items prior to 1.43 via JavaScript

The toolbox appears on the left under MediaWiki:Sidebar. The toolbox is a dynamic element requiring programmatic methods such as skin extensions, PHP (see skins/MonoBook.php and creating a new skin) or JavaScript.

The JavaScript solution uses User:{username}/common.js / MediaWiki:Common.js, available for MediaWiki 1.9+.

次に、どのセクションにどのリンクを表示するかを設定するだけです。また、必要に応じていくつかのリンクを削除することもできます。

Code

function ModifySidebar( action, section, name, link ) {
	try {
		switch ( section ) {
			case 'languages':
				var target = 'p-lang';
				break;
			case 'toolbox':
				var target = 'p-tb';
				break;
			case 'navigation':
				var target = 'p-navigation';
				break;
			default:
				var target = 'p-' + section;
				break;
		}

		if ( action == 'add' ) {
			var node = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];

			var aNode = document.createElement( 'a' );
			var liNode = document.createElement( 'li' );

			aNode.appendChild( document.createTextNode( name ) );
			aNode.setAttribute( 'href', link );
			liNode.appendChild( aNode );
			liNode.className = 'plainlinks';
			node.appendChild( liNode );
		}

		if ( action == 'remove' ) {
			var list = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];

			var listelements = list.getElementsByTagName( 'li' );

			for ( var i = 0; i < listelements.length; i++ ) {
				if (
					listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
					listelements[i].getElementsByTagName( 'a' )[0].href == link
				)
				{
					list.removeChild( listelements[i] );
				}
			}
		}


	} catch( e ) {
		// let's just ignore what's happened
		return;
	}
}

function CustomizeModificationsOfSidebar() {
	// Adds [[Special:CategoryTree|Special:CategoryTree]] to toolbox
	ModifySidebar( 'add', 'toolbox', 'CategoryTree', 'https://en.wikipedia.org/wiki/Special:CategoryTree' );
	// Removes [[Special:Upload|Special:Upload]] from toolbox
	ModifySidebar( 'remove', 'toolbox', 'Upload file', 'https://en.wikipedia.org/wiki/Special:Upload' );
}

jQuery( CustomizeModificationsOfSidebar );
使用法
function CustomizeModificationsOfSidebar() - Has to be customized for adding or removing links in specific sections:
ModifySidebar( "action", "section", "name", "link" );
パラメーター
action add to add a link; remove to remove a link
section navigation, toolbox, languages but also any other existing customized section; the given link will be added to or removed from this section
name contains the text of the link
link contains the URL of the link

特定の利用者グループへの変更制限

If you want to restrict the modification of the links to a specific user group (e.g. bureaucrat), change:

jQuery( CustomizeModificationsOfSidebar );

to

if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'bureaucrat' ) !== -1 ) {
	jQuery( CustomizeModificationsOfSidebar );
}

For restricting the modifications to IPs instead of a specific user group, use

if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'user' ) === -1 ) {
	jQuery( CustomizeModificationsOfSidebar );
}

ツールボックスのセクションを追加または削除する(PHP)

You can add in your file LocalSettings.php the hook described on this page. With this, you can modify via MediaWiki:Sidebar the links in the toolbox panel (remove some links, change their name) and add custom links (e.g. add the "Recent changes" link there instead of the navigation panel).

Make expanding/collapsing sidebar for all users (Monobook skin only)

If you use the Monobook skin and don't want to miss the expandable menu bar from e.g. Vector skin, paste the following code into MediaWiki:Monobook.js of your wiki.

/////////////////////////////////////////////////////////
// Code snippet to make your sidebar items expandable. 
// Use this code ONLY for the Monobook skin. 
/////////////////////////////////////////////////////////

$( document ).ready( function() {
	// Set the default expanded items by their headline
	var defaultExpandItems = ['Navigation', 'Orga'];
	// Set the basic-name for the cookies, which save the current state of expanding
	var expandCookieName = 'disdance_project_wiki_nav_expanded_';

var maxHeights = [];
	var expandeds = [];
	var labels = [];
	initNav();
});

function initNav() {
	$( '#p-logo' ).css({'position': 'relative', 'display': 'block'});
	$( '.generated-sidebar h5,#p-tb h5 ').each( function( i ) {
		var id = $( this ).parent().attr( 'id' );
		maxHeights[id] = $( this ).next( 'div' ).height();
		var str = $( this ).html();
		labels[id] = str;

if ( $.cookie( expandCookieName + id ) == 'false' ) {
			expandeds[id] = false;
			minimize( $( this ) );
		} else if ( $.cookie( expandCookieName + id ) == 'true' ) {
			expandeds[id] = true;
			maximize( $( this ) );
		} else if ( defaultExpandItems.indexOf( str ) == -1 ) {
			expandeds[id] = false;
			minimize( $( this ) );
		} else {
			expandeds[id] = true;
			maximize( $( this ) );
		}
		$( this ).css({'cursor': 'pointer'});
		$( this ).click( toggleNav );
	} );
}

function minimize( target ) {
	var id = $( target ).parent().attr( 'id' );
	// You can change the expires parameter to save the cookie longer/shorter than 7 days like in this code
	$.cookie( expandCookieName + id, 'false', { expires: 7} );
	var str = labels[id] + '  ►';
	$( target ).next( 'div' ).animate({'height': '0px'});
	$( target ).html( str );
}

function maximize( target ) {
	var id = $( target ).parent().attr( 'id' );
	// You can change the expires parameter to save the cookie longer/shorter than 7 days like in this code
	$.cookie( expandCookieName + id, 'true', { expires: 7} );
	var str = labels[id] + '  ▼';
	var newHeight = maxHeights[id];
	$( target ).next( 'div' ).animate({'height': newHeight + 'px'});
	$( target ).html( str );
}

function toggleNav( e ) {
	var id = $(e.target ).parent().attr( 'id' );
	expandeds[id] = !expandeds[id];
	if( expandeds[id] == true ) {
		maximize( e.target );
	} else {
		minimize( e.target );
	}
}

///////////////////////////////////////////////////////
///////////////////////////////////////////////////////

You can change the width of your sidebar by adding the following CSS rules to your MediaWiki:Monobook.css

note that this is an article, not a file. This changes the width to 15em, the actions position and portlet width should be an em or so less, so I've set them to 14em in this example.

/* increase sidebar width */
#column-content { margin-left: -15em; }
#column-content #content { margin-left: 15em; }
#p-logo a, #p-logo a:hover { width: 15em; }
#p-cactions { left: 14.5em; }
.portlet { width: 14em; }
#column-content { margin-left: -14em; }
#content.mw-body { margin-left: 14em; }

Change sidebar content when logged in (PHP)

Install and configure the DynamicSidebar extension.

Parser functions in sidebar

Although it is not exactly recommended, the sidebar does support parser functions (such as ParserFunctions ), provided the ** is outside the parser function, and the parser function does not span multiple lines. For example:

*Heading
**{{#ifeq:{{NAMESPACE}}|User|Page-to-link-to{{!}}text-to-show-on-user-page}}
**{{#ifeq:{{NAMESPACE}}|Talk|Another-Page-to-link-to{{!}}text-to-show-on-talk-page}}

works. However the following would not work since the parser function spans multiple lines:

*Heading
{{#ifeq:1|1|
**foo{{!}}
bar
|
**baz{{!}}fred
}}

トラブルシューティング

変更点が表示に反映されない

MediaWiki aggressively caches content if possible, which often causes the navigation bar to persist after changes. 影響を受けるページ群でキャッシュをパージすると、問題が解決かもしれません。 すべてのキャッシュを大量に一括パージするには、ご利用のデータベースでLocalSettings.php ファイルの改変もしくはobjectcache 表の切り詰めが必要です (両方が必要な場合もあり)。

true に設定するには、$wgUseDatabaseMessages も必要です。 Also, if your links don't have a | in them, they will not show up because of this line of code in Skin.php: if ( strpos( $line, '|' ) !== false ) {

一般利用者もしくは特別な権限のない管理者には、上記の変更点が表示されるよう、前述の上記の高度な処理をすることができないかもしれません。あるいはページの再読み込み(パージ)をしても表示が変わらない場合にも、プレビュー画面で CSS の変更を確認できることがあります (特に個人用の CSS の変更。) たとえば サイドバーの幅や輪郭線とラベル文字の余白もしくはマージンを変更した場合。ただし変更を保存しても、画面表示への反映までに時差が発生することがあります。数時間後でも何も表示されない場合には、ウィキ全体もしくはウィキファームの管理者に相談する必要があるかもしれません。

リンクラベルが小文字になる

If your links are not being capitalized as intended, try adding spaces around the bar character; for example:

** http://www.example.com/download.php?file=44555 | ダウンロード

Sections 節が非表示もしくは想定外の文字列に変わった

もし特定の節が非表示もしくは想定外のコンテンツが表示される場合は、見出しの文字列がインターフェースのメッセージ名と重複していないか、Special:AllMessages を検索して調べます。もしそうだった場合は、ヘッダー名を変更するか、インターフェースのメッセージを新しく作り、それを使います。

たとえば見出しの文字列として 「Sidebar」を使いたい場合、 インターフェースのメッセージ「MediaWiki:Sidebar-header」として「Sidebar」のみ記入します。その後、見出しには * sidebar-header を使います。

** リンク先 | リンク テキスト の形式でリンクされていないと、節は非表示になります (たとえばリンク先の記入を忘れた場合。)

Special:Version の更新後、リンクが切れた

この現象は、たとえばサイト言語用のサイドバーの項目に新しい翻訳が付くたびに発生します。

毎回、新しいリダイレクトのページを作成すればよいのですが、よりよい対策としては、MediaWiki 翻訳の最新版を常に追跡するよりも、サイドバーの項目名を自作する方法があります。

関連項目

References

  1. (グループまたは利用者への権限付与についての情報は、Manual:利用者権限 を参照) 次に、自分のウィキを開き、URL/アドレスバーに書かれたウィキのページ名(例:メインページ)を MediaWiki:Sidebar に書き換えてから、ページを読み込みます。すると変更後のサイドバーが表示されるはずです。(URLが長い場合は //yourdomain/yourwiki/index.php?title=MediaWiki:Sidebar&action=edit の構文を使用する必要があります。) もしサイドバーの内容が既に変更してある場合は、「編集」か「ソースを編集」をクリックします。まだ変更したことがない場合は、「作成」か「ソースを作成」を押してページを作成しましょう。
  2. 場合によっては (「&」文字を含むリンクなど)、インターフェイスメッセージが必要になります。リンク先を個人設定で設定されたインターフェース言語に依存させることはできません。
  3. Kaare Mikkelsen (25.1.2012): Adding tooltips to sidebar items in MediaWiki (Wayback Machine 30.10.2022)