mediawiki - 使链接评估不区分大小写

时间:2017-10-06 19:13:50

标签: mediawiki case-insensitive

我正在运行一个小维基,我们的用户希望他们发现的界面不那么令人困惑。投诉是,如果链接是“大新闻”或“重大新闻”或其他大/小写排列,那么标题为“Big_news”的页面会显示为红色链接,并且他们希望这些页面显示为正常颜色如果页面存在则链接。当用户点击链接时,会正确显示相应的页面,但最好先看到页面已经存在。

我已尝试实施诸如hereherehere之类的解决方案,但它们不起作用 - 链接仍显示为页面上的红色链接。 [事实上,我认为有些文章已经过时了; mediawiki 1.27似乎没有提到的表格。]

任何想法我怎么可能这样做?

3 个答案:

答案 0 :(得分:1)

您可以查看$wgCapitalLinks的使用方式。机会是,全小写标题需要在代码需要根据该设置进行分支的相同位置使用特殊外壳。

答案 1 :(得分:0)

您可以挂钩HtmlPageLinkRendererBegin并使用链接目标运行数据库查询以查找页面名称的任何不区分大小写的匹配项(在页面标题上,并且它必须仅针对内部链接执行此操作),然后在匹配时替换目标。

答案 2 :(得分:0)

感谢小费,@ Sam Wilson。这看起来像一个有趣的功能,但除非我想念我的猜测,否则我必须在数据库中查询页面中的每个链接 - 对吗?如果是这样,我认为表现会受到影响。无论如何,这个钩子似乎对我没用[主要是因为我对mediawiki的不熟悉让我挠头......]。我提出的解决方案如下:

1-将变量$wgLinksIgnoreCase添加到您的LocalSettings.php文件中。如果您希望链接显示不区分大小写,请将其设置为true

2-修改文件includes/parser/LinkHolderArray.php,如下所示[对于维基媒体版本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)];

正如我所说,我对这个软件并不是很熟悉,所以如果 熟悉它的人找到了更优雅的解决方案,请随时加入。