Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mediawiki内联模板创建_Mediawiki - Fatal编程技术网

Mediawiki内联模板创建

Mediawiki内联模板创建,mediawiki,Mediawiki,是否可以创建一个wiki页面,将一段文本标记为可放置在wiki上任何其他位置的占位符 假设我有一个包含简单列表的wiki页面。列表中的第一项必须始终显示在主页中,但编辑用户不应为此编辑两页,而应仅编辑一页 列表页: Pineapples {{SaveThisText|TodaysMeal|Dumplings}} Beans Oranges 主页: Today, we'll have {{GetSavedText|TodaysMeal}} …主页将显示“今天我们吃饺子” 我知道使用模板可

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

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

列表页:

Pineapples

{{SaveThisText|TodaysMeal|Dumplings}}

Beans

Oranges
主页:

Today, we'll have {{GetSavedText|TodaysMeal}}
…主页将显示“今天我们吃饺子”


我知道使用模板可以做到这一点,但我想避免使用模板,我想编辑模板,就像它是页面的一部分。

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

如果你有一个小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
,则可以更新数据库表中的一行。

无需编写任何自定义PHP即可完成此操作,请参阅:


看起来正是我需要的,我试试看:)