Hugo静态站点接入Adsense广告

Hugo 生成的静态站点要接入 Google Adsense 广告,方法如下:

接入全站自动广告

Adsense 广告分为全站广告(By site)和单元广告(By ad unit)。

如果想简单接入,不定制广告的类型,建议接入全站自动广告,不操心,完全信任 Google

Adsense by site

  • 先去 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

hugo themes header

ads 为上面 ads.html 的文件名:

1<!-- ads -->
2{{ partial "google/ads" . }}

这样全站自动广告就接入完成了,Adsense 会自动处理剩下的事情,包括在哪些页面的什么位置展示什么样的广告,还是很方便的。

接入自定义广告单元

人们总是喜欢自定义,By site 广告和 By ad unit 并不冲突。不完全信任 Google 也没错,比如你写的某个文章,你认为在 A 位置插入广告非常合适,B 位置就不行,此时自定义单元广告就派上用场啦。这个时候 Google 自动分配广告的算法不一定行。

  • 按照 Adsense 指引,创建 4 种自定义广告单元

adsense unit types

  • 每种广告单元对应创建一个 hugo shortcodes

    类似全站自动广告,把对应的广告单元代码分别放到 shortcodes 文件中。点图示地方获取单元广告代码

    get unit code

    复制后,粘贴到对应文件中,如下图所示:

    hugo adsense shortcodes-adsense

  • 在 content 的 md 文件中引入对应的 shotcodes

    例如, 文章开头添加广告

    md-call-header.webp

    文章末尾添加广告

    md-call-footer.webp

    当然文章中间也可以添加,每种广告单元适合的位置不一样,名字按照自己喜好取。

    这样,自定义广告单元也设置好了,可能别人有更加方便的方式,个人觉得不频繁变动也够用。

    只是挨个文章添加广告有点费力,也许这就是自定义的乐趣,通常我给文章开头一个 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

  • 修改信息流模板文件

hugo feed

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 模板文件放在什么位置,参考全站广告接入部分。

综上所述,全站自动广告 和 自定义广告分别用在不同场景下,也可以结合使用,各取所长。

最后修改于: Monday, August 28, 2023
欢迎关注微信公众号,留言交流。

相关文章:

翻译: