在哪里可以找到将内部MediaWiki链接转换为文章URL的代码?

时间:2015-02-15 06:22:23

标签: hyperlink mediawiki wikipedia article

我需要完全复制维基百科关于将页面正文中的[[links]]转换为打开他们所引用文章的网址的行为。

描述了链接语法及其行为(转换)here。虽然那篇文章只提到了一些非常基本的修改,但我认为这不是整个故事。

我尝试搜索MediaWiki API参考,但还没找到我正在寻找的特定代码段。是否有人熟悉这些代码,以了解我可能正在谈论的PHP功能(可能与编辑/提交相关)?

1 个答案:

答案 0 :(得分:4)

这有两个部分:

  1. 解析链接语法。
  2. 从页面标题生成URL。
  3. 解析链接由Parser类完成,该类执行所有wiki文本处理。链接可能更复杂,只有[[Foo]],例如[[Foo#bar | something]],其中Foo是目标页面,#bar是一个部分,“something”是结果链接的“表面文本”。要生成URL,您需要目标页面和部分。要生成链接(在HTML中),您还需要表面文本(如果没有给出,它与目标页面+部分相同)。目前没有简单的方法来解析链接,没有完整的wiki文本处理。

    如果您已经拥有目标页面标题(可能是部分ID),您可以选择获取其中的URL:旧学校(单片)方式或新样式(基于服务)方式。

    新的风格方法是:

    • 使用MediaWikiTitleCodec :: parseTitle从您拥有的字符串生成TitleValue对象。
    • 使用MediaWikiPageLinkRenderer :: getPageURL获取给定TitleValue对象的页面URL。

    老派的方法是:

    • 使用Title :: newFromText()从您拥有的字符串中创建一个Title对象。
    • 使用Title :: getFullURL()获取页面URL。

    旧样式更容易,因为它不需要您创建服务对象。它依赖于全局状态,并且所有依赖项都是硬编码的。新风格使用简单的依赖注入,允许单独交换所有部分并独立测试 - 但它需要更多的代码。