在 Vuepress 2 中使用 Google Adsense 并配置自适应加载
迫于服务器续费的压力,最近抽时间和同学一起在社团运营的vuepress中配置了Google Adsense广告,并失陪了微信小程序,令广告只在非小程序环境下加载(由于小程序对域名备案的要求,adsense广告是无法在小程序的webview里面显示,强行显示还会造成小程序直接被「配置业务域名」的弹窗覆盖)。
配置Adsense的自适应加载广告
function isInWechatMP() {
return navigator.userAgent.match(/miniprogram/i) || window.__wxjs_environment === 'miniprogram';
};
function load_adsense() {
console.log("判断环境,加载 adsense")
if (isInWechatMP() === false) {
console.log("非小程序环境,加载");
var oScript = document.createElement("script");
oScript.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
oScript.setAttribute("async", "");
oScript.setAttribute("data-ad-client", "ca-pub-12345678");
document.head.appendChild(oScript);
// <script data-ad-client="ca-pub-12345678" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
} else {
console.log("小程序环境,跳过");
}
}
setTimeout("load_adsense()", 500);
- 首先通过函数
isInWechatMP
,通过判断User Agent来判断目前是否处在小程序的环境中。 - 如果判断是小程序环境,执行
load_adsense
,在DOM上引入Adsense的脚本。
配置Adsense广告单元
在注册Adsense账户之后,google会给用户提供一段类似如下结构的代码:
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-12345678"
crossorigin="anonymous"></script>
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-12345678"
data-ad-slot="12345678"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
随后可以根据上面的代码,建立一个component:
<template>
<div class="container">
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-12345678"
data-ad-slot="12345678"></ins>
</div>
</template>
<script>
export default {
name: "adsense-inline",
mounted() {
this.adsenseAddLoad();
},
methods: {
adsenseAddLoad() {
let inlineScript = document.createElement("script");
inlineScript.type = "text/javascript";
inlineScript.text = '(adsbygoogle = window.adsbygoogle || []).push({});'
document.getElementsByTagName('body')[0].appendChild(inlineScript);
}
}
}
</script>
把原来的html片段中的脚本改为函数,塞在脚本里面,并在config.js
里面导入组件:https://github.com/SUSTech-CRA/sustech-online-ng/blob/master/docs/.vuepress/config.js#L111
[
'@vuepress/register-components',
{
components: {
Adsense_unit: path.resolve(__dirname, './components/adsense-inline-article.vue'),
// componentsDir: path.resolve(__dirname, './components')
},
},
]
在文章中插入广告单元
在markdown中插入以下标签即可:
<Adsense_unit>
</Adsense_unit>
渲染之后,插入标签的位置就会显示广告了。
具体的广告效果可以在 sustech.online/#关于广告 的上方进行查看。