Pinvon's Blog

所见, 所闻, 所思, 所想

Github pages + Org mode

Org-Page

介绍

org-page是一个基于org-mode的静态网站生成器。提供了以下功能:

  • 使用git管理org文件和html文件
  • 可多次编辑
  • 支持分类
  • 支持标签
  • 支持RSS
  • 支持搜索
  • 定制主题
  • 可评论
  • 网站流量统计
  • 网站预览
  • 高度定制

工作流程

  • 指定一个git仓库,用source分支管理org文件,用master分支管理html文件。仓库可以手动创建,也可以使用org-page的 op/new-repository 命令创建。
  • 指定一个基本的提交,默认是最近一次提交。org-page将从source分支读取最近的改变,并标记它们,用于发布文章。
  • 准备工作。
  • 发布改变的内容。由于删除文章这种操作不常有,所以org-page不支持。
  • 更新所有的分类和标签。

用法

在doc/quick-guide.org中有详细用法。

安装

从melpa上安装org-page

配置

如果手动安装,则将配置信息放在.emacs文件中。

(require 'org-page)
(setq op/repository-directory "~/Blog")
(setq op/site-domain "http://pinvondev.github.io/")
;;; for commenting, you can choose either disqus, duoshuo or hashover
;;; (setq op/personal-disqus-shortname "your_disqus_shortname")
;;; (setq op/personal-duoshuo-shortname "your_duoshuo_shortname")
(setq op/hashover-comments t)
;;; the configuration below are optional
;;; (setq op/personal-google-analytics-id "your_google_analytics_id")
(setq op/personal-github-link "https://github.com/pinvondev")
(setq op/site-main-title "Pinvon's Blog")

使用 op/new-repository 指定配置中的文件夹为本地仓库。

使用 op/new-post 写文章。

在发布文章之前,先为本地仓库关联远程仓库。

git remote add origin git@pinvondev.github.com/pinvondev/pinvondev.github.io.git

发布

执行以下代码:

(op/do-publication nil "HEAD^1" "~/org-pub/" nil)

(op/do-publication)

M-x op/do-publication <Enter> 但是这样做之前,需要把org文件上传到github。

预览

M-x op/do-publication-and-preview-site <Enter> ,网站将在 ~/.op-tmp 中发布。

注意点

  • 切换到source分支,编辑.org文件,上传到github。
  • 然后op/do-publication,op/do-publication会自动切换到master分支。
  • 如果没有上传html文件到github,则手动上传。

无法上传的情况

在正确配置git的情况下,如果source分支已上传,而op/do-publication时没上传成功,则将仓库根目录下 .git 里面的所有文件都赋给当前用户所有操作权限。

sudo chown -R pinvon:pinvon ./.git
cd .git
sudo chown -R pingon:pinvon *

定制

生成页面目录

#+OPTIONS:     H:3 num:nil toc:nil \n:nil ::t |:t ^:nil -:nil f:t *:t <:t
;;; 将toc后的nil改成t即可

图片大小调整

  1. 将org-mode中设置的显示原图大小取消。
(setq org-image-actual-width nil)
  1. 在org-mode中,自己填入属性值。
#+CAPTION: 图片标题
#+ATTR_HTML: :width 100
#+ATTR_LATEX: :width 100in

EGO

概述

EGO 是由 org-page 和 org-webpage 派生出来的项目.

安装

从 melpa 安装.

从 github 安装. git clone https://github.com/emacs-china/EGO.git

如果手动安装, 则需要再安装 mustache, 这个可以直接从 melpa 中搜索安装.

如果使用 ego 时, 出现 require(ht) 这种错误, 则到网上下载一个 ht.el 文件, 放到 EGO 目录下.

设置

参考配置:

;; the following is only needed if you install EGO manually
(add-to-list 'load-path "path/to/EGO")

(require 'ego)

(ego-add-to-alist 'ego-project-config-alist
               `(("emacs-china" ; 站点工程的名字
                 :repository-directory "~/github/emacs-china.github.io" ; 站点的本地目录
                 :site-domain "http://emacs-china.github.io/" ; 站点的网址
                 :site-main-title "EMACS-CHINA" ; 站点的标题
                 :site-sub-title "=============>集思广益" ; 站点的副标题
                 :theme (default) ; 使用的主题
                 :summary (("years" :year :updates 10) ("authors" :authors) ("tags" :tags)) ; 导航栏的设置,有 category 和 summary 两种
                 :source-browse-url ("Github" "https://github.com/emacs-china") ; 你的工程源代码所在的位置
                 :personal-disqus-shortname "emacs-china" ; 使用 disqus 评论功能的话,它的短名称
                 ;; :personal-duoshuo-shortname "emacs-china" ; 使用 多说 评论功能的话,它的短名称(由于多说已经关闭,这里就此废置)
                 :confound-email nil ; 是否保护邮件名称呢?t 是保护,nil 是不保护,默认是保护
                 :ignore-file-name-regexp "readme.org" ; 有些不想发布成 html 的 org 文件(但是又想被导入 git 进行管理),可以用这种正则表达的方式排除
                 :web-server-docroot "~/webRoot/emacs-china.github.io" ; 本地测试的目录
                 :web-server-port 5432); 本地测试的端口

                 ;; 你可以在此添加更多的站点设置
               ))

新建文章

M-x ego-new-post

测试单独文章的 html 页面

M-x ego-test-current-page

Comments

使用 Disqus 评论
comments powered by Disqus