在Octopress中添加标签
Octopress默认只有分类没有标签,于是在网上找为octopress添加标签的方式并且整理记录下来。
下载
首先,下载需要的插件: octopress-tag-pages 和 octopress-tag-cloud。使用git clone或者直接下载压缩包都行。
安装
安装其实很简单,只需要将下面几个文件复制到octopress中相应的目录中即可:
octopress-tag-pages中的
- plugins/tag_generator.rb
- source/_layouts/tag_index.html
- source/_includes/custom/tag_feed.xml
octopress-tag-cloud中的
- plugins/tag_cloud.rb
- source/_includes/custom/asides/tags.html(如果需要汉化,直接修改这里面的内容即可)
例如,把octopress-tag-pages中的plugins/tag_generator.rb复制到octopress安装目录下的plugins文件夹中.
最后,修改_config.xml中的default_asides,将custom/asides/tags.html添加进去:
至此,已经安装完毕。可是执行 rake generate
却发生了错误(不是所有人都会遇到)
排错
第一个错误: comparison of Array with Array failed in _layouts/page.html
在tag_cloud.rb中第74行是这么写的:
weighted = weighted[0,@limit]
应该就是取指定数目的标签。如果你的标签数量少于 @limit
,那么就会报错。所以我们修改第74行为:
|
|
同样的,将第95行修改为:
这时再执行 rake generate
就不会报错了。但是又出现了几条警告:
又一个警告:Layout ‘nil’ requested in tags/标签名/atom.xml does not exist.
把 tag_feed.xml
里面的 nil
改为 null
:
基本不会遇见的问题
如果刚刚开始使用Octopress,只有一两篇博客,而且所有的标签的博客数量都一样,那么就会发现左侧的标签的源码是这样:
将tag_cloud.rb第69行改为:
这时就可以正常使用了。
配置
中文化
如果用户点击边栏上的标签,会跳转到标签页。而标签页的默认标题为: Tag: 标签名
.
如果想将其中的 Tag:
换成中文的,可以在 _config.yml
中添加下面的内容:
重新生成一下,标题就会变成 标签: 标签名
配置边栏中标签的数量和样式
直接修改 source/_includes/custom/asides/tags.html
中的 limit
后面的数字即可,默认标签的样式是每一个标签单独一行,可以修改为多个标签连续显示 style: para
:
在文章列表中显示标签
将octopress-tag-pages插件中的 source/_includes/archive_post.html
复制到octopress中的 source/_includes/
目录下,该文件本来已经有了,直接覆盖就可以。
或者如果你已经修改过octopress中的 source/_includes/archive_post.html
文件了,那么可以参考插件中的文件,直接将
复制到octopress下的文件中的特定位置即可。
在博客下面或者上面显示标签
参考octopress-tag-pages插件中的source/_layouts目录中的post.html,修改octopress下的post.html,比如我的post.html中相应的部分是这样的:
标签的的html文件里默认是不会带着 标签:
前缀的,打开 source/_includes/post/tags.html
文件,加上文字
同样分类的html文件默认也不会带着 分类:
前缀的,打开 source/_includes/post/categories.html
文件,加上文字
new_post 模板修改
打开 Gemfile
文件,插入 post.puts "tags: []"
这一句,然后在使用 new_post
命令生成一篇新的文章时会在开头默认插入tags