介绍我为 Hexo 编写的 Freemind 主题。
Freemind 是我为 Hexo 编写的一个开源主题。
特点
Freemind 和 HaHack 所用的主题的基本相似,特点在于:
Bootstrap - 基于 Bootstrap 3.1.1 ;
标签插件 - 专门编写了一系列的 Bootstrap tag plugins ,以最大程度的发挥 Bootstrap 的威力。包括:
textcolor - 插入一段带有特殊颜色标记的文本;
button - 插入一个按钮,并允许为其指定超链接、文本及颜色;
label - 插入一个标签,并为其指定文本和样式;
badge - 插入一个徽章,并为其指定文本;
alert - 插入一段警报文本信息,并为其指定样式。
本地搜索 - 自带一个 本地搜索引擎 ,基于我的另一个项目 hexo-generator-search ;
颜色主题 - 内置多套颜色主题。总有一套符合你的口味;
文章置顶 - 将重要文章置于首页顶部;
内置评论系统 - 内置的评论系统,基于我的另一个项目 comment.js 。
安装
安装主题:
1 $ git clone https://github.com/wzpan/hexo-theme-freemind.git themes/freemind
安装 hexo-tag-bootstrap (可选):
1 $ npm install hexo-tag-bootstrap --save
安装 hexo-generator-search (可选):
1 $ npm install hexo-generator-search --save
创建页面
Freemind 预先定义了 Categories(分类)、Tags(标签) 和 About(关于)页面,要使用它们,你需要先在你的博客的 source
目录中添加相应页面。
例如,要创建 Categories
页面,你可以在 source/categories/
目录(如果没有这个目录,就新建一个)下创建一个 index.html
文件,内容如下:
1 2 3 title: Categories layout: categories ---
Tags
页面和 About
页面与此类似,不同的是 layout 分别为 tags 和 page。
如果你依然不太明白如何创建这几个文件,可以参考 Freemind 的 Demo 站点的
source 目录。
启用
修改 _config.yml
文件里的 theme
选项为 freemind
即可。
更新
1 2 $ cd themes/freemind $ git pull
配置
Freemind 的配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 slogan: Yet another bootstrap theme. menu: - title: Archives url: archives intro: All the articles. icon: fa fa-archive - title: Categories url: categories intro: All the categories. icon: fa fa-folder - title: Tags url: tags intro: All the tags. icon: fa fa-tags - title: About url: about intro: About me. icon: fa fa-user links: - title: My Github url: http://www.github.com/wzpan intro: My Github account. icon: fab fa-github - title: My LinkedIn url: http://www.linkedin.com/pub/weizhou-pan/5b/8a0/161 intro: My Linkin account. icon: fa fa-linkedin widgets: - search - recent_comments - category - tagcloud - recent_posts - links rss: atom.xml favicon: favicon.png fancybox: true duoshuo_shortname: # analytics google_analytics: enable: false siteid: baidu_tongji: enable: false siteid: # Search swiftype_key: # share button bdshare: true jiathis: false # built-in comment system comment_js: type: "github" user: "wzpan" repo: "hexo-theme-freemind-blog" client_id: "xxxxxx" client_secret: "xxxxxx" count: 5
其中:
slogan - 修改显示在博客首页的个性签名;
theme - 要使用的颜色主题;
menu - 导航菜单;
links - 修改 links 小挂件的推荐链接;
widgets - 在博客边栏显示的挂件列表;
rss - RSS 链接;
fancybox - 是否启用 Fancybox ;
duoshuo_shortname - 多说ID,如果希望使用多说取代 Disqus 做评论系统;
analytics - 统计 ID 。支持 Google Analytics 和百度统计;
swiftype_key - Swifttype key 。如果希望使用自建的本地搜索引擎,则可以留空或注释掉这句话。
swiftype_key - Swifttype 站内搜索的 key 。如果希望使用内置的搜索引擎,则可以保留为空,而不去配置它。
bdshare - 百度分享;
jiathis - jiathis分享;
comment_js - comment.js 的配置
type
: 要作为后端的站点。目前支持 Github
和 OSChina
。
user
: 您的 Github 用户名。
repo
: 您用作评论后端的仓库名。
client_id
(可选但建议):您注册的 OAuth App 的 client id。
client_secret
(可选但建议):您注册的 OAuth App 的 client secret。
count
(可选):列表的最大长度。
如果希望使用 disqus ,则应该在站点的
根 _config.yml 中设置:
1 2 # Disqus disqus_shortname:
Front-Matter
Freemind 主题额外提供了一些新的 front-matter 的选项,利用这些选项可以更好的装饰你的文章。
description - 在文章顶部插入一段简短的摘要信息
feature - 为文章添加一张 feature 图片,这张图片将展示在主页的文章列表中
toc - 生成 table of contents
top - 是否要将本文置顶。
issue_id - comment.js 的 issue_id
,用于显式地指定 Github 上的哪个 issue 与本文相对应。通常情况下你并不需要手动设置这个,因为 comment.js 会根据文章标题自动寻找匹配的 issue 。当文章没有和你要的 issue 对应的时候你才需要设置它。
示例:
1 2 3 4 5 6 7 8 title: Tag Plugins date: 2014-03-16 10:17:16 tags: plugins categories: Docs description: Introduce tag plugins in freemind. feature: images/tag-plugins/plugins.jpg toc: true ---
Q&A
Q
Freemind 这名字有何含义?
A
Freemind 命名出自 [Pluskid](http://freemind.pluskid.org/) 的博客。这个主题很大程度借鉴了他的博客的布局和样式。
Q
现在都有这么多 Hexo 的主题了,为啥又要写一个?
A
实际上我这个主题在我使用 Hexo 前已经创建了。我在半年前将博客迁移到 Hexo ,因为我已经习惯了原来的主题,所以顺便把主题也移植了过来。
Q
为啥还用 CSS 写样式,而不用更高端大气的 stylus ?
A
嗯,stylus 的确很酷。不过我不想再把以前的样式重写成 stylus 了。所以暂时先保留原来的 CSS。
Q
你的博客不错用,如何贡献?
A
有人喜欢我的东西我就很高兴咯。如果想做出贡献,你可以:
为本主题的 Github 项目 加颗星;
Fork 这个项目,尽情DIY,然后给我发 pull request;
这个项目遵循 MIT 开源协议,你可以在本主题基础上创建你的主题。不过如果你能在你的主题页面中声明主题基于 Freemind 就再好不过了。
Q
[你自己的博客](http://hahack.com) 看起来跟这个主题有点不一样呀,为什么?
A
是的。我在开源这个主题前做了些简化。不是所有人都需要我的博客里的一些特性,比如 [Wiki](http://hahack.com/wiki) 页面。
Q
如何指定某些页面生成 ToC(Table of Contents) ?
A
在文章头部添加 `toc: true` 。
Q
从哪里可以找到 Freemind 的 Demo 站点的的几篇文档的 Markdown 源码?
A
在本站点的 [源码仓库](https://github.com/wzpan/hexo-theme-freemind-blog) 。
Q
为啥我在插入 bootstrap 插件后总是自动折行?
A
这个问题是你的 Markdown 设置引起的。解决办法是在你的 Hexo 的 _config.yml 文件中禁用 Markdown 的 `breaks` 选项:
1 2 3 4 5 6 7 8 9 10 # Markdown ## https://github.com/chjj/marked markdown: gfm: true pedantic: false sanitize: false tables: true breaks: false smartLists: true smartypants: true