2012-05-29 4 views
1

내 mediawiki에 마지막으로 수정 된 페이지를 나열하는 새 태그 (<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

아마 일이 :
여기 내 확장 코드입니다. 당신이해야 할 일은 필요한 기능을위한 SpecialPage를 만드는 것입니다. AFAIK 특별 페이지는 캐시되지 않습니다 (irC#mediawiki에서 확인하십시오). 또한 당신은 이미 당신이 Mediawiki.org에 존재하는 확장을 검색 할 경우 사람에 의해 수행 비슷한 구현을 찾을 수 있습니다 (그렇지 않으면 내가 당신을 위해 하나 :

업데이트 구축 드리겠습니다 :. 당신이 Dynamic List(used in wikinews)news을 사용할 수 확장 . mediawiki.org를 검색하면 더 많은 정보가있을 수 있습니다.

+0

당신은 바로 위키 페이지에 대한 캐시를 사용하고 내 문제 야입니다. 나는 그것이 스페셜 페이지의 경우가 아니라는 것을 몰랐다. 그러나 나는 정말로 (자연의 메인 페이지에서) 대화 페이지에서 내 태그«뉴스»를 사용하고 싶습니다. 작동하도록하는 아이디어가 있습니까? – Nicolas

+0

내 편집을 참조하십시오. 기본 페이지에서 다른 페이지로 리디렉션 할 수도 있습니다. AFAIK 추가하는 것 외에는 특정 페이지에 대한 캐싱을 비활성화 할 수있는 방법이 없습니다? action = purge – nischayn22

+0

2 개의 링크를 보내 주셔서 감사합니다. 나는 그가 어떻게했는지 살펴볼 것입니다. – Nicolas