1

我向我的 mediawiki 添加了一个新标签 ( <news />) 以列出最后修改的页面。
不幸的是,除非我修改标签所在的页面,否则列表不会更新。
我正在寻找一种方法来做到这一点,我想到了 AJAX。但是我没有设法让 AJAX 刷新我的列表。
有谁知道在我的 Mediawiki 上添加自动刷新功能的简单方法?
这是我的扩展代码:

$wgHooks['ParserFirstCallInit'][] = 'replaceTags';

function replaceTags( Parser $parser ) {
    $parser->setHook( 'news', 'newsRender' );
    return true;
}

function newsRender( $input, array $args, Parser $parser, PPFrame $frame ) {
    // Titre =News=
    $output = $parser->parse( "=News=", $parser->mTitle, $parser->mOptions, false, false )->getText();

    $nb = 5;

    $querySQL = "SELECT page_namespace, page_title, page_id, page_latest, rev_timestamp
                FROM page, revision
                WHERE page.page_latest = revision.rev_id 
                AND page_namespace = 0
                ORDER BY rev_timestamp
                DESC LIMIT 0,$nb";

    $dbr = wfGetDB( DB_SLAVE );
    $res = $dbr->query( $querySQL );

    $count = $dbr->numRows( $res );
    if( $count > 0 ) {  
        $output .= "<ul>";
        while( $row = $dbr->fetchObject( $res ) )
        {
            $pageTitle = $row->page_title;
            $nicerPageTitle = str_replace("_", " ", $pageTitle);
            $pageNamespace = $row->page_namespace;
            $title = Title::makeTitleSafe( $pageNamespace, $pageTitle );
            $url = $title->getFullURL();

            $date = $row->rev_timestamp;
            $date = wfTimestamp( TS_RFC2822, $date );

            $output .= "<li><a href=\"$url\">$nicerPageTitle</a> $date</li>";
        }
        $output .= "</ul>";
    } else {
        $output .= "A l'ouest rien de nouveau !!!";
    }

    return $output;
}
4

2 回答 2

3

感谢nischayn22,我深入探讨了缓存问题。
我发现可以停用它:

$parser->disableCache();

我试过了,它有效!

http://www.mediawiki.org/wiki/Extensions_FAQ#How_do_I_disable_caching_for_pages_using_my_extension.3F

于 2012-05-29T16:11:40.227 回答
2

这可能是因为 MediaWiki 对页面使用缓存。你可以做的是为所需的功能制作一个 SpecialPage。AFAIK 特殊页面未缓存(在 irc #mediawiki 上确认)。此外,如果您搜索 Mediawiki.org 上存在的扩展,您可能已经发现有人完成了类似的实现。(否则我很乐意为您构建一个 :)

更新:您可以使用动态列表(用于 wikinews)news的扩展。如果您搜索 mediawiki.org,可能还有更多。

于 2012-05-29T15:52:42.733 回答