Mediawiki内联模板创建

时间:2011-08-05 12:43:43

标签: mediawiki

是否可以创建一个wiki页面,在其中将单个文本标记为占位符,可以将其放在Wiki上的任何其他位置?

假设我有一个包含简单列表的Wiki页面。列表中的第一项必须始终显示在主页面中,但编辑用户不应为此编辑两页,只需编辑一页。

列表页面:

Pineapples

{{SaveThisText|TodaysMeal|Dumplings}}

Beans

Oranges

主页:

Today, we'll have {{GetSavedText|TodaysMeal}}

...主页将导致“今天,我们将有饺子”

我知道可以使用模板执行此操作,但我想避免使用模板,我想编辑模板,就像它是页面的一部分一样。

2 个答案:

答案 0 :(得分:0)

如果你为它编写MediaWiki扩展名,这绝对是可能的。这意味着您可以在GetSavedTextSaveThisText上放置一个钩子,以便可以自定义其行为。

如果您有一个小型wiki,则可以在GetSavedText搜索{{SaveThisText|TodaysMeal|时浏览每个页面。让每一页都很简单:

// get existing pages
$db = wfGetDB ( DB_MASTER );
$results = $db->resultObject ( $db->query(
    "select distinct page_title from {$wgDBprefix}page " )
);
$existing_pages = array();
while ( $r = $results->next() )
    $title = Title::newFromText( $r->page_title );
    $article = new Article ( $title );
    $content = $article->getContent();

更有效的方法是在页面更新上放置一个钩子。如果存在SaveThisText,则可以更新数据库表中的一行。

答案 1 :(得分:0)

您可以在不编写任何自定义PHP的情况下执行此操作,请参阅:

http://www.mediawiki.org/wiki/Extension:Variables