点击上方 好好学java ,选择 星标 公众号

重磅资讯、干货,第一时间送达
今日推荐:Java实现QQ登录和微博登录个人原创+1博客:点击前往,查看更多
链接:https://segmentfault.com/a/1190000022112839

在使用 Github 作为博客很长一段时间在发愁,主要是有以下几个痛点:

  • 每次写文章都要打开编辑器,感觉自己不是在写文章而是在写代码

  • 写完只是想打个草稿,都要用 git 提交以下更改,更像写代码了

  • 不能随时随地的编辑,有时候我想用 ipad 修改点什么都不可以

由于以上几个痛点,每次写 Blog 感觉自己都需要费很大的力气,还不如自己写个笔记就过去了。

但是有些好的东西总是要分享出来才会有价值啊,于是我开始寻找 Github Blog 的 CMS 解决方案。

先来一张效果图。

blog_admin

netlifycms 与 jekyll-admin 的对比

刚开始我找到的是 jekyll-admin 这款 jekyllCMS,因为本人用的是 jekyll。但是发现这款 jeklly 还需要一台服务器,也就是他编辑的只是服务器上的文件。

当初选择使用 Github 作为 Blog 就是想在没有个人服务器的情况下 Blog 依然能工作。虽然目前是利用 CI 部署在自己的服务器上方便国内的搜索引擎爬虫进行爬取,目的是优化 SEO,提高国内的访问速度。但是还是想要一个不需要自己部署后端的 CMS。

于是我就找到了 netlifycms,经过配置完后我大概了解了他的工作原理。

首先你的 CMS admin 页面是跟你博客一起部署在 Github 上面的,admin 的权限则是通过 Github OAuth 来控制的。在你修改了页面之后,会通过 js 提交给 netlifynetlify 会通过 Github OAuth 获取的权限来在你修改了文章之后帮你做 git commit 的操作,大概的原理图如下。

netlifycms

废话不多说,我们跟着官方文档开始吧。

为你的博客添加 netlifycms

由于本人用的是 jeklly 博客,文章中的演示部分均为 jeklly。当然 netlifycms 不只支持 jeklly,还支持很多其他类型的 Blog。如果是其他类型的 Blog 可以参考官方文档的 Guides,不过应该都是大同小异的,不过建议对比本片文章来配置,如何创建 Oauth 应用可以参考本文,因为官方文档没有讲的太详细。

当然开始之前你需要有一个已经部署好的博客,没有部署好的可以参考 jeklly 的部署指引文档。

增加 admin/index.html 文件

创建一个 admin/index.html 在你的仓库根目录下,这个文件内容看起来像这样。注意官方文档中并没有添加 netlify-identity-widget.js 这个 js ,这个是用来校验你的身份的,需要加上。

<!-- admin/index.html -->
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><script src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script><title>Content Manager</title></head><body><!-- Include the script that builds the page and powers Netlify CMS --><script src="https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js"></script></body>
</html>

可以参考我的仓库文件,https://github.com/elfgzp/elf...

然后在你的首页的 index.htmlheader 增加一段 js 代码。这段代码的作用是在你登录你的 cms admin 页面之后,netlify-identity-widget.js 会将你重定向到首页,然后这段代码会把你带回 admin 页面。

<header><!-- ... -->
<script> if (window.netlifyIdentity) {window.netlifyIdentity.on("init", function (user) {if (!user) {window.netlifyIdentity.on("login", function () {document.location.href = "/admin/";});}});} </script>
</header>

增加一个 admin/config.yml 文件

同样在仓库根目录下创建一个 admin/config.yml 文件,这个文件内容看起来是这样。注意官方文档中的 backend:namegit-gateway ,我们需要修改成 github

backend:name: githubbranch: master # 默认是 master 分支
media_folder: 'assets/uploads'
collections:- name: 'blog'label: 'Blog'folder: '_posts/'fields: # 这里这些字段对应到你写文章的 markdown 上方的一些文章属性 widget 的配置可以参考官方文档的 widget 部分- {label: "Layout", name: "layout", widget: "hidden", default: "post"}- {label: "Title", name: "title", widget: "string", tagname: "h1"}- {label: "Date", name: "date", widget: "datetime", format: "YYYY-MM-DD hh:mm:ss"}- {label: "Tags", name: "tags", widget: "string"}- {label: "Body", name: "body", widget: "markdown"}

可以参考我的仓库文件,https://github.com/elfgzp/elf...

在 netlify 配置好你的仓库

在使用 Github 账号登录了 netlify 后,点击 「New site from Git」,如果搜索不到的话记得给你的 netlify 授权访问你的仓库。

create_a_new_site

跟着指引创建,注意 deploy 这个部分如果你有别的 CI 可以将他的 build command 去掉。

create_a_new_site_2

创建完成后,你就会在你的网站列表里面看到你的网站了。如果你有自己的域名,需要到 Site Settings > Domain Management 设置你的个人域名。

domain_management

配置 Oauth App

上面几个步骤完成后,将修改 push 到仓库,你已经可以在你的 admin 页面看到一些东西了。

login

但是这个时候你点击登录肯定是登录不了的,我们还需要配置一个 Oauth App。

首先打开你的 Github 页面,依次按步骤 Settings > Developer settings > Oauth Apps > New Oauth App

按照下图填好你的 Blog 信息,注意 Authorization callback URL 需要填 https://api.netlify.com/auth/done

oauth_app_1

然后复制好你的 Oauth Client IDOauth Client Secret

oauth_app_2

打开 netlifySite Settings > Access control > Oauth - install provider,将复制的信息粘贴进去。

oauth_app_3

完成上面的步骤就大功告成了,你就可以登录你的 Blog Admin 管理你的文章了。

使用技巧

这里有一些使用的技巧想分享一下。

