Octopress目录结构
###Octopress博客目录结构
octopress博客的source目录结构大致如下:
source/
├── _attachments
├── _includes
│ ├── asides
│ ├── custom
│ │ └── asides
│ └── post
├── _layouts
├── _nav_menu_items
├── _pages
├── _posts
├── blog
│ └── archives
├── font
├── images
│ ├── 2012
│ │ ├── 01
│ │ ├── 02
│ ├── 2013
│ │ └── 01
│ ├── fancybox
│ └── social
├── javascripts
│ ├── asides
│ └── libs
├── jsccp
└── stylesheets
├── bootstrap
└── syntax
当使用rake generate时,source的_post目录中的markdown文件会被编译成html文件,并拷贝到public目录下,public目录结构与source目录结构一致,里面的内容为最终的静态页面。一般都是先rake generate生成静态页面,然后通过rake preview进行本地预览,如果显示正常,则rake deploy部署到github上。如果特别熟练,也可以直接生成静态页面并部署,不需要本地预览。可以采用rake gen_deploy一步进行。
Octopress配置Disqus插件
###添加Disqus插件 看到不少人博客上都有Comments功能,便也想给自己的博客添加上。经过搜寻一番,发现大多用的都是Disqus,而且octopress其实内置了其功能,只是默认没有设置.编辑博客主目录下的config.yml文件即可: $vim _config.yml
找到: #Disqus comments disqus_short_name: disqus_show_comment_count: false
填上自己注册的disqus账号的short name,并将false改成true即可。
注:Disqus一定要和yourname.github.com关联
…我的第一篇博客
几个月前看过Ruby基本语法,也无意中接触了Octopress,便想在GitHub pages上采用Octopress搭建一个属于自己的博客,照着官网提示开始动手实施,不过最后以失败告终。后又忙于其他工作,此事便搁浅。直至最近得空,便又开始着手此事。搭建博客工作再一次展开。
详细搭建过程官方文档写的相当详细,这里不再赘述,请参考:
官网
下面只说我搭建过程中遇到的难题:
我每次都是运行rake deploy时出现问题,也就是博客无法push到github的repository中。
每次都是![rejected] master->master (no-fast-forward)
最后网上找了不少资料,然后自己也细细思考了一番,最后终得以解决。方法如下:
转到deploy目录下,执行$git pull,然后再执行git push origin master即可。
配置文章分类插件
Octopress搭建的博客默认没有文章分类,这肯定让人很不爽,但这个号称Hacker的博客肯定有这功能,便网上搜寻了答案,最终得以解决。方法如下:
###1. 添加category_list插件
代码如下:
module Jekyll
class CategoryListTag < Liquid::Tag
def render(context)
html = ""
categories = context.registers[:site].categories.keys
categories.sort.each do |category|
posts_in_category = context.registers[:site].categories[category].size
category_dir = context.registers[:site].config['category_dir']
category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase)
html << "<li class='category'><a href='/#{category_url}/'>#{category} (#{posts_in_category})</a></li>\n"
end
html
end
end
end
Liquid::Template.register_tag('category_list', Jekyll::CategoryListTag)
将以上代码保存到plugins/category_list_tag.rb中。
这个插件会向liquid注册一个名为category_list的tag,该tag就是以li的形式将站点所有的category组织起来。如果要将category加入到侧边导航栏,需要增加一个aside
2. 添加category到aside中
在source/_include/custom/asides中新建category_list.html文件,并且将以下代码复制到其中:
<section>
<h1>Categories</h1>
<ul id="categories">
{\% category_list %}
</ul>
</section>
其中\是为了显示才添加上的,不然无法正常显示,复制代码时请去掉%前的\。
3. 配置侧边栏
在_config.yml中配置侧边栏,修改其中的default_asides项:
default_asides: [custom/asides/category_list.html, ...]
…