在内容页面中间添加Google广告

时间:2014-03-13 08:07:56

标签: javascript mediawiki

我想在我的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;
       }

2 个答案:

答案 0 :(得分:2)

您的代码依赖于$wgRawHtmlLocalSettings.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”