mediawiki-使链接计算不区分大小写
我正在运行一个小的wiki,我们的用户想要一个他们觉得不那么混乱的界面。投诉是,如果链接是“大新闻”或“大新闻”或其他大写/小写排列,则标题为“大新闻”的页面显示为红色链接,如果页面存在,他们希望这些链接显示为正常颜色的链接。当用户单击链接时,适当的页面会正确显示,但最好先看到该页面已经存在 我已经尝试过实现一些解决方案,比如上面介绍的解决方案,但是它们不起作用——链接仍然会在页面上显示为红色链接。[事实上,我认为有些文章已经过时;mediawiki 1.27似乎没有其中提到的表格。]mediawiki-使链接计算不区分大小写,mediawiki,case-insensitive,Mediawiki,Case Insensitive,我正在运行一个小的wiki,我们的用户想要一个他们觉得不那么混乱的界面。投诉是,如果链接是“大新闻”或“大新闻”或其他大写/小写排列,则标题为“大新闻”的页面显示为红色链接,如果页面存在,他们希望这些链接显示为正常颜色的链接。当用户单击链接时,适当的页面会正确显示,但最好先看到该页面已经存在 我已经尝试过实现一些解决方案,比如上面介绍的解决方案,但是它们不起作用——链接仍然会在页面上显示为红色链接。[事实上,我认为有些文章已经过时;mediawiki 1.27似乎没有其中提到的表格。] 你知道我
你知道我该怎么做吗?你可以连接并使用链接目标来运行数据库查询,以查找页面标题中页面名称的任何不区分大小写的匹配项,它只需对内部链接执行此操作,然后在有匹配项的情况下替换目标。谢谢你的提示,@Sam Wilson。这看起来是一个有趣的函数,但除非我猜错了,否则我必须查询数据库中页面中的每个链接-对吗?如果是这样的话,我认为性能会受到影响。无论如何,这个钩子似乎对我不起作用[主要是因为我对mediawiki的不熟悉让我挠头…]。我提出的解决方案如下: 1-将变量$wgLinksIgnoreCase添加到LocalSettings.php文件中。如果希望链接显示以不区分大小写的方式映射,请将此设置为true 2-修改文件includes/parser/LinkHolderArray.php如下[diff accurate for wikimedia version 1.29]-
283a284
> global $wgLinksIgnoreCase;
370a373,376
> if (!empty($wgLinksIgnoreCase)) {
> $mapper = array_combine(array_keys($colours), array_keys($colours));
> $mapper = array_change_key_case($mapper);
> }
373a380,381
> if (!empty($wgLinksIgnoreCase) && isset($mapper[strtolower($pdbk)]))
> $pdbk = $mapper[strtolower($pdbk)];
正如我所说,我对这个软件不是很熟悉,所以如果熟悉它的人找到了一个更优雅的解决方案,请随意插话。你可以看看它是如何使用的。很可能,所有小写标题都需要特殊的大小写,在相同的位置,代码需要根据该设置进行分支。LinkCache用于避免重复的数据库查找;LinkBatch用于批处理数据库查找。但是,我希望除了API之外,几乎所有的东西都依赖于标题中的标题规范化,所以也许你只需要修改一下就可以了。