如何在Question2Answer特定帖子第n段后添加JavaScript代码
给Q2A长问题第3段后插入AdSense代码的解决方案
嘿,我完全懂你在Q2A里折腾这个AdSense插入的痛苦——长帖子想精准在第3段后加广告,确实得动主题的PHP代码,我之前帮朋友处理过一模一样的需求,给你捋清楚怎么改:
首先,找到你的主题文件qa-theme.php里的qa_view函数,定位到负责渲染问题内容的代码块——通常它是直接输出整个问题内容的,类似这样:
echo qa_html($question['content']);
接下来我们要把这段内容拆分成段落,在第3段后插入AdSense代码,具体修改如下:
第一步,拆分内容为段落数组:
先把整个问题内容按段落标签拆分开,同时清理掉空元素,避免输出无效内容:// 按</p>标签拆分段落,适配Q2A默认的内容排版 $content_paragraphs = explode('</p>', qa_html($question['content'])); // 过滤掉拆分后产生的空数组元素 $content_paragraphs = array_filter($content_paragraphs);第二步,遍历段落并插入广告:
循环输出每一段,当输出到第3段时,插入你的AdSense代码:$para_count = 0; foreach ($content_paragraphs as $single_para) { $para_count++; // 输出原段落,记得补回被拆分掉的</p>标签 echo $single_para . '</p>'; // 第3段后插入AdSense广告 if ($para_count === 3) { // 替换成你自己的AdSense代码 echo '<div style="margin: 20px 0;"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-你的ID" crossorigin="anonymous"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-你的ID" data-ad-slot="你的广告位ID" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div>'; } }第三步,几个要注意的细节:
- 一定要把示例里的
ca-pub-你的ID和data-ad-slot="你的广告位ID"替换成你自己的AdSense信息,不然广告不会显示 - 如果你的问题内容不是用
<p>标签包裹的(比如用<br>换行),得调整explode的分隔符,比如改成explode('<br>', ...),根据实际内容结构来 - 修改主题文件前一定要备份原文件,万一改崩了还能恢复
- 可以给广告容器加个CSS类或者内联样式(比如示例里的
margin: 20px 0;),让广告和内容之间有合适的间距,排版更美观
- 一定要把示例里的
这样修改后,只要你的问题帖子有3段及以上内容,AdSense广告就会自动精准插入在第3段后面啦。
内容的提问来源于stack exchange,提问作者Badan
相关产品推荐
相关产品推荐

