2010-09-11 125 views
9

维基百科如何为其文章实现“编辑此部分”功能,其中用户只能编辑文章的一部分,而不是整篇文章?我已经尝试过自己浏览mediawiki的代码,但是它有点让我理解。这里是我的猜测(但只是一个猜测):维基百科上的“编辑部分”功能如何工作?

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

什么让我难过的是,Mediawiki如何解析出各个部分?据我了解,MW不会单独存储这些部分 - 它将每个版本页面的每个完整版本存储为一大块文本(除了大量的元数据)。 MW是否仅仅查找H1,H2,H3,...标签,并在渲染页面时使用它们将文本分割成区域?当用户保存修改的部分时,是否查看当前版本,将文本重新解析为多个部分,然后将新版本“注入”到当前版本的副本中,然后将其保存为NEW版本?

我假设我对MediaWiki的理解非常简单,但我只是想弄清楚一个概念。

谢谢!

+0

优秀的问题。 – 2010-09-11 04:13:30

回答

3

这可能是一条线索 - 从http://en.wikipedia.org/wiki/Help:Section。该部分使用特定的标记为这样:

==Section== 

===Subsection=== 

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

通过点击标题为“[edit]”的特殊编辑链​​接或通过右键点击部分标题,可以单独编辑区域,具体取决于设置的偏好。这称为“节编辑功能”(首选项 - >编辑 - >“通过[编辑]链接启用节编辑”)。部分编辑功能将带你到编辑页面由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安装的每个页面在这里一个条目的标题标识它

修订表保存元数据为每个编辑DONE到wiki中的页面。每个页面的编辑都会创建一个修订行,它保存诸如进行编辑的用户,进行编辑的时间以及对文本表格中新维基文本的引用等信息。

Text Table - holds个别页面修订的wiki文本。

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

希望这会有所帮助。