前言

很多项目的开始都是因为情怀和热爱,“为爱发电”是一件很值得尊敬的事情,然而大量“为爱发电”的项目最后却不得不因”难以为继“而被迫停服。

园子就是很好的案例,它一直以来就是一个很纯粹的技术分享平台,但纯爱是最容易受伤的,不过哪怕是现在逐步探索商业化了,和”牛皮藓“满天飞,看个文章还要登录的某N(不点名,你知道我在说谁)相比,依然是一股清流。

说回本文主题,分享两个我个人开发的内置 Google 广告位的Typecho主题,我希望使用这两款主题搭建网站的同学能够永不停服,所以我一开始就想着把谷歌广告集成进去,虽未必能赚多少钱,但只要持续输出文章、作品,确保站点是活着的,一年下来挣个服务器和域名的费用总还是可以的吧!

1. 展示效果

篇幅有限,主题效果不截图展示,大家可以通过下面各小节中的项目地址详细查看,这里主要介绍 Google Ads 集成的问题,本以为集成 Google Ads 会是一件很简单的事情,最多调一下样式就好了,但结果为了能让广告正常显示,却很费了一些力气,主要就是PJAX这种页面无跳转的技术(也包括VueReact等前端SPA框架)与 Google Ads 存在兼容性问题,本文不谈坎坷的道路,后面单独写一篇文章来记录踩坑过程,这里直接展示一下集成后的效果。

1.1 博客主题

项目地址

https://github.com/ZShijun/WaterDrop

为了兼顾收益和用户体验,我一共为博客主题设置了三个广告位:侧边栏底部,文章页头部和文章页尾部。由于窄屏没有侧边栏,因此,窄屏其实只有两个广告位。

文章页头部效果

文章页尾部效果

侧边栏效果

1.2 导航主题

项目地址

https://github.com/ZShijun/BeaconNav

文章页效果

导航主题实在没什么好的位置,就只在详情页中设置了一个广告位。

怎么样?无论是博客主题,还是导航主题,广告嵌入的都还算和谐,不恶心吧?如果你用了我开发的主题,也赶紧试试吧,蚊子再小也是肉,给自己稍微增加一点创作的动力吧!

2. 如何使用

两个主题的设置方式大同小异,因此我以博客主题为例演示说明。配置方式很简单,我在主题配置页面增加了一个谷歌广告的配置项,如下图所示:

其中,publisher是发布商ID,后面三个可以理解为广告位的编号,都可以直接从 Google Ads 后台获取,如下图所示:

就这么简单,搞定了,至于怎么操作以及原因,我打算后面再写一篇文章来单独解释。

不出意外的话,广告很快就能在你的网站中展现出来了,所以,首要问题还是得先注册一个 Google Ads 账号,心动就赶紧行动起来吧!

3. 鱼和熊掌

如果你不希望你的网站显示广告,主题中的谷歌广告的配置直接空着就行了,不显示广告起码有以下两个优点:

  1. 没有了广告,网站会更纯净一些,用户体验也会好一些,当然,每个广告位都可以单独选择是否投放;
  2. 由于PJAXGoogle Ads 兼容性的问题,接入广告后,向文章内容页的跳转会退化成页面跳转模式,而关闭广告后,又可以恢复原来的 PJAX 路由模式,文章页加载也会快一些。

事实上,上述优点只是理论上的,实际感受未必有那么明显,因为广告并不是每次都显示,也并不是所有广告位都会同时显示。至于性能的变化,访问者也未必会有明显的感受。

总之,不管怎么样,收益和体验,就如同鱼和熊掌,二者不可兼得,总还是需要权衡一下的。

结语

到此并没有结束,后续还要继续观察观察,例如,屏蔽一些在咱们这边比较敏感的广告,并且,事实上,广告展示可能还有BUG,路也没有完全走通,套句名言:这才刚刚开始!

说到这里,为了调试,我这几天几乎每天都会刷新上百次广告,现在都不太敢自己访问自己的网站了,生怕一不小心就被判定违规了,所以测试的可能不太充分,如果你在使用过程中发现新的问题,欢迎留言反馈,我会尽快验证修复。

感兴趣的赶紧去 GitHub 上下载源码安装试试吧!

