0

私の mediawiki のバージョンは 1.16.5 です。データベースからランダムな引用を選択して wiki ページに表示する機能があります。HTML を使用すると斜体と太字が表示されますが、ウィキテキスト、特に外部リンク形式を使用できるようにしたいと考えています。

[http://mediawiki.org MediaWiki]

現在、上記のようなものを使用すると、レンダリングされず、文字どおりに表示されます。ここで何が必要かについての参考文献があります: http://www.mediawiki.org/wiki/Manual:Tag_extensions#How_do_I_render_wikitext_in_my_extension.3Fしかし、これを実装する方法がわかりません。

コードは次のとおりです。

function wfGetQuote() {
    $randstr = wfRandom();
    $row = selectRandomQuoteFromDB( $randstr );

    if( !$row )
        $row = selectRandomQuoteFromDB( "0" );

    if( $row ) {
        list( $quote, $attribution ) = explode( "\n", $row->quote_text );
        return '<div id="trrandomquote"><div id="trquote">'. $quote .'</div> <span>'. $attribution .'</span></div>';
    }
    else
        return 'Error: No quote found';
}

function selectRandomQuoteFromDB( $randstr ) {
    global $wgUser, $site;

    $lang = $wgUser->getOption( 'language' );
    if( $site == 'wiki' )
        $lang = 'en';

    $dbr = wfGetDB( DB_SLAVE );
    $use_index = $dbr->useIndexClause( 'quote_random' );
    $quote = $dbr->tableName( 'quote' );

    $sql = "SELECT quote_text
        FROM $quote $use_index
        WHERE quote_random >= $randstr
        AND quote_lang = '$lang'";

    $sql = $dbr->limitResult( $sql, 1, 0 );
    $fname = 'RandomQuote::selectRandomQuoteFromDB';
    $res = $dbr->query( $sql, $fname );
    return $dbr->fetchObject( $res );
}
4

1 に答える 1

0

通常、私は$wgOut->addWikiText( $msg );を使用します。関数。

コードを次のように変更します。

function wfGetQuote() {
  global $wgOut; // Added line

  $randstr = wfRandom();
  $row = selectRandomQuoteFromDB( $randstr );

  if( !$row )
      $row = selectRandomQuoteFromDB( "0" );

  if( $row ) {
      list( $quote, $attribution ) = explode( "\n", $row->quote_text );
      $wgOut->addWikiText( '<div id="trrandomquote"><div id="trquote">'. $quote .'</div> <span>'. $attribution .'</span></div>' );
  }
  else
      return 'Error: No quote found';
}

私はそれをテストしていませんが、あなたが探している仕事をするかもしれません.

于 2013-02-13T22:00:36.403 に答える