Вызов парсера страниц MediaWiki для получения HTML? - PullRequest
4 голосов
/ 04 декабря 2009

Я хотел бы получить HTML-код для страницы MediaWiki, то есть я хочу запустить разметку MediaWiki через анализатор. Теперь я знаю, что мог бы просто использовать какой-нибудь внешний Parser, но большинство из них не поддерживают Transclusion и (естественно) Extensions, поэтому мой вывод будет другим.

Поскольку у меня есть доступ к установке MediaWiki, мне интересно, могу ли я просто использовать встроенный парсер, чтобы отобразить мне страницу. Я не хочу делать снимки экрана из-за всех других вещей на странице (навигация, боковая панель, javascript, css и т. Д.), Я буквально просто хочу тело.

Если это имеет значение, он запускает MediaWiki 1.12 на PHP 5.2.

Ответы [ 3 ]

7 голосов
/ 23 февраля 2010

Использовать action = render; например, index.php? title = Article_title & action = render

3 голосов
/ 04 декабря 2009

Да, вы можете сделать это, на самом деле, я помню, как делал это во многих моих доступных расширениях здесь .

Нашел одно из моих расширений, которое делает это: SecureTransclusion .

следующий фрагмент:

public function mg_strans( &$parser, $page, $errorMessage = null, $timeout = 5 ) {

    if (!self::checkExecuteRight( $parser->mTitle ))
        return 'SecureTransclusion: '.wfMsg('badaccess');

    $title = Title::newFromText( $page );
    if (!is_object( $title ))
        return 'SecureTransclusion: '.wfMsg('badtitle')." ($page)";

    if ( $title->isTrans() )
        $content = $this->getRemotePage( $parser, $title, $errorMessage, $timeout );
    else
        $content = $this->getLocalPage( $title, $errorMessage );

    $po = $parser->parse( $content, $parser->mTitle, new ParserOptions() );
    $html = $po->getText();

    return array( $html, 'noparse' => true, 'isHTML' => true );
}
2 голосов
/ 04 декабря 2009

Как насчет использования текущего анализатора MediaWiki? Просто возьмите преобразованный вывод, скажем

от <!-- start content --> до <div class="printfooter">

или NewPP limit report. Последний начинает статистику препроцессора. Таким образом, все боковые рамки и баннеры будут опущены.

...