前言

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

园子就是很好的案例,它一直以来就是一个很纯粹的技术分享平台,但纯爱是最容易受伤的,不过哪怕是现在逐步探索商业化了,和”牛皮藓“满天飞,看个文章还要登录的某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. Headless BI

    Headless的概念最初的来源与内容管理平台有关,一般是指内容管理平台中的一些应用不提供可视化界面,只是通过API方式把内容以数据的方式给前端.前端根据不同的设备类型,可以再去进行针对性地渲染和展现 ...

  2. 简说Python之面向对象

    目录 Python对象 对象的内置方法 __init__方法 __str__方法 对象的多态 对象的封装 对象的继承 之前介绍了函数.对象代表了什么.可以称为"一篮子"计划,把数据 ...

  3. 08 ES基本的聚合查询

    目录 按protocol聚合 指定地区,按port聚合 指定地区和时间段,按ip聚合(独立ip 即ip去重) 并且 聚合再求独立ip数 聚合后将聚合结果进行分页的解决办法 子聚合 按protocol聚 ...

  4. css :not()选择器使用

    前言:这是一个vue的项目,引入了一个reset.css,重写了几乎所有标签的默认样式.项目中需要渲染富文本,里面包含了很多标签,例如:<h1>这是一个大标题</h1>,这个时 ...

  5. 部署springboot+vue项目文档(若依ruoyi项目部署步骤)

    摘自:https://blog.csdn.net/Dreamboy_w/article/details/104389797 部署springboot+vue项目文档(若依ruoyi项目部署步骤)一:部 ...

  6. Android 13 - Media框架(27)- ACodec(五)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 前面几节我们了解了OMXNodeInstance是如何处理setPortMode.allocateBuffer.useBuffer的,这一节我们再回 ...

  7. 在 Rainbond 中一键安装高可用 Nacos 集群

    描述如何通过云原生应用管理平台 Rainbond 一键安装高可用 Nacos 集群.这种方式适合不太了解 Kubernetes.容器化等复杂技术的用户使用,降低了在 Kubernetes 中部署 Na ...

  8. Qt-FFmpeg开发-回调函数读取数据(8)

    音视频/FFmpeg #Qt Qt-FFmpeg开发-使libavformat解复用器通过自定义AVIOContext读取回调访问媒体内容 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发- ...

  9. QShop商城-开发规范

    QShop商城-项目介绍 QShop商城,是全新推出的一款轻量级.高性能.前后端分离的电商系统,支持微信小程序,前后端源码100%开源,完美支持二次开发,让您快速搭建个性化独立商城. 技术架构:.Ne ...

  10. [brief]虚拟机安装UbuntuServer

    1.下载Ubuntu--Server镜像官网点击 2.Vmware15.x配置 2G /boot 4G swap(一倍或两倍于分配内存量) rest / or /+/home 3.terminal下安 ...