初始版本
diff --git a/themes/bootstrap-blog/layout/_partial/archive-post.ejs b/themes/bootstrap-blog/layout/_partial/archive-post.ejs
new file mode 100644
index 0000000..e74aed2
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/archive-post.ejs
@@ -0,0 +1,6 @@
+<article class="archive-article archive-type-<%= post.layout %>">
+  <header class="archive-article-header">
+    <%- partial('post/title', {class_name: 'archive-article-title'}) %>
+    <%- partial('post/date', {class_name: 'archive-article-date', date_format: 'MMMM Do'}) %>
+  </header>
+</article>
diff --git a/themes/bootstrap-blog/layout/_partial/archive.ejs b/themes/bootstrap-blog/layout/_partial/archive.ejs
new file mode 100644
index 0000000..cdda897
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/archive.ejs
@@ -0,0 +1,33 @@
+<% if (pagination == 2){ %>
+  <% page.posts.each(function(post){ %>
+    <%- partial('article', {post: post, index: true}) %>
+  <% }) %>
+<% } else { %>
+  <% var last; %>
+  <% page.posts.each(function(post, i){ %>
+    <% var year = post.date.year(); %>
+    <% if (last != year){ %>
+      <% if (last != null){ %>
+        </div></section>
+      <% } %>
+      <% last = year; %>
+      <section class="archives-wrap">
+        <div class="archive-year-wrap">
+          <a href="<%- url_for(config.archive_dir + '/' + year) %>" class="archive-year"><%= year %></a>
+        </div>
+        <div class="archives">
+    <% } %>
+    <%- partial('archive-post', {post: post, even: i % 2 == 0}) %>
+  <% }) %>
+  <% if (page.posts.length){ %>
+    </div></section>
+  <% } %>
+<% } %>
+<% if (page.total > 1){ %>
+  <div id="page-nav">
+    <%- bs_paginator({
+      prev_text: '<i class="fa fa-chevron-left"></i> Prev',
+      next_text: 'Next <i class="fa fa-chevron-right"></i>'
+    }) %>
+  </div>
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/article.ejs b/themes/bootstrap-blog/layout/_partial/article.ejs
new file mode 100644
index 0000000..ccc57d7
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/article.ejs
@@ -0,0 +1,54 @@
+<article id="<%= post.layout %>-<%= post.slug %>" class="article article-type-<%= post.layout %>" itemscope itemprop="blogPost">
+
+  <header class="article-header">
+    <%- partial('post/title', {class_name: 'article-title'}) %>
+  </header>
+
+  <div class="article-meta">
+    <%- partial('post/date', {class_name: 'article-date', date_format: null}) %>
+    <% if (post.author){ %><div class="article-author"><%= post.author %></div><% } %>
+    <%- partial('post/category') %>
+  </div>
+  <div class="article-inner">
+
+    <div class="article-entry" itemprop="articleBody">
+      <% if (post.excerpt && index){ %>
+        <%- post.excerpt %>
+        <% if (theme.excerpt_link){ %>
+          <p class="article-more-link">
+            <a class="btn btn-primary" href="<%- url_for(post.path) %>#more"><%= theme.excerpt_link %></a>
+          </p>
+        <% } %>
+      <% } else { %>
+        <%- post.content %>
+      <% } %>
+    </div>
+
+    <% if (!(post.excerpt && index)){ %>
+      <%- partial('post/gallery') %>
+    <% } %>
+
+    <footer class="article-footer">
+      <a data-url="<%- post.permalink %>" data-id="<%= post._id %>" class="article-share-link">
+        <i class="fa fa-share"></i> Share
+      </a>
+      <% if (post.comments && config.disqus_shortname){ %>
+        <a href="<%- post.permalink %>#disqus_thread" class="article-comment-link">
+          <i class="fa fa-comment"></i> Comments
+        </a>
+      <% } %>
+      <%- partial('post/tag') %>
+    </footer>
+  </div>
+  <% if (!index){ %>
+    <%- partial('post/nav') %>
+  <% } %>
+</article>
+
+<% if (!index && post.comments && config.disqus_shortname){ %>
+<section id="comments">
+  <div id="disqus_thread">
+    <noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
+  </div>
+</section>
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/footer.ejs b/themes/bootstrap-blog/layout/_partial/footer.ejs
new file mode 100644
index 0000000..05a90df
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/footer.ejs
@@ -0,0 +1,8 @@
+<footer class="blog-footer">
+  <div class="container">
+    <div id="footer-info" class="inner">
+      &copy; <%= date(new Date(), 'YYYY') %> <%= config.author || config.title %><br>
+      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
+    </div>
+  </div>
+</footer>
diff --git a/themes/bootstrap-blog/layout/_partial/google-analytics.ejs b/themes/bootstrap-blog/layout/_partial/google-analytics.ejs
new file mode 100644
index 0000000..84e75f0
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/google-analytics.ejs
@@ -0,0 +1,14 @@
+<% if (theme.google_analytics){ %>
+<!-- Google Analytics -->
+<script type="text/javascript">
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ga('create', '<%= theme.google_analytics %>', 'auto');
+ga('send', 'pageview');
+
+</script>
+<!-- End Google Analytics -->
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/head.ejs b/themes/bootstrap-blog/layout/_partial/head.ejs
new file mode 100644
index 0000000..45c6d8c
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/head.ejs
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <%
+  var title = page.title;
+
+  if (is_archive()){
+    title = 'Archives';
+
+    if (is_month()){
+      title += ': ' + page.year + '/' + page.month;
+    } else if (is_year()){
+      title += ': ' + page.year;
+    }
+  } else if (is_category()){
+    title = 'Category: ' + page.category;
+  } else if (is_tag()){
+    title = 'Tag: ' + page.tag;
+  }
+  %>
+  <title><% if (title){ %><%= title %> | <% } %><%= config.title %></title>
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+  <%- open_graph({twitter_id: theme.twitter_id, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %>
+  <% if (theme.rss){ %>
+    <link rel="alternate" href="<%- theme.rss %>" title="<%= config.title %>" type="application/atom+xml">
+  <% } %>
+  <% if (theme.favicon){ %>
+    <link rel="icon" href="<%- theme.favicon %>">
+  <% } %>
+  <% if (config.highlight.enable){ %>
+    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
+  <% } %>
+
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
+
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" integrity="sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+" crossorigin="anonymous">
+
+  <%- css('css/styles') %>
+  <%- partial('google-analytics') %>
+</head>
diff --git a/themes/bootstrap-blog/layout/_partial/header.ejs b/themes/bootstrap-blog/layout/_partial/header.ejs
new file mode 100644
index 0000000..7d44c5b
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/header.ejs
@@ -0,0 +1,6 @@
+<div class="blog-header">
+  <h1 class="blog-title"><%= config.title %></h1>
+  <% if (theme.subtitle){ %>
+    <p class="lead blog-description"><%= theme.subtitle %></p>
+  <% } %>
+</div>
diff --git a/themes/bootstrap-blog/layout/_partial/inline-scripts.ejs b/themes/bootstrap-blog/layout/_partial/inline-scripts.ejs
new file mode 100644
index 0000000..0465772
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/inline-scripts.ejs
@@ -0,0 +1,26 @@
+<% if (config.disqus_shortname){ %>
+<script>
+  var disqus_shortname = '<%= config.disqus_shortname %>';
+  <% if (page.permalink){ %>
+  var disqus_url = '<%= page.permalink %>';
+  <% } %>
+  (function(){
+    var dsq = document.createElement('script');
+    dsq.type = 'text/javascript';
+    dsq.async = true;
+    dsq.src = '//' + disqus_shortname + '.disqus.com/<% if (page.comments) { %>embed.js<% } else { %>count.js<% } %>';
+    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+  })();
+</script>
+<% } %>
+
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script>
+
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
+
+<% if (theme.fancybox){ %>
+  <%- css('fancybox/jquery.fancybox') %>
+  <%- js('fancybox/jquery.fancybox.pack') %>
+<% } %>
+
+<%- js('js/script') %>
diff --git a/themes/bootstrap-blog/layout/_partial/masthead.ejs b/themes/bootstrap-blog/layout/_partial/masthead.ejs
new file mode 100644
index 0000000..fb0f73c
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/masthead.ejs
@@ -0,0 +1,34 @@
+<nav class="navbar navbar-inverse">
+  <div class="container">
+    <!-- Brand and toggle get grouped for better mobile display -->
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-menu-navbar" aria-expanded="false">
+        <span class="sr-only">Toggle navigation</span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <% if (theme.navbar_brand){ %>
+        <a class="navbar-brand" href="<%- config.root %>"><%- theme.navbar_brand %></a>
+      <% } %>
+    </div>
+
+    <!-- Collect the nav links, forms, and other content for toggling -->
+    <div class="collapse navbar-collapse" id="main-menu-navbar">
+      <ul class="nav navbar-nav">
+        <% for (var i in theme.menu){ %>
+          <li><a class="<%= is_current(theme.menu[i]) ? 'active' : '' %>"
+                 href="<%- url_for(theme.menu[i]) %>"><%= i %></a></li>
+        <% } %>
+      </ul>
+
+      <!--
+      <ul class="nav navbar-nav navbar-right">
+        <% if (theme.rss){ %>
+          <li><a href="<%- theme.rss %>" title="RSS Feed"><i class="fa fa-rss"></i></a></li>
+        <% } %>
+      </ul>
+      -->
+    </div><!-- /.navbar-collapse -->
+  </div><!-- /.container-fluid -->
+</nav>
diff --git a/themes/bootstrap-blog/layout/_partial/post/category.ejs b/themes/bootstrap-blog/layout/_partial/post/category.ejs
new file mode 100644
index 0000000..be3fba3
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/post/category.ejs
@@ -0,0 +1,10 @@
+<% if (post.categories && post.categories.length){ %>
+  <div class="article-category">
+    <%- list_categories(post.categories, {
+      show_count: false,
+      class: 'article-category',
+      style: 'none',
+      separator: ' / '
+    }) %>
+  </div>
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/post/date.ejs b/themes/bootstrap-blog/layout/_partial/post/date.ejs
new file mode 100644
index 0000000..0751a1e
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/post/date.ejs
@@ -0,0 +1,3 @@
+<div class="article-datetime">
+  <a href="<%- url_for(post.path) %>" class="<%= class_name %>"><time datetime="<%= date_xml(post.date) %>" itemprop="datePublished"><%= date(post.date, date_format) %></time></a>
+</div>
diff --git a/themes/bootstrap-blog/layout/_partial/post/gallery.ejs b/themes/bootstrap-blog/layout/_partial/post/gallery.ejs
new file mode 100644
index 0000000..fa6e150
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/post/gallery.ejs
@@ -0,0 +1,11 @@
+<% if (post.photos && post.photos.length){ %>
+<div class="row article-gallery">
+  <% post.photos.forEach(function(photo, i){ %>
+    <div class="col-xs-6 col-md-4">
+      <a class="thumbnail image-link" href="<%- url_for(photo) %>" rel="gallery_<%= post._id %>">
+        <img src="<%- url_for(photo) %>" itemprop="image">
+      </a>
+    </div>
+  <% }) %>
+</div>
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/post/nav.ejs b/themes/bootstrap-blog/layout/_partial/post/nav.ejs
new file mode 100644
index 0000000..27c6aa0
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/post/nav.ejs
@@ -0,0 +1,20 @@
+<% if (post.prev || post.next){ %>
+<ul id="article-nav" class="nav nav-pills nav-justified">
+  <% if (post.next){ %>
+  <li role="presentation">
+    <a href="<%- url_for(post.next.path) %>" id="article-nav-older" class="article-nav-link-wrap">
+      <i class="fa fa-chevron-left pull-left"></i>
+      <span class="article-nav-link-title"><%= post.next.title || '(no title)' %></span>
+    </a>
+  </li>
+  <% } %>
+  <% if (post.prev){ %>
+  <li role="presentation">
+    <a href="<%- url_for(post.prev.path) %>" id="article-nav-newer" class="article-nav-link-wrap">
+      <span class="article-nav-link-title"><%= post.prev.title || '(no title)' %></span>
+      <i class="fa fa-chevron-right pull-right"></i>
+    </a>
+  </li>
+  <% } %>
+</ul>
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/post/tag.ejs b/themes/bootstrap-blog/layout/_partial/post/tag.ejs
new file mode 100644
index 0000000..35ded20
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/post/tag.ejs
@@ -0,0 +1,6 @@
+<% if (post.tags && post.tags.length){ %>
+  <%- list_tags(post.tags, {
+    show_count: false,
+    class: 'article-tag'
+  }) %>
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/post/title.ejs b/themes/bootstrap-blog/layout/_partial/post/title.ejs
new file mode 100644
index 0000000..f5ea7e9
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/post/title.ejs
@@ -0,0 +1,16 @@
+<% if (post.link){ %>
+  <h1 itemprop="name">
+    <a class="<%= class_name %>" href="<%- url_for(post.link) %>"
+       target="_blank" itemprop="url"><%= post.title || '(no title)' %></a>
+  </h1>
+<% } else { %>
+  <% if (index){ %>
+    <h1 itemprop="name">
+      <a class="<%= class_name %>" href="<%- url_for(post.path) %>"><%= post.title || '(no title)' %></a>
+    </h1>
+  <% } else { %>
+    <h1 class="<%= class_name %>" itemprop="name">
+      <%= post.title || '(no title)' %>
+    </h1>
+  <% } %>
+<% } %>
diff --git a/themes/bootstrap-blog/layout/_partial/sidebar.ejs b/themes/bootstrap-blog/layout/_partial/sidebar.ejs
new file mode 100644
index 0000000..2ad43f4
--- /dev/null
+++ b/themes/bootstrap-blog/layout/_partial/sidebar.ejs
@@ -0,0 +1,3 @@
+<% theme.widgets.forEach(function(widget){ %>
+  <%- partial('_widget/' + widget) %>
+<% }) %>