【问题标题】:Mediawiki inline template creationMediawiki 内联模板创建
【发布时间】:2011-08-05 12:43:42
【问题描述】:

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

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

列表页:

Pineapples

{{SaveThisText|TodaysMeal|Dumplings}}

Beans

Oranges

主页:

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

...主页将显示“今天,我们要吃饺子”

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

【问题讨论】:

    标签: mediawiki


    【解决方案1】:

    您无需编写任何自定义 PHP 即可做到这一点,请参阅:

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

    【讨论】:

    • 看起来正是我需要的,我会试试看:)
    【解决方案2】:

    如果您为其编写 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,您可以更新数据库表中的一行。

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 1970-01-01
      • 2011-06-17
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多