2012-05-29 2 views
1

Я добавил новый тег (<news />) в мои медиавики, чтобы перечислить последние измененные страницы.
К сожалению, список не обновляется, если я не изменяю страницу, где находится тег.
Я ищу способ сделать это, и я думаю о AJAX. Но мне не удалось заставить AJAX обновить мой список.
Кто-нибудь знает простой способ добавить функцию автоматического обновления на моей MediaWiki?
Вот мое расширение код:Автообновлено содержание в 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; 
} 

ответ

2

Это, вероятно, происходит потому, что MediaWiki использует кэш для страниц. То, что вы могли бы сделать, это сделать SpecialPage для необходимой функции. Специальные страницы AFAIK не кэшируются (подтвердите это на irC#mediawiki). Кроме того, вы могли бы уже найти подобную реализацию сделано кем-то, если вы будете искать расширения, которые существуют на Mediawiki.org (В противном случае я был бы рад создать для вас :)

Update:. Расширения можно использовать Dynamic List(used in wikinews) и news , Там может быть больше, если вы будете искать mediawiki.org.

+0

Вы правы Mediawiki использует кэш для страниц, и это моя проблема. Я не знал, что это не относится к специальным страницам. Но я действительно хочу использовать свой тег «новости» на общих страницах (на главной странице на самом деле). У вас есть идея заставить его работать? – Nicolas

+0

См. Мое редактирование. Вы также можете сделать перенаправление с главной страницы на другую страницу. AFAIK нет возможности отключить кеширование для конкретной страницы, за исключением добавления? Action = purge – nischayn22

+0

Спасибо за 2 ссылки, новости очень интересны. Я посмотрю, как он это сделал. – Nicolas

Смежные вопросы