手册:Interwiki
跨wiki链接(英语:Interwiki links)是指向其他项目的页面的链接,使用前缀内部链接样式。
跨wiki链接可以链接到(例如)维基百科、维基教科书、维基新闻等的页面或你需要的不同语言的wiki项目。 (參見手册:Wiki农场 )
形如[[Wikipedia:Main Page]]
的链接将这样出现:Wikipedia:Main Page并将您重定向至维基百科的首页。
Interwiki链接到其他專案
資料表與 API 查詢
跨 wiki 链接依靠在 MediaWiki 資料库的 interwiki 表中。 您可以使用 API 查询,以 meta 項目為 siteinfo ,屬性為“interwikimap”,检索出跨 wiki 列表,换句话说,通过发出如下API请求
預設
預設情况下,有幾個维基媒体專案(以及其他项目)已經準備好了进行跨wiki链接,因此您可以在不编辑資料库的情况下使用它们。
以下是一些預設情况下可用的跨 wiki 前缀的示例(维基百科在 1.10 版本以後也可以用):
前缀 | 目标网址 | 用例 |
---|---|---|
commons | https://commons.wikimedia.org/wiki/ | [[commons:MediaWiki]]
|
mediazilla | http://bugzilla.wikimedia.org/ | [[mediazilla:1209]]
|
metawikimedia (在1.23版本之前: metawikipedia) | https://meta.wikimedia.org/wiki/ | [[metawikimedia:Main Page]]
|
interwiki預設的前缀的完整列表可在maintenance/interwiki.list中找到
請參看m:Help:Interwiki linking以了解從維基媒體專案連結或是連結到維基媒體專案的完整信息。
在跨 wiki 链接中添加新网站
- 跨 Wiki 链接在資料库的
interwiki
表中设定。
- These can be modified at Special:Interwiki. In MediaWiki 1.44 and later, this feature is built into MediaWiki core. Older versions can use the Interwiki extension.
進行测试
要测试配置:
- 前往您的网站,
- 创建一个带有以下内容的页面:
[[w:Wikipedia:Village pump|]]
這應該會顯示一個連結,此連結將鏈接到 en.Wikipedia.org 上的 'Village pump' 頁面(網址 https://en.wikipedia.org/wiki/Wikipedia:Village_pump)
欄位說明
维基管理员技巧: MediaWiki.org 的「手冊」名字空間中有幾個說明頁面。 要讓這些說明頁面鏈接在您的本地 wiki 上生效,請添加一個帶有 iw_prefix=manual 和 iw_url=http://www.mediawiki.org/wiki/Manual:iw_prefix=manual
的跨 wiki 鏈接
维基管理员技巧: 如果要讓新的跨 wiki 設定生效,你應該在 LocalSettings.php
中設定好 $wgTranscludeCacheExpiry 。 或者,您也可以刷新本地 wiki 上的 transcache 表。
跨 wiki 链接到其他语言
如果您安裝了 Manual:Wiki family ,您能夠將英文頁鏈接到德文頁(如果您也有德語的專案項目)。 您可以设置 MediaWiki ,讓侧边栏的工具選單下方,显示出这些链接。
在您的 MediaWiki 安装檔案系统中,有一个名为「languages」的子資料夹。
參看其中的Names.php
,其中包含了已知語言及其前綴的列表。
例如,如果您想添加您的德語項目,請在 Names.php
中找出 Deutsch 並記下前綴為 de 。
如果知道了正確前綴,請通過向資料表 interwiki
添加新行來編輯您的數據庫:
iw_prefix |
*iw_prefix :語言前綴(例如德語的 de ),列表在 Names.php 中
|
iw_url |
*iw_url :您的 wiki 專案的 URL(例如 http://de.example.org/index.php/<code><nowiki>http://de.example.org/index.php/$1 </nowiki>)
|
iw_local |
same as above at #Adding a new website for interwiki linking |
iw_trans |
same as above at Adding a new website for interwiki linking |
现在,您可以将頁链接到其他语言但相同頁名的頁了。
加上 [[de:Hauptseite]]
在您的英語 Main_Page 上,將在工具箱下方創建一個鏈接「Deutsch」,該鏈接指向德語 wiki (Hauptseite) 的 Main_Page。
請注意,此鏈接「只」顯示在側邊欄的部分,而不是在文章內部。
如果要在頁內創建鏈接,則必須在前綴前添加半形冒號「:」 [[:de:Hauptseite]]
或將 $wgInterwikiMagic 設置為 false 。
從 wiki 匯出 interwiki 資料表
以下 JavaScript 代码执行 API 查询,以检索现有 Wiki 的跨维基地图,然后显示 SQL INSERT 语句以在新 wiki 上補充跨维基資料表。例如,您可以通过通过浏览器的开发人员工具注入代码,或将其放置在Special:MyPage/skinname.js 中进行预览并运行它。
function ExtractInterwikiMapTable() {
$.getJSON(mw.config.get('wgScriptPath') + '/api.php?action=query&meta=siteinfo&siprop=interwikimap&format=json', function(data) {
var iw_prefix, iw_url, iw_local, iw_api, re_escape = /(')/g, result = '';
for (var i = 0, iwm = data.query.interwikimap; i < iwm.length; i++) {
iw_prefix = "'" + iwm[i].prefix.replace(re_escape, '\\$1') + "'";
iw_url = "'" + iwm[i].url.replace(re_escape, '\\$1') + "'";
iw_local = (typeof iwm[i].local == 'string') ? '1' : '0';
iw_api = "'" + (iwm[i].iw_api || '').replace(re_escape, '\\$1') + "'";
result += 'INSERT INTO interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api) VALUES ('+iw_prefix+', '+iw_url+', '+iw_local+', 0, '+iw_api+');\n'
}
$('<textarea style="width:800px;height:400px;"/>').val(result).appendTo(document.body);
});
}
$(ExtractInterwikiMapTable);
Interwiki links versus external links
[[imdbtitle:0389790|Bee Movie]]
→Bee Movie
[http://www.imdb.com/title/tt0389790 Bee Movie]
→Bee Movie
Linksearch works for the latter only.
Wikitext using interwiki links isn't always easily transferable between different wikis because they don't consistently use the same interwiki prefixes, or they might not have them at all. Additionally, interwiki links can sometimes mislead users since they don't know when they're being sent to another site.
You can choose between "extiw" and "external text" CSS classes for links, depending on whether you want them to look the same or different. Using just the interwiki link is easier to type, but copying the URL from the webpage is handy. Templates like w:Template:imdb title can be set up to use either an interwiki link with a parameter like "tt0389790" or "0389790", or an external link with a parameter like one of those or the full URL, making it easier to include IMDb references.
Interwiki links to the local wiki
Interwiki links can be configured to point to the same wiki they are being rendered from. For example, mw:Manual:Interwiki/zh points to this page. These links are treated identically to internal links and do show up on Special:WhatLinksHere, appear bold if they are a selflink like the above, appear red if the page doesn't exist, etc.