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

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Interface/Sidebar and the translation is 55% complete.

Other languages:
Deutsch • ‎English • ‎Taqbaylit • ‎español • ‎français • ‎italiano • ‎português • ‎русский • ‎سرائیکی • ‎日本語 • ‎한국어
サイドバーの例

MediaWiki:Sidebarはサイドバー、つまりウィキ上の最も重要な位置へのリンクを置き、サイト管理者が永続的なリンクをまとめて追加する場所をどこに提供するか定義します。ほとんどのウィキの例では、コミュニティの議論のページや便利な複数のツールにリンクしています。

外装がMonobookとVectorの場合、サイドバーは検索バーやツールボックスとともに画面左上から始まり(書字方向が右から左の言語では右上)、外装が変わると場所も変わることがあります。サイドバーはモバイル版サイトのユーザーには表示されません

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

ウィキでMediaWiki:Sidebarをカスタマイズするには、まず最初に「編集インタフェース」権限のあるユーザー(管理者であれば既定で権限がある)としてログインします。(グループまたは個人ユーザーへの権限付与はManual:利用者権限を参照。)

次に、自分のウィキのページへのリンクを開き、URL/アドレスバーに書かれたウィキページ名(例:Main_Page)をMediaWiki:Sidebarに書き換えてから、ページを読み込みます - すると変更後のサイドバーが表示されるはずです。(URLが長文の場合はシンタクス //yourdomain/yourwiki/index.php?title=MediaWiki:Sidebar&action=edit を代入します。)

もしサイドバーの内容が既に変更してある場合は、 EditEdit source(編集/ソースを編集)リンクをクリックします。あるいは CreateCreate source(作成/ソースを作成)を押してページを最初から作成します。

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

サイドバーに用いるコードのサンプル:

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

上記の記述のサンプルは下記のサイドバーを表示します。

サイドバーの例

見出し

サイドバーを区切り、個別の見出しを作ることができます。区切りごとの見出しは1番目のレベルの要素から拾います(上記のサンプルでは「navigation」と「new heading」)。

もし見出しの語句がインタフェースのメッセージ(MediaWikiの名前空間にある同名のページ)と一致する場合は、そのページ名がラベルとなります。その他の場合、区切りの見出しは指定どおりです。

リンク

2番目のレベルの要素はリンクで(上記のサンプルの「mainpage|mainpage」)、以下の書式を使います。

** target|link text
ターゲット
リンクのターゲット(リンク先)はインタフェースメッセージの名前(MediaWiki 名前空間のページ名)あるいはウィキページの名前もしくは外部のリンクが入ります。どの場合にもリンクは内部リンク、ウィキ間リンク、外部リンクのどれも該当し、特定の場合(記号「&」を含むリンク)は印手フェースメッセージの設定が必要です。リンクのターゲットは個人設定で指定した利用者の言語に依存しません。
アルゴリズムは以下のとおり:
  1. ターゲットテキストを取得。
  2. その名前の既存または既定のインタフェースメッセージがある場合、そのメッセージの内容を代用。
  3. 出力が有効なURLである場合(http://または他のURLプロトコルで始まる)は、リンクはそのURLを指す。
  4. 有効なURLでない場合は、それをwikilinkのリンクターゲットとして扱う(そのページ名またはインターウィキへリンク)。
  5. もし ' - ' にリンクする場合、入力内容を全てサイドバーから削除する(リンクを保持しているメッセージの変更を利用して実行できるため、特定のエントリをすべての言語版から削除したいときに使える方法)。
例:
  • "** portal-url|portal" MediaWiki:Portal-urlの文字列を使用 (出力は"Project:Community portal").
  • "** Special:RecentChanges|Recent changes" リンク先はSpecial:最近の更新。一致するインタフェースメッセージがないため。
  • "** w:Foo|Some interwiki page" 同じ理由でw:Fooにリンク。
  • "** http://www.mediawiki.org|MediaWiki home" 同じ理由でhttp://www.mediawiki.orgにリンク。
リンクの文字列
インタフェースメッセージの名称と同じ(MediaWiki 名前空間のページ)または平文(プレーンテキスト)でよい。
  • リンクの文字列が既存もしくは既定の印手フェースメッセージと一致すると、メッセージの内容を使用。MediaWiki は自動で地域化バージョンを照会する。例えば使用言語がfr(フランス語)でリンクの文字列がインタフェースメッセージ「forum」だったと仮定すると、「forum/fr」を照会してから「forum」を使用する。
  • それ以外の場合には、リンクの文字列をそのまま使用。
  • 通常のウィキリンクと異なり、リンクの文字列は必須。リンクの文字列がないとその項目は無視されることに注意。
例:
  • ** Homepage|mainpage uses MediaWiki:Mainpage (which contains "MediaWiki").
  • ** Special:Recentchanges|Recent changes uses "Recent changes", since there is no interface message of that name.

要素の順序

サイドバーの要素には既定の順序があり、「ナビゲーション」、「検索」、「ツールボックス」、「言語」の順です。順序の変更は(MediaWiki 1.13+MediaWiki:Sidebarに見出しシンタックスを用いて特殊なキーワード(SEARCH、TOOLBOX、 LANGUAGES)を追加します。例として、次のコードで検索ボックスをサイドバーのいちばん上に移動します。

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

Tooltips and Accesskey

If you add an item to the sidebar, it will have no tooltip associated. But you can create such a tooltip by simply :[1]

  • create a wiki page named "MediaWiki:Tooltip-n-<id of the item>"
  • and put the tooltip in that page.

Accesskey is also be created:

  • create a wiki page named "MediaWiki:Accesskey-n-<id of the item>"
  • and put the accesskey in that page.

Example:

翻訳

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

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

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

注意事項としてMediaWikiが既定で使用するサイドバーページは、その 言語つまりあなたのウィキの既定の使用言語のものです。例えば仮にフランス語が既定の使用言語だとすると、MediaWiki:Mainpage/frを編集すると、個人で言語設定を変更していなくても、あるいは匿名の利用者を含むすべての利用者に対し、フランス語版のサイドバーが表示されます。

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

高度なカスタマイズ

サイドバーを思い通りにカスタマイズするにはJavaScriptもしくはCascading Style Sheetsを実行、あるいは直接、PHPファイルを編集します。これらの方法に取りかかる前に以下の注意点に目を通してください。

  • 壊れやすい JavaScript の扱い: JavaScript を無効にした利用者には役立たないほか、ブラウザや外装によりうまく作動しない頻度が高まります。
  • PHP ファイルを編集すると予想外のエラーを招きやすく、新規ファイルを手動で書き換えない限り、変更箇所は次回の更新で失われます。

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

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

LocalSettings.php

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

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

The toolbox, which appears under the search bar, is a dynamic element and cannot be easily customized without the use of skinning extensions (otherwise it requires programming in PHP.) If you still want to do so, you can copy skins/MonoBook.php, creating a new skin. You can then make a custom skin to generate these links in your preferred fashion.

以下に、別のJavaScriptソリューションを示します。

For this solution to work on the entire MediaWiki site, this script has to be copied to MediaWiki:Common.js (MediaWiki:Common.js is available for MediaWiki 1.9 +).

For this solution to work only for a specific user, add this script to Special:MyPage/common.js (or the JS page for the user's current skin, such as Special:MyPage/monobook.js).

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

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', 'http://en.wikipedia.org/wiki/Special:CategoryTree' );
	// removes [[Special:Upload|Special:Upload]] from toolbox
	ModifySidebar( 'remove', 'toolbox', 'Upload file', 'http://en.wikipedia.org/wiki/Special:Upload' );
}

jQuery( CustomizeModificationsOfSidebar );
Usage
function CustomizeModificationsOfSidebar() has to be customized for adding or removing links in specific sections:
ModifySidebar( "action", "section", "name", "link" );
parameter value
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 );
	}
}

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

