2011-08-05 62 views
1

是否可以創建一個wiki頁面,在其中將單個文本標記爲可放置在wiki上其他任何位置的佔位符?Mediawiki內嵌模板創建

比方說,我有一個包含簡單列表的維基頁面。列表中的第一項必須始終顯示在主頁面中,但編輯用戶不應編輯兩頁,只有一頁。

列表頁:

Pineapples 

{{SaveThisText|TodaysMeal|Dumplings}} 

Beans 

Oranges 

主頁:

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

...主頁將導致以 「今天,我們將有餃子」

我知道它可以使用模板來做到這一點,但我想避免它們,我想編輯模板,就像它是頁面的一部分。

回答

0

如果你爲它編寫MediaWiki擴展,這絕對是可能的。這意味着您可以在GetSavedTextSaveThisText上放置鉤子,以便可以自定義其行爲。

如果您有一個小維基,您可以在發生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,則可以更新數據庫表中的一行。