我想在我的wiki上的每个页面上的第一段之后添加Google广告。 我有一个代码可以检查标签是否存在,如果不是,则添加标签,此标签会调用Google广告的代码。 但是,页面上的其他文字未在广告后显示。 这是我的代码:(基于AdsWhereever扩展程序)
$wgHooks['ParserFirstCallInit'][] = 'AdsSetup'; $wgHooks['EditPage::showEditForm:initial'][] = 'CheckHasTag';
function AdsSetup( &$parser ) {
$parser->setHook( 'ads', 'AdsRender' );
return true;}
function AdsRender($input, $args ) {
$input =""; $url = array(); global $wgOut;
$ad['goo1'] = '<html><br><script type="text/javascript">
google_ad_client = "xxx";
google_ad_width = 728;
google_ad_height = 90;
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br></html>';
$media = $args['media'];
return $ad[$media];
}
// check if content has <goo1> tag
function CheckHasTag($editPage){global $wgOut;
$wgOut->addScript('<script type="text/javascript">
var editTextboxText = document.getElementById("wpTextbox1").value;
var searchFor = "goo1";
var searchResult = editTextboxText.search(searchFor);
if(searchResult == -1){
var a = editTextboxText;
var b = "\n<ads media=goo1>\n";
var findP = "\n";
var p = editTextboxText.search(findP);
var position = p;
document.getElementById("wpTextbox1").value = a.substr(0, position) + b + a.substr(position);
}</script>');
return true;
}
答案 0 :(得分:2)
您的代码依赖于$wgRawHtml
中LocalSettings.php
设置为true。 (顺便说一下,这是一个巨大的安全风险,绝不应该在公共维基中使用。)如果你没有设置
$wgRawHtml
为true,标记函数的最后一个输出将为</html>
,这将导致浏览器停止解析页面,并且不再生成输出。
这样的东西可能会起作用,而不必使用html-tag:
function AdsRender( $input, $args, $parser, $frame ) {
$output = '<div id="googlead"><script type="text/javascript">
google_ad_client = "xxx";
google_ad_width = 728;
google_ad_height = 90;
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>';
return array( $output, "markerType" => 'nowiki' );
}
顺便说一下,你的例子中有很多垃圾,如果删除未使用的代码(如$url = array(); global $wgOut;
等),它会更容易帮助你
答案 1 :(得分:-1)
标签中缺少一个/这就是为什么文本的其余部分没有显示! var b =“\ n \ n”