Sidebar width in Monobook skin (CSS)

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; }
div#column-content { margin-left: -14em; }
div#content { margin-left: 14em; }

Sidebar width in Vector skin (CSS)

You can change the width of your sidebar by adding the following CSS rules to your MediaWiki:Vector.css. The standard width in vector skin is 10em. The following example changes the width to 12em:

/* increase Vector sidebar width */
div#mw-panel { width: 12em; }
div#footer, #mw-head-base, div#content { margin-left: 12em; }
#left-navigation { margin-left: 12em; }

Change sidebar content when logged in (PHP)

You can modify the sidebar using a hook. Create a small extension of your own or put the code directly into your LocalSettings.php file.

Some example code adding a 'navigation' sidebar block with a login link for logged out users.

警告 警告: The sidebar's array is cached after this hook is run, if you use sidebar caching and do user specific things in this hook like something that only shows up when logged in or out it may end up cached and not look correctly for some users.
<?php
$wgHooks['SkinBuildSidebar'][] = 'lfHideSidebar';
function lfHideSidebar( $skin, &$bar ) {
	global $wgUser;
	// Hide sidebar for anonymous users
	if ( !$wgUser->isLoggedIn() ) {
		$bar = array(
			'navigation' => array(
				array(
					'text'   => wfMessage( 'login' ) -> text(),
					'href'   => SpecialPage::getTitleFor( 'Login' )->getLocalURL(),
					'id'     => 'n-login',
					'active' => ''
				)
			)
		);
	}
	return true;
}

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
}}
警告 警告: There is a bug on 1.18 where if a line on MediaWiki:Sidebar contains pipe characters (| ) before expanding parser functions, but not after expanding parser functions, an exception is thrown on all pages (bug 33321). If such a construction is accidentally introduced to the sidebar, it forces the user to revert MediaWiki:Sidebar using the API or edit.php. This is fixed in later versions of MediaWiki

Troubleshooting

Changes not showing up

MediaWiki aggressively caches content if possible, which often causes the navigation bar to persist after changes. Purging the cache of affected pages should correct the situation. To perform a mass-purge of all caches at once, touch the LocalSettings.php file or truncate the objectcache table in your database (you may have to do both).

You also need to have $wgUseDatabaseMessages set to true.

If you are a user or average wiki admin, you will not be able to do the advanced stuff above to get changes to show up. If purging does not work either, you can sometimes still see CSS changes right away in preview (especially when changing your personal CSS). For example; changing the sidebar width, padding, or margins. Changes can take awhile to show up after saving though. If nothing shows up after awhile you may need to contact the overall wiki, or wiki farm, sysop.

Lowercase link labels

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

Sections disappear or show unexpected content

If a section does not display or displays unexpected content, check that the header text isn't the name of an interface message by searching Special:AllMessages. If it is, use a different header text, or create a new interface message and use it.

For example, if you want to use "Sidebar" as header text, create the interface message "MediaWiki:Sidebar-header" containing only "Sidebar". Then, use * sidebar-header as header.

Sections are not displayed if there are no links of the form ** target | link text (e.g. when the target was forgotten).

Broken links after updating Special:Version

This will happen e.g., each time there are newer translations for your site language's sidebar items. One could add new redirect pages each time, but a better solution would be to use one's own sidebar item names instead of trying to keep track of the current MediaWiki translations.

Ancient versions of MediaWiki

If you have a pre-release version of 1.5 Beta, or earlier, it is still possible in some cases to edit the sidebar:

関連項目

References