Typecho在文章中间插入广告的正确姿势
虽然羽度非凡的博客流量有限,但闲着也是闲着,挂上几条联盟广告,看起来让各个页面更丰满一些吧!
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文件中就有这个函数,再添加广告代码便成了这样:
下面的功能代码可以直接完整复制插入到functions.php文件的最后,这段代码的主要作用是控制广告在文章中的具体位置。
默认情况下,广告会插入到文章的第2段后面,想要将广告设置在其他位置,将
$archive->content = prefix_insert_after_paragraph( $ad_code, 2, $archive->content );;
参数中的2更改为自己想要设置的段落数即可。