如何让MediaWiki页面自动关联非维基媒体Wikibase条目并提供访问链接?
实现非维基媒体Wiki与自建Wikibase的集成配置方案
完全可以实现你描述的集成效果,以下是具体的配置和实现步骤:
1. 基础依赖与核心配置
首先确保你的MediaWiki安装了WikibaseClient扩展,这是连接Wiki与自建Wikibase仓库(Repo)的核心组件:
- 在MediaWiki的
LocalSettings.php中启用扩展:wfLoadExtension( 'WikibaseClient' ); - 配置连接到你的自建Wikibase仓库,替换为实际地址和参数:
$wgWikibaseSettings = [ 'repoUrl' => 'https://你的自建Wikibase地址/', 'repoDatabase' => 'wikibase_repo', // 自建Wikibase的数据库名 'clientDatabase' => 'your_wiki_db', // 当前Wiki的数据库名 'siteGlobalID' => 'yourwiki', // 自定义站点标识,需与Wikibase仓库中配置一致 ];
2. 自动生成对应Wikibase条目
可以通过两种方式实现页面创建时自动生成关联的Wikibase条目:
- 钩子触发自动创建:利用MediaWiki的
PageSaveComplete钩子,编写自定义扩展或在LocalSettings.php中添加逻辑,当新页面保存时调用Wikibase仓库的API创建条目,并将页面标题设为条目的标签。 - 批量处理已有页面:编写脚本遍历Wiki所有页面,调用Wikibase API批量创建关联条目,适合已有内容的Wiki。
3. 侧边栏「工具」菜单添加Wikibase条目链接
通过配置和钩子实现动态链接:
- 在
LocalSettings.php中配置侧边栏工具项,配合WikibaseClient的钩子动态填充QID:
这段代码会在页面关联了Wikibase条目时,在「工具」菜单中显示可跳转的链接。$wgHooks['SkinTemplateToolboxEnd'][] = function( $skin, &$toolbox ) { $itemId = $skin->getOutput()->getProperty( 'wikibase_item_id' ); if ( $itemId ) { $toolbox['wikibase-item'] = [ 'text' => 'Wikibase条目', 'href' => $wgWikibaseSettings['repoUrl'] . 'wiki/Special:EntityPage/' . $itemId, 'id' => 't-wikibase-item' ]; } return true; };
4. 页面信息中显示Wikibase条目ID
启用WikibaseClient的内置配置即可:
$wgWikibaseClientSettings['showItemIdInPageInfo'] = true;
配置后,「页面信息」中会自动添加「Wikibase条目ID」字段,显示对应的QID或「无」。
5. 「其他项目」与「语言」菜单集成
- 「其他项目」链接:在你的自建Wikibase仓库中配置「站点链接(Site Links)」,添加所有需要关联的姊妹Wiki站点。配置完成后,WikibaseClient会自动在当前Wiki的侧边栏生成「其他项目」菜单,跳转至对应站点的关联页面。
- 「语言」菜单与编辑链接:
- 确保Wikibase条目添加了多语言标签,WikibaseClient会自动在「语言」菜单中展示对应语言的Wiki页面链接。
- 启用编辑链接功能:
配置后,「语言」菜单中会出现「编辑链接」选项,用于管理页面与多语言条目关联。$wgWikibaseClientSettings['enableEditLink'] = true;
内容的提问来源于stack exchange,提问作者nacnudus
相关产品推荐
相关产品推荐