分享两个内置Google广告位的Typecho主题的更多相关文章

  1. mybatis动态sql中的两个内置参数(_parameter和_databaseId)

    mybatis动态sql中的两个内置参数(_parameter和_databaseId)   <!-- mybatis动态sql的两个内置参数           不只是方法传递过来的参数可以被 ...

  2. Mybatis学习笔记15 - 两个内置参数_parameter和_databaseId

    两个内置参数:除了方法传递过来的参数可以被用来判断,取值外,mybatis默认还有两个内置参数: _parameter:代表整个参数 单个参数:_parameter就代表这个单个参数 多个参数:参数会 ...

  3. Python两个内置函数——locals 和globals (学习笔记)

    这两个函数主要提供,基于字典的访问局部和全局变量的方式.在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键 ...

  4. Python两个内置函数locals 和globals

    这两个函数主要提供,基于字典的访问局部和全局变量的方式.在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键 ...

  5. SQLServer中DataLength()和Len()两内置函数的区别(转载)

    最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE ...

  6. SQLServer中DataLength()和Len()两内置函数的区别

    最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE ...

  7. JavaScript中本地对象、内置对象和宿主对象

    链接:http://www.cnblogs.com/luckyXcc/p/5892896.html(Milk.╮的博客园提供) 其中内置对象只有两种:ECMA-262 只定义了两个内置对象,即 Glo ...

  8. JS 内置对象

    内置对象的定义:有ECMAScript实现提供的.不依赖与宿主环境的对象,在ECMAScript运行之前就已经创建好的对象就叫做内置对象. 就是说,是不需要我们开发人员先是的实例化对象就能够调用和运行 ...

  9. JavaScript本地对象 内置对象 宿主对象

          在ECMAScript中,所有对象并非同等创建的. 一般来说,可以创建并使用的对象有3种:本地对象.内置对象和宿主对象. 1. 本地对象 ECMA-262把本地对象(native obje ...

  10. JavaScript 本地对象、内置对象、宿主对象

    首先解释下宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序.如:web浏览器,一些桌面应用系统等.即由web浏览器或是这些桌面应用系统早就的环境即宿主环境. ...

随机推荐

  1. Oracle和达梦:相似度函数:UTL_MATCH

    UTL_MATCH介绍: Oracle的UTL_MATCH包是一个提供字符串匹配和相似度计算功能的工具包.它包含了一系列函数,用于执行字符串比较.相似度计算和模式匹配等操作. UTL_MATCH包中的 ...

  2. 史上功能最全的Java权限认证框架!

    大家好,我是 Java 陈序员.权限认证是我们日常开发绕不过的话题,这是因为我们的应用程序需要防护,防止被窜入和攻击. 在 Java 后端开发中,实现权限认证有很多种方案可以选择,一个拦截器.过滤器也 ...

  3. SpringMVC学习二(日期参数/数据保存/重定向)

    接受的参数为日期类型 controller进行数据保存 Controller如何进行重定向跳转 1.对于前端页面传来日期类型的数据时如何进行处理,有两种方法 1.1在对应的Controller中插入代 ...

  4. SAP Adobe Form 教程三 日期,时间,floating field

    前文: SAP Adobe Form 教程一 简单示例 SAP Adobe Form 教程二 表 原文标题:SAP Adobe Interactive Form Tutorial. Part III. ...

  5. 谷歌 hackbar 不能使用的问题

    谷歌 hackbar 不能使用的问题 下载 hackbar 插件:https://github.com/Mr-xn/hackbar2.1.3 解压文件,将其拖入 chrome 扩展程序中 点击详情,点 ...

  6. 11、操作系统安全加固-Windows 加固

    1.账号管理与认证授权 1.1.按用户类型分配账号 目的:根据系统要求,设定不同账户和组,管理员.数据库sa.审计用户.来宾用户等 实施方法: 打开本地用户和计算机管理器 或 打开运行,输入 lusr ...

  7. 01 elasticsearch学习笔记-环境安装

    docker-compose安装EFK git clone https://github.com/haimait/docker_compose_efk docker-compose up -d Flu ...

  8. WEB服务与NGINX(14)-NGINX的压缩功能

    1. nginx压缩功能 nginx支持对指定类型的文件进行压缩后再回传给客户端,而且压缩可以设置压缩比,压缩后的文件会明显变小,有助于降低出口带宽的利用率,但是会占用一定的CPU资源. nginx实 ...

  9. WordPress函数小结

    1.body_class()函数 为了区分不同的页面,可以用WordPress的body_class()函数 可以在head.php中给body添加:<body <?php body_cl ...

  10. 🔥架构师狂掉1024根头发,总算搞定SSL通配证书

    架构师狂掉1024根头发,总算搞定SSL通配证书 经过许多个日日夜夜的持续开发(掉了1024根头发),总算搞定了v1.11.0版本,修复和解决了许多问题,也支持CDN和OSS证书的部署. v1.11. ...