Hugo静态站点接入Adsense广告
Hugo 生成的静态站点要接入 Google Adsense 广告,方法如下:
接入全站自动广告
Adsense 广告分为全站广告(By site)和单元广告(By ad unit)。
如果想简单接入,不定制广告的类型,建议接入全站自动广告,不操心,完全信任 Google
-
先去 Adsense 后台,把自动展示广告的代码复制到
/xxx/layouts/partials/google/ads.html
xxx 是你网站的根目录,ads.html 是定义的文件名,里面粘贴上自动广告代码。 放在这个路径下,好处是:万一某一天你需要换个 theme,文件还在,完全不受影响。 形如:
1<script
2 async
3 src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-xxxxxxxxx"
4 crossorigin="anonymous"
5></script>
根据 Google 要求,广告代码是要放到 <head></head>
标签间的。
所以需要放在 themes 的相关地方,比如我使用的这个皮肤(每种皮肤路径不一定相同,要自己琢磨下),路径为:
xxx/themes/hugo-clarity/layouts/partials/head.html
ads 为上面 ads.html 的文件名:
1<!-- ads -->
2{{ partial "google/ads" . }}
这样全站自动广告就接入完成了,Adsense 会自动处理剩下的事情,包括在哪些页面的什么位置展示什么样的广告,还是很方便的。
接入自定义广告单元
人们总是喜欢自定义,By site 广告和 By ad unit 并不冲突。不完全信任 Google 也没错,比如你写的某个文章,你认为在 A 位置插入广告非常合适,B 位置就不行,此时自定义单元广告就派上用场啦。这个时候 Google 自动分配广告的算法不一定行。
- 按照 Adsense 指引,创建 4 种自定义广告单元
-
每种广告单元对应创建一个 hugo shortcodes
类似全站自动广告,把对应的广告单元代码分别放到 shortcodes 文件中。点图示地方获取单元广告代码
复制后,粘贴到对应文件中,如下图所示:
-
在 content 的 md 文件中引入对应的
shotcodes
例如, 文章开头添加广告
文章末尾添加广告
当然文章中间也可以添加,每种广告单元适合的位置不一样,名字按照自己喜好取。
这样,自定义广告单元也设置好了,可能别人有更加方便的方式,个人觉得不频繁变动也够用。
只是挨个文章添加广告有点费力,也许这就是自定义的乐趣,通常我给文章开头一个 adsense-header, 结尾一个 adsense-footer,中间看情况给一个 adsense-emb。再多用户不高兴,Google 也不答应,要考虑下用户体验。
接入自定义信息流广告
自定义信息流广告接入有门槛和特殊要求,一定要放到 feed 中才行,值得单独说下。所谓 feed 流可以简单想象为一个 for 循环,比如本站的首页,有 N 个文章简介块组成,信息流广告模仿你文章块的样式,提供更好的用户体验,在用户浏览的时候自然出现,与网站的外观和风浑然一体,非常适合移动设备,好比生物世界的保护色和拟态^_^
下面介绍接入过程
- 先找到循环所在的模板
我是通过网页源码定位,通过搜索 css 类关键字找到的,每个 hugo theme 的 feed 流模板位置不一样。hugo-clarity
的位置。
xxx/themes/hugo-clarity/layouts/partials/archive.html
- 修改信息流模板文件
1 {{- range $pageindex,$pagevalue := (.Paginate $pages).Pages }}
2 {{if and ($pageindex) (modBool $pageindex 3)}}
3 <!-- ads feed -->
4 {{ partial "google/adsense-feed" . }}
5 {{end}}
6 ...此处省略其它代码块
7 {{end}}
代码解释,range 后接入数组,$pageindex, $pagevalue 分别为 index,value,if 判断 index 为真 且 对 3 取模运算后为真。假设每页 10 个文章,3、6、9 的地方都会插入 feed 流广告。modBool 这个模板函数 index 为 0 的时候也为真,所以要排除下,不然用户看到的第一个就是广告,还怎么伪装 🥸。当然用户也可以更改 3 为其它数字,看自己意愿要展示多少广告,多了影响用户体验和网站性能。
至于这个 adsense-feed.html 模板文件放在什么位置,参考全站广告接入部分。
综上所述,全站自动广告 和 自定义广告分别用在不同场景下,也可以结合使用,各取所长。
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。