启用mediawiki函数以呈现wikitext
我的mediawiki版本是1.16.5。我有一个函数,可以从数据库中选择一个随机引用,并将其显示在wiki页面上。斜体和粗体是在我使用html时呈现的,但是,我希望能够使用wikitext,特别是外部链接格式,即启用mediawiki函数以呈现wikitext,mediawiki,Mediawiki,我的mediawiki版本是1.16.5。我有一个函数,可以从数据库中选择一个随机引用,并将其显示在wiki页面上。斜体和粗体是在我使用html时呈现的,但是,我希望能够使用wikitext,特别是外部链接格式,即 [http://mediawiki.org MediaWiki] 当前,如果使用类似于上述的内容,则不会渲染并按字面显示。这里有一些关于需要什么的参考:但我不知道如何实现这一点 代码如下: function wfGetQuote() { $randstr = wfRando
[http://mediawiki.org MediaWiki]
当前,如果使用类似于上述的内容,则不会渲染并按字面显示。这里有一些关于需要什么的参考:但我不知道如何实现这一点
代码如下:
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 );
}
通常我使用这个函数
我会将您的代码修改为:
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';
}
我还没有测试过它,但它可能可以完成您想要的工作。您不是在开发标记扩展,是吗?不,我只是希望现有的wiki标记在引号文本中工作。谢谢,我尝试过,但输出没有呈现。例如,我得到:引用文本[http://www.somesite.com/index.php?topic=49027.0 这是将引号文本:foreach$行修改为$行的位{$rand=wfRandom;$line=preg\u replace,\n,$line;$line=preg\u replace,$line=preg\u replace,\n,$line;$line=preg\u replace,$line;$line=$dbr->addQuotes$line;测试mediawiki文章中的输出源代码确实解析了wikitext OK,因此这证实了函数中缺少某些内容,而函数中没有粘贴在引号文本上方的代码。您可以尝试混合使用$wgOut对象的addWikiText和addHTMLText函数。将所有HTML标记放在addHTMLText函数中,将所有wikitext放在addWikiText函数中。这应该可以完成工作…啊,我忘记了$wgOut->addWikiText行中的更改。我也实现了这一点,但te将位置从文章的顶部切换到底部!使用addHTMLText,我调用了未定义的方法OutputPage::addHTMLText,它应该是addHTML,这与前面的结果相同:quote移到底部!