【问题标题】:mediawiki - make link evaluation case insensitivemediawiki - 使链接评估不区分大小写
【发布时间】:2017-10-10 06:16:48
【问题描述】:

我正在运行一个小型 wiki,我们的用户想要一个他们觉得不那么混乱的界面。抱怨是,如果链接是“大新闻”或“大新闻”或其他一些大写/小写排列,标题为“大新闻”的页面显示为红色链接,他们希望这些显示为正常颜色如果页面存在,则链接。当用户点击链接时,相应的页面会正确显示,但最好事先看到该页面已经存在。

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

有什么想法我可以如何去做吗?

【问题讨论】:

    标签: mediawiki case-insensitive


    【解决方案1】:

    您可以查看$wgCapitalLinks 的使用情况。很有可能,全小写标题在需要根据该设置分支代码的相同位置需要特殊大小写。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        感谢@Sam Wilson 的提示。这看起来是一个有趣的功能,但除非我猜错了,否则我必须查询数据库中页面中的每个链接——对吗?如果是这样,我认为性能会受到影响。无论如何,那个钩子似乎对我不起作用[主要是因为我对 mediawiki 的不熟悉让我摸不着头脑......]。我想出的解决方案如下:

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

        2- 将文件includes/parser/LinkHolderArray.php 修改如下[wikimedia 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)都依赖于 Title 中的标题规范化,所以也许你可以只改变它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-19
        • 2012-12-01
        • 2013-03-06
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多