首页 知识分享文章正文

Typecho在文章中间插入广告的正确姿势

知识分享 2020年12月04日 17:51 52 羽度非凡

虽然羽度非凡的博客流量有限,但闲着也是闲着,挂上几条联盟广告,看起来让各个页面更丰满一些吧!


Typecho博客程序主打的是简洁,更多功能的实现可以自己编辑代码实现,不过一些常用的功能也已经有好心人整理出来了,比如在每篇文章中自动插入广告的代码:


function themeInit($archive) {

   

   // 判断是否是文章,如果是就插入广告

   $ad_code = '<div>这是你的广告</div>';

   if ($archive->is('single')) {

        $archive->content = prefix_insert_after_paragraph( $ad_code, 2, $archive->content );;

    }

}


// 插入广告所需的功能代码

function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {

   $closing_p = '</p>';

   $paragraphs = explode( $closing_p, $content );

   foreach ($paragraphs as $index => $paragraph) {

      if ( trim( $paragraph ) ) {

         $paragraphs[$index] .= $closing_p;

      }

      if ( $paragraph_id == $index + 1 ) {

         $paragraphs[$index] .= $insertion;

      }

   }

   return implode( '', $paragraphs );

}


这段代码中的关键信息基本已经标注出来,但如果直接将这段代码插入到functions.php文件中的话,可能会遇到广告无法显示,甚至报错的问题,原因很简单,就是有些Typecho第三方模板的functions.php文件中已经有了


function themeInit($archive)


这个函数,因此再将代码完整插入的话无法正常读取运行,所以想要在文章中间插入广告的话,可以现在functions.php文件中查找是否有


function themeInit($archive)


这个函数,如果有的话,将函数后面的


   // 判断是否是文章,如果是就插入广告

   $ad_code = '<div>这是你的广告</div>';

   if ($archive->is('single')) {

        $archive->content = prefix_insert_after_paragraph( $ad_code, 2, $archive->content );;

    }


直接添加到


function themeInit($archive)


函数后面即可,比如我的模板functions.php文件中就有这个函数,再添加广告代码便成了这样:

图片3.png

下面的功能代码可以直接完整复制插入到functions.php文件的最后,这段代码的主要作用是控制广告在文章中的具体位置。


默认情况下,广告会插入到文章的第2段后面,想要将广告设置在其他位置,将


$archive->content = prefix_insert_after_paragraph( $ad_code, 2, $archive->content );;


参数中的2更改为自己想要设置的段落数即可。

发表评论

备案号:冀ICP备11022167号

非凡博客Copyright @ 2010 All Rights Reserved. 版权所有