未来的文章-添加插件和高级功能

2020-01-14

这篇文章介绍如何添加一些常见的插件和功能扩展。

功能插件

1. 回到首页

对于习惯发长文的朋友来说,这个功能十分方便。已经包括在主页中,无需任何配置。如果你想改变按钮的样式,请参考 这里, 修改本项目中 _include/back-to-top.html 文件。

2. 社交分享

社交网络的分享按钮能帮助你快速增长自己的受众,不过很多第三方社交分享按钮,例如shareaholic, addthis等都有跟踪代码,可能泄漏读者的隐私。 因此鼓励采用非第三方javascript的社交分享按钮。 目前包括了两种

2.1 jquery social share buttons

你只需要在_config.yml 文件中的改成这样

sharebuttons:
  jquery: true
  nojavascript: false

2.2 无javascript的分享按钮 (推荐)

来自 https://sharingbuttons.io, 只需要将_config.yml 文件中的以下部分改为

sharebuttons:
  jquery: false
  nojavascript: true

你可以看到默认开启的是无javascript的分享按钮。

3. 安全的流量统计

3.1 基于FreeCounterStat的非javascript计数器

页脚包含一个uBlock Origin认证安全的网页点击计数器,博客每获得一次点击就会累加1,这对博主而言可以大概的知道自己网站的访问量。配置方法如下:

首先,到FreeCounterStat申请一个新的计数器。第三步完成后,将产生的非javascript代码中的图片编号复制,例如

<a href="https://www.freecounterstat.com" title="free hit counters">
  <img src="https://counter1.wheredoyoucomefrom.ovh/private/freecounterstat.php?c=ghfqhne7z87531aunzg4cqds8kfcekpa" border="0" title="free hit counters" alt="free hit counters">
</a>

将上述代码中的字符串 ghfqhne7z87531aunzg4cqds8kfcekpa 复制到 _config.yml 中的 webcounterimg: ghfqhne7z87531aunzg4cqds8kfcekpa 即可.

这种方法只能获得大致的点击率,并不能提供较详细的流量分析,例如每日流量、各个页面的访问量、交叉来源等。

3.2 基于javascript但不使用cookies的流量分析 Ticksel

我们主要利用这两个浏览器插件来检测第三方跟踪代码:NoScriptuBlockOrigin。前者可以禁止网页上的javascripts, 后者则封锁包括javascript、图片等任何可能侵犯隐私的插件。

Ticksel实现流量分析靠javascript,当javascript被禁止时则靠图片。根据Ticksel的官方网站描述,其javascript元素不使用cookies、保持对网页访问者的隐私友好、并尊重浏览器的Do Not Track标识。同时Ticksel的分析数据也是通过非对称密钥加密存放在其服务器上,也就是说你的数据除了你自己,即便是Ticksel的后台也无法访问。

使用方法:第一步先注册Ticksel会员, 第二步产生Tags,第三步配置跟踪代码(主要是选择加什么Tag)这样通过不同的Tag,你可以在一个地方对自己的多个网站进行流量分析,第四步将跟踪代码复制到你的网页。对于Jekyll Kiko-now来说,可已将跟踪代码放到 _include/footer.html中进而布置到所有页面。

具体可参考我们的流量分析项目及其演示站点.

注意:一般来说,为保护自己的隐私,请仅在Tor环境下打开未知或实验性链接。

如果你安装了uBlock Origin的话,可以看到uBlock Origin并没有封锁Ticksel,说明uBlock认为Ticksel是安全的。事实上因为Ticksel对隐私的保护的注重,很多ad blocker都不封锁Ticksel的流量分析脚本。

评论区

推荐使用gitalk模块将Github Issue作为评论区,具体设置请参考这里。注意,申请好的clientID等参数放到_config.yml中,如下:

gitalk:
  clientID: ac14c26bcf8a16e03567
  clientSecret: 443574e2aa0e8bccf03adac267a82fdaa0a346c2
  repo: blog
  owner: diymysite
  admin:
    - DamoresClub
    - TerminusBot
    - chinatimeline
    - diymysite

另外,要开启评论区的页面的YAML参数区设置comments: ture, 参考本页

---
layout: post
title: 未来的文章-添加插件和高级功能
date: 2020-01-14
categories: Archive
tags: 示例
comments: true
description: 未来的文章-添加插件和高级功能-创建于2020-01-12-但会直到2020-01-14再发布
---

计划发布

有时候你可能提前写好博文,想等到某一天再发布,jekyll 也支持这个功能,但Github Page默认不支持,要开启该功能,要在_config.yml中添加一行future: false,否则未来日期的博文会被直接发布。

计划发布需要利用Github Action,这里我们用以下代码CI代码实现除每次push作为触发之外,还会每日自动build两次,这样就可以把设定在‘未来’的post定期发布了。

name: Jekyll Deploy

on:
  push:
    branches:
      - master
  schedule:
    - cron: '1,30 6 * * *'

jobs:
  build_and_deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Build & Deploy to GitHub Pages
        env:
          GITHUB_TOKEN: ${ secrets.ACCESS_TOKEN }
          GITHUB_REPOSITORY: ${ secrets.GITHUB_REPOSITORY }
          GITHUB_ACTOR: ${ secrets.GITHUB_ACTOR }
        uses: BryanSchuetz/jekyll-deploy-gh-pages@master

注意:

  1. 你需要先申请一个Personal Access Token, 在项目的settings–>secret中添加一个新的secret,名字叫ACCESS_TOKEN数值是生成的Token.
  2. 这个发布脚本会将build好的站点发布到gh-pages分支中,所以需要你在项目的settings–>General–>Github Pages里面设置发布分支为gh-pages.
  3. _config.yml中加上destination: build避免编译出错
  4. 因为Github Action自身的局限,这种计划发布功能仅适用于repo page (类似https://username.github.io/blog/) 而 无法用于 User Page (类似https://username.github.io/) .