新建一个 CMS 分支用来打草稿

因为本人加了 CI 所以 pushmaster 之后就会更新了,这样就不能打草稿了,所以我开了一个 cms 的分支。文章保存后都会 commit 到这个分支上,等你需要发布的时候在提交 PRmaster

backend:name: githubbranch: cms # 默认是 master 分支

Markdown 效果预览

netlifycms 的 Markdown 预览非常的丑,我直接把他关了,代替预览的方案就是切换编辑框的 Rich TextMarkdown 模式。

在文章中添加图片

肯定有读者注意到了在增加了 ![]() 的 Markdown 图片标签后,切换到 Rich Text 就可以选择上传图片了。

总结

以上就是为 Github 增加 CMS 的解决方案,如果有什么问题或者有更好的解决方案,可以在下方留言。

如何为你的 Github 博客添砖加瓦相关推荐

  1. GitHub 博客-- Jekyll--代码高亮,Liquid 转义字符

    此文首发于我的个人博客:GitHub 博客-- Jekyll–代码高亮,Liquid 转义字符 - zhang0peter的个人博客 转载请注明 在使用Jekyll搭建了自己的 GitHub博客后,想 ...

  2. 实现在CentOS7环境下搭建个人github博客

    实现在CentOS7环境下搭建个人github博客 主机要求:必须是centos环境版本可以不一样,假如你用的是其他版本的linux系统,只不过是命令不太一样. Tips:这里提前说下,对于Ubunt ...

  3. 如何把自己github博客配置到一个腾讯云购买的自定义域名上

    到腾讯云上购买一个域名,通过实名认证. 我购买的域名为jerrywang.club: 点击解析超链接,添加两条类型为CNAME的记录,值指向你自己的github博客url,我的是i042416.git ...

  4. Github博客地址

    欢迎访问我的Github博客: J.R.Smith_blog 转载于:https://www.cnblogs.com/yuguangchuan/p/5042934.html

  5. Python实现自动推本地github博客到远程仓库

    Python实现自动推本地github博客到远程仓库 以前的简单版本 通过python中的os模块操作系统命令 详情可参考:Python实现一行代码推本地git到远程仓库 升级版本 本次加入了监听文件 ...

  6. 利用Octopress搭建一个Github博客

    小引 Octopress是利用Jekyll博客引擎开发的一个博客系统,生成的静态页面能够很好的在github page上展现.号称是hacker专属的一个博客系统(A blogging framewo ...

  7. Hexo+Github: 博客网站搭建完全教程(看这篇就够了)

    本篇教程首次发布在个人博客:sunhwee.com,想要获得最佳阅读体验,欢迎前往,建议用电脑查看教程文档. 文章目录 阅读须知 博客开源 前言 第一部分 搭建 Hexo搭建步骤 1. 安装Git 2 ...

  8. Github博客+腾讯云域名的快捷绑定方案

    为方便您的阅读,可戳以下蓝色字体快速跳转到详细绑定方案! ↓↓↓↓↓↓↓↓ 传送门 01 前情提要 02 绑定方案 03 欢迎来逛 01 前情提要 我们都知道,要想搭建一个网站,我们至少需要三个要素. ...

  9. github博客自动同步到gitee(保姆级教程)

    github博客自动同步到gitee(保姆级教程) 前言: 由于国内网访问github实在太慢!虽然在公司可以连接外网访问还算可以,但是回学校想看看博客或者分享给别人的时候经常会崩掉!于是我想可不可以 ...

最新文章

  1. Load 方法 暨 程序的加载顺序
  2. STM32 基础系列教程 8 - 互补PWM
  3. dataset存入mysql_将dataset写入数据库
  4. 在Red Hat 4 AS U7上安装oracle10gR2
  5. Java == 与 equals 的不同
  6. 关于node.js 和vue.js的安装、卸载、浏览器测试问题?
  7. jQuery 图表插件 jqChart 使用
  8. [Android] 浅析总结 AS 中 Gradle 配置运行
  9. c语言mud文字武侠游戏,文字武侠mud游戏,纯文字武侠mud游戏手机版预约 v1.0-手游汇...
  10. 贝塞尔方程与贝塞尔函数学习笔记
  11. 【面试指南】如何看待你的竞争对手30k,而你却3k?想要高薪,我们也要学会拧螺丝、造飞机的能力
  12. 网站服务器记录攻击日志ctf,通过网站日志分析sql注入攻击的痕迹
  13. 中标麒麟neokylin linux advanced server 7update6 GUI server安装配置pyqt5运行环境说明
  14. ipad pro能用python编程吗_涨知识!iPad还可以运行Python代码
  15. u盘启动会进入w ndows安装程序,u启动一键u盘安装Ghost Win7系统教程_u启动
  16. 身份证号码校验算法(附Python代码)
  17. 爬虫之旅(二):爬取b站搜索数据
  18. 微信机器人_微信聊天消息记录拦截分析
  19. 关于数据导出成excel表
  20. matlab倒谱法基音周期,语音学习笔记1------matlab实现自相关函数法基音周期提取...

热门文章

  1. 通过飞行CALL找到BT飞行偏移 和飞行状态偏移
  2. Inside ASP.NET 2.0 – Controls Model(转载)
  3. Delphi下的GDI+编程[2] DrawLine - 绘制直线
  4. stm32_can错误中断 清除重点
  5. C++ Primer 5th笔记(chap 18 大型程序工具)函数 try 语句块与构造函数
  6. C++ Primer 5th笔记(9)chapter9 顺序容器
  7. buuctf 文件中的秘密
  8. 思考: 什么时候需要disable MMU/i-cache/d-cache?
  9. [专栏目录]-环境搭建安装问题笔记目录
  10. 升级python版本_升级python版本和环境