【问题标题】:How does the "edit section" feature on Wikipedia work?维基百科上的“编辑部分”功能是如何工作的?
【发布时间】:2011-04-11 00:13:12
【问题描述】:

维基百科如何为其文章实现“编辑此部分”功能,其中用户只能编辑文章的一部分,而不是整篇文章?我试过自己爬过mediawiki的代码,但我理解起来有点密集。这是我的猜测(但只是猜测):

用户点击文章中的[编辑]。这链接到常规编辑页面,但在 URL 中通过 GET 传递了一个附加参数,指定要编辑的部分。如果没有这个额外的参数,Mediawiki 通常会简单地向用户呈现一个编辑整个页面的表单。但是指定要编辑的部分会导致 Mediawiki 仅提取该部分并将其呈现以供编辑。

让我感到困惑的是 Mediawiki 如何解析各个部分?据我了解,MW 不会单独存储这些部分 - 它会将每个版本的页面的每个完整版本存储为一大块文本(除了大量元数据)。 MW 是否只是查找 H1、H2、H3、... 标签,并在呈现页面时使用这些标签将文本拆分为区域?当用户保存修改后的部分时,它是否会查看当前版本,将文本重新解析为部分,然后将新版本“注入”到当前版本的副本中,然后将其保存为新版本?

我假设我对 MediaWiki 的理解被大大简化了,但我只是想大致了解一下。

谢谢!

【问题讨论】:

    标签: php parsing content-management-system mediawiki


    【解决方案1】:

    这可能是一个线索 - 来自 http://en.wikipedia.org/wiki/Help:Section。这些部分使用特定的标记,例如:

    ==Section==
    
    ===Subsection===
    
    ====Sub-subsection====
    
    • 在一个页面上多次使用同一个标题会导致问题。
    • 当编辑具有重复名称的部分时,编辑历史记录和摘要对于编辑的部分将不明确。
    • 在部分编辑后保存页面时,编辑器的浏览器可能会导航到错误的部分。

    可以通过单击标题标记为“[编辑]”的特殊编辑链​​接或右键单击部分标题来单独编辑部分,具体取决于设置的首选项。这称为“部分编辑功能”(首选项 -> 编辑 -> “通过 [编辑] 链接启用部分编辑”)。部分编辑功能将通过 URL 将您带到编辑页面,例如

    http://en.wikipedia.org/w/index.php?title=Help:Section&action=edit&section=2

    注意这里使用的是章节编号,而不是章节标题;小节有一个数字,例如第 2.1 节可能编号为 3,第 3 节则编号为 4,等等。您也可以直接在浏览器的地址栏中输入此类 URL。

    所以看起来解析器在 TOC 中有一个节数,然后使用 = 标记将特定文本放入编辑器。

    以下是一些使用的表格:

    页表 - (http://www.mediawiki.org/wiki/Manual:Page_table) - MediaWiki 安装中的每个页面在此处都有一个条目,通过标题对其进行标识

    修订表包含对 wiki 内页面进行的每次编辑的元数据。页面的每次编辑都会创建一个修订行,其中包含进行编辑的用户、进行编辑的时间以及对文本表中新 wikitext 的引用等信息

    文本表 - 保存单个页面修订的 wikitext。

    页面内容存储为 BLOB。所以它必须以二进制解析。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多