【问题标题】:MediaWiki - Searching based on PageIDMediaWiki - 基于 PageID 的搜索
【发布时间】:2018-01-12 13:19:23
【问题描述】:

我在工作中使用 MediaWiki 并创建一个知识库。我们已经完成了所有设置,但一个要求是在每个页面上都有一个唯一的标识符,然后可以在官方文档中引用它。我通过使用神奇的词 {{PAGEID}} 来做到这一点,所以它被添加到每个页面的右下角。

另一个要求是能够根据此唯一编号找到页面,但使用内置搜索功能时无法找到该页面。

例如,主页的右下角有文字“Page ID:1”。搜索“页面 ID:1”时,什么都找不到,Wiki 只给了我创建页面的选项。

有谁知道如何搜索或让搜索包含页面 ID?

任何帮助将不胜感激。

【问题讨论】:

  • 虽然这并不能真正回答您的问题,但请注意,您可以使用带有如下 URL 的 ID 直接链接到页面:mediawiki.org/w/index.php?curid=9016
  • 我知道这种方法,但我遵循的条款非常严格,不幸的是,我不接受它作为解决方案。高层管理人员想要一种使用唯一编号进行搜索的方法,以便在搜索结果中显示目标页面。我希望这是可能的。
  • 搜索Page ID:1 的问题在于它正在搜索wikitext。如果您搜索Page ID:{{PAGEID}},它将起作用。 :-(
  • 我尝试像你所说的 Sam Wilson 那样进行搜索,但没有成功。

标签: mediawiki mediawiki-api


【解决方案1】:
global $wgHooks;
$wgHooks['SearchGetNearMatchBefore'][] = function ( array $allSearchTerms, &$titleResult ) {
    $searchTerm = $allSearchTerms[0];
    if ( preg_match( '/^id:\d+$/', $searchTerm ) ) {
        $pageId = (int)substr( $searchTerm, 3 );
        $titleResult = Title::newFromID( $pageId );
        return false;
    }
};

当您在搜索框中输入id:123 时,将跳转到ID 为123 的页面。不过,使用搜索似乎是一种愚蠢的方式。

【讨论】:

  • 这最初不起作用,但它给了我一个很好的起点,谢谢。它确实给出了错误Parse error: syntax error, unexpected '$wgFileExtensions' (T_VARIABLE) in D:\www\wiki\LocalSettings.php,所以我需要看看它是否可以修复。
  • 听起来你的设置中有一个与这个 sn-p 无关的错误(它不使用那个变量)。
  • 结尾不应该有分号吗?这可能是@Groveham 报告的错误的原因,如果他们在 LocalSettings.php 的下一行设置 $wgFileExtensions
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多