Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

version 0.0.1

  • Loading branch information...
commit 4c18e3c136bea49e3335ab594ae22d999892cf27 0 parents
Jade Dominguez plusjade authored

Showing 44 changed files with 2,558 additions and 0 deletions. Show diff stats Hide diff stats

  1. +6 0 .gitignore
  2. +1 0  404.html
  3. +41 0 README.md
  4. +29 0 Rakefile
  5. +18 0 _config.yml
  6. +34 0 _includes/helpers/categories_list.html
  7. +29 0 _includes/helpers/liquid_raw.html
  8. +37 0 _includes/helpers/pages_list.html
  9. +52 0 _includes/helpers/posts_collate.html
  10. +30 0 _includes/helpers/tags_list.html
  11. +5 0 _includes/production/analytics.html
  12. +75 0 _includes/themes/mark-reid/default.html
  13. +6 0 _includes/themes/mark-reid/page.html
  14. +31 0 _includes/themes/mark-reid/post.html
  15. +60 0 _includes/themes/tom/default.html
  16. +3 0  _includes/themes/tom/page.html
  17. +17 0 _includes/themes/tom/post.html
  18. +4 0 _layouts/default.html
  19. +4 0 _layouts/page.html
  20. +4 0 _layouts/post.html
  21. +38 0 _plugins/debug.rb
  22. +410 0 _posts/core-samples/2011-12-29-jekyll-introduction.md
  23. +10 0 _posts/core-samples/api/2011-11-27-theme-api.md
  24. +65 0 _posts/core-samples/api/2011-11-28-bootstrap-api.md
  25. +38 0 _posts/core-samples/api/2011-11-29-jekyll-liquid-api.md
  26. +172 0 _posts/core-samples/api/2011-11-30-template-data-api.md
  27. +34 0 _posts/core-samples/helpers/2011-9-27-posts-collate.md
  28. +49 0 _posts/core-samples/helpers/2011-9-28-categories-list.md
  29. +43 0 _posts/core-samples/helpers/2011-9-29-pages-list.md
  30. +50 0 _posts/core-samples/helpers/2011-9-30-tags-list.md
  31. +36 0 _posts/core-samples/usage/2011-10-28-deployment-and-hosting.md
  32. +26 0 _posts/core-samples/usage/2011-10-29-configuring-urls.md
  33. +31 0 _posts/core-samples/usage/2011-10-30-jekyll-theming.md
  34. +81 0 _posts/core-samples/usage/2011-10-31-jekyll-quick-start.md
  35. +9 0 archive.html
  36. +549 0 assets/themes/mark-reid/css/screen.css
  37. +60 0 assets/themes/mark-reid/css/syntax.css
  38. +197 0 assets/themes/tom/css/screen.css
  39. +60 0 assets/themes/tom/css/syntax.css
  40. +21 0 categories.html
  41. +45 0 index.md
  42. +21 0 pages.html
  43. +7 0 sitemap.txt
  44. +20 0 tags.html
6 .gitignore
... ... @@ -0,0 +1,6 @@
  1 +_site/*
  2 +
  3 +Thumbs.db
  4 +.DS_Store
  5 +
  6 +!.gitkeep
1  404.html
... ... @@ -0,0 +1 @@
  1 +Sorry this page does not exist =(
41 README.md
Source Rendered
... ... @@ -0,0 +1,41 @@
  1 +# Jekyll-Bootstrap
  2 +
  3 +This is a clean install of the core Jekyll Bootstrap framework you can clone and run your Jekyll blog with.
  4 +
  5 +Jekyll-bootstrap is the quickest and most hassle-free way to get your new Jekyll powered website up and running.
  6 +100% compatible with GitHub pages.
  7 +
  8 +## Usage
  9 +
  10 +For all usage and documentation please see: <http://jekyllbootstrap.com>
  11 +
  12 +## Version
  13 +
  14 +0.0.1 - stable but not versioned.
  15 +
  16 +This version is stable and readily deployable to GitHub Pages and production Jekyll installs.
  17 +However, please expect fast updates that are not backwards compatible with older installs.
  18 +When development reaches 0.1.0, version compatibility between releases will be respected.
  19 +
  20 +## Development
  21 +
  22 +Development is active!
  23 +
  24 +## Contributing
  25 +
  26 +This repository tracks 2 projects:
  27 +
  28 +- **Jekyll-Bootstrap Framework.**
  29 + The framework for which users should clone and build their blog on top of is available in the master branch.
  30 + Please fork and contribute additions to the framework itself here.
  31 +
  32 +- **Jekyll-Bootstrap Documentation Website.**
  33 + The documentation website at <http://jekyllbootstrap.com> is maintained in the gh-pages branch.
  34 + Please fork and contribute documentation additions to this branch only.
  35 +
  36 +The master and gh-pages branch do not share the same ancestry. Please treat them as completely separate git repositories!
  37 +
  38 +
  39 +## License
  40 +
  41 +[Creative Commons](http://creativecommons.org/licenses/by-nc-sa/3.0/)
29 Rakefile
... ... @@ -0,0 +1,29 @@
  1 +require "rubygems"
  2 +require 'rake'
  3 +
  4 +desc "Switch between Jekyll-bootstrap themes."
  5 +task :switch_theme, :theme do |t, args|
  6 + theme_path = File.join(File.dirname(__FILE__), "_includes", "themes", args.theme)
  7 + layouts_path = File.join(File.dirname(__FILE__), "_layouts")
  8 +
  9 + abort("rake aborted: './_includes/themes/#{args.theme}' directory not found.") unless Dir.exists?(theme_path)
  10 + abort("rake aborted: './_layouts' directory not found.") unless Dir.exists?(layouts_path)
  11 +
  12 + Dir.glob("#{theme_path}/*") do |filename|
  13 + puts "Generating '#{args.theme}' layout: #{File.basename(filename)}"
  14 +
  15 + open("#{layouts_path}/#{File.basename(filename)}", 'w') do |page|
  16 + if File.basename(filename, ".html").downcase == "default"
  17 + page.puts "---"
  18 + page.puts "---"
  19 + page.puts "{% assign theme_asset_path = \"/assets/themes/#{args.theme}\" %}"
  20 + else
  21 + page.puts "---"
  22 + page.puts "layout: default"
  23 + page.puts "---"
  24 + end
  25 + page.puts "{% include themes/#{args.theme}/#{File.basename(filename)} %}"
  26 + end
  27 + end
  28 +end # task :switch_theme
  29 +
18 _config.yml
... ... @@ -0,0 +1,18 @@
  1 +# This is the default format.
  2 +# For more see: https://github.com/mojombo/jekyll/wiki/Permalinks
  3 +permalink: /:categories/:year/:month/:day/:title
  4 +auto: true
  5 +pygments: true
  6 +var:
  7 + archive_path: /archive.html
  8 + categories_path : /categories.html
  9 + tags_path : /tags.html
  10 +
  11 +production_url : http://username.github.com # or your custom domain name
  12 +title : My Blog =)
  13 +
  14 +author :
  15 + name : Name Lastname
  16 + email : blah@email.test
  17 + github : username
  18 + twitter : username
34 _includes/helpers/categories_list.html
... ... @@ -0,0 +1,34 @@
  1 +{% comment %}<!--
  2 +The categories_list include is a listing helper for categories.
  3 +Usage:
  4 + 1) assign the 'categories_list' variable to a valid array of tags.
  5 + 2) include helpers/categories_list.html.
  6 + example:
  7 + <ul>
  8 + {% assign categories_list = site.categories %}
  9 + {% include helpers/categories_list.html %}
  10 + </ul>
  11 +
  12 + Notes:
  13 + Categories can be either a Hash of Category objects (hashes) or an Array of category-names (strings).
  14 + The encapsulating 'if' statement checks whether categories_list is a Hash or Array.
  15 + site.categories is a Hash while page.categories is an array.
  16 +
  17 + This helper can be seen in use at: ../_layouts/default.html
  18 +-->{% endcomment %}
  19 +
  20 +{% if categories_list.first[0] == null %}
  21 + {% for category in categories_list %}
  22 + <li><a href="{{ site.var.categories_path }}#{{ category }}-ref">
  23 + {{ category | join: "/" }} <span>{{ site.categories[category].size }}</span>
  24 + </a></li>
  25 + {% endfor %}
  26 +{% else %}
  27 + {% for category in categories_list %}
  28 + <li><a href="{{ site.var.categories_path }}#{{ category[0] }}-ref">
  29 + {{ category[0] | join: "/" }} <span>{{ category[1].size }}</span>
  30 + </a></li>
  31 + {% endfor %}
  32 +{% endif %}
  33 +
  34 +{% assign categories_list = null %}
29 _includes/helpers/liquid_raw.html
... ... @@ -0,0 +1,29 @@
  1 +{% comment%}<!--
  2 +The liquid_raw helper is a way to display raw liquid code, as opposed to parsing it.
  3 +Normally you'd use Liquid's built in 'raw' tag.
  4 +The problem is GitHub Jekyll does not support the current Liquid release.
  5 +GitHub Jekyll supports the deprecated 'literal' tag.
  6 +Using one will break the other if you plan to deploy to GitHub pages.
  7 + see: https://github.com/mojombo/jekyll/issues/425
  8 +
  9 +Since I don't want to mess with Liquid versions, I'll just rewrite the way I
  10 +intend to give liquid examples. It's not an elegant by any means:
  11 +
  12 +Usage:
  13 + 1) Define a 'text' variable with the block of liquid code you intend to display.
  14 + 2) Pass the text variable to include helpers/liquid_raw.html.
  15 +
  16 + example:
  17 + {% capture text %}|.% for tag in tags_list %.|
  18 + <li><a href="|.{ site.var.tags_path }.||.{ tag[0] }.|-ref">|.{ tag[0] }.| <span>|.{tag[1].size}.|</span></a></li>
  19 + |.% endfor %.|
  20 +
  21 + |.% assign tags_list = null %.|{% endcapture %}
  22 + {% include helpers/liquid_raw.html %}
  23 +
  24 + As seen here, you must use "|." and ".|" as opening and closing brackets.
  25 +-->{% endcomment%}
  26 +
  27 +<pre><code>{{text | replace:"|.", "&#123;" | replace:".|", "&#125;" | replace:">", "&gt;" | replace:"<", "&lt;" }}</code></pre>
  28 +
  29 +{% assign text = null %}
37 _includes/helpers/pages_list.html
... ... @@ -0,0 +1,37 @@
  1 +{% comment %}<!--
  2 +The pages_list include is a listing helper.
  3 +Usage:
  4 + 1) assign the 'pages_list' variable to a valid array of pages or posts.
  5 + 2) include helpers/pages_list.html.
  6 + example:
  7 + <ul>
  8 + {% assign pages_list = site.pages %}
  9 + {% include helpers/pages_list.html %}
  10 + </ul>
  11 +
  12 + Grouping: (optional):
  13 + assign the 'group' variable to constrain the list to only pages/posts
  14 + in the given group. Note you must define the group manually in the page/post
  15 + meta-data to use this feature.
  16 + Grouping is mainly helpful for non-post pages.
  17 + If you want to group posts, it's easier/better to tag them, then pass the tagged posts array.
  18 + i.e. site.tags.cool_tag (this returns an array of posts tagged: cool_tag)
  19 +
  20 + This helper can be seen in use at: ../_layouts/default.html
  21 +-->{% endcomment %}
  22 +
  23 +
  24 +{% for node in pages_list %}
  25 + {% if group == null or group == node.group %}
  26 +
  27 + {% if page.url == node.url %}
  28 + <li><a href="{{node.url}}" class="active">{{node.title}}</a></li>
  29 + {% else %}
  30 + <li><a href="{{node.url}}">{{node.title}}</a></li>
  31 + {% endif %}
  32 +
  33 + {% endif %}
  34 +{% endfor %}
  35 +
  36 +{% assign pages_list = null %}
  37 +{% assign group = null %}
52 _includes/helpers/posts_collate.html
... ... @@ -0,0 +1,52 @@
  1 +{% comment %}<!--
  2 +Collate_posts helper. Collated posts by year and month.
  3 +Usage:
  4 + 1) assign the 'posts_collate' variable to a valid array of posts.
  5 + 2) include helpers/posts_collate.html.
  6 + example:
  7 + {% assign posts_collate = site.posts %}
  8 + {% include helpers/posts_collate.html %}
  9 +
  10 + Ordering:
  11 + Posts are displayed in reverse chronological order.
  12 + For normal chronological order:
  13 + 1) Change the for loop to this:
  14 + => 'for post in site.posts reversed'
  15 + 2) Next make sure to change 'post.previous.date' to:
  16 + => 'post.next.date'
  17 +
  18 +-->{% endcomment %}
  19 +
  20 +{% for post in posts_collate %}
  21 + {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
  22 + {% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %}
  23 + {% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture %}
  24 + {% capture next_month %}{{ post.previous.date | date: "%B" }}{% endcapture %}
  25 +
  26 + {% if forloop.first %}
  27 + <h2>{{this_year}}</h2>
  28 + <h3>{{this_month}}</h3>
  29 + <ul>
  30 + {% endif %}
  31 +
  32 + <li><span>{{ post.date | date: "%B %e, %Y" }}</span> <a href="{{ post.url }}">{{ post.title }}</a></li>
  33 +
  34 + {% if forloop.last %}
  35 + </ul>
  36 + {% else %}
  37 + {% if this_year != next_year %}
  38 + </ul>
  39 + <h2>{{next_year}}</h2>
  40 + <h3>{{next_month}}</h3>
  41 + <ul>
  42 + {% else %}
  43 + {% if this_month != next_month %}
  44 + </ul>
  45 + <h3>{{next_month}}</h3>
  46 + <ul>
  47 + {% endif %}
  48 + {% endif %}
  49 + {% endif %}
  50 +{% endfor %}
  51 +
  52 +{% assign posts_collate = null %}
30 _includes/helpers/tags_list.html
... ... @@ -0,0 +1,30 @@
  1 +{% comment %}<!--
  2 +The tags_list include is a listing helper for tags.
  3 +Usage:
  4 + 1) assign the 'tags_list' variable to a valid array of tags.
  5 + 2) include helpers/tags_list.html.
  6 + example:
  7 + <ul>
  8 + {% assign tags_list = site.tags %}
  9 + {% include helpers/tags_list.html %}
  10 + </ul>
  11 +
  12 + Notes:
  13 + Tags can be either a Hash of tag objects (hashes) or an Array of tag-names (strings).
  14 + The encapsulating 'if' statement checks whether tags_list is a Hash or Array.
  15 + site.tags is a Hash while page.tags is an array.
  16 +
  17 + This helper can be seen in use at: ../_layouts/default.html
  18 +-->{% endcomment %}
  19 +
  20 +{% if tags_list.first[0] == null %}
  21 + {% for tag in tags_list %}
  22 + <li><a href="{{ site.var.tags_path }}#{{ tag }}-ref">{{ tag }} <span>{{ site.tags[tag].size }}</span></a></li>
  23 + {% endfor %}
  24 +{% else %}
  25 + {% for tag in tags_list %}
  26 + <li><a href="{{ site.var.tags_path }}#{{ tag[0] }}-ref">{{ tag[0] }} <span>{{ tag[1].size }}</span></a></li>
  27 + {% endfor %}
  28 +{% endif %}
  29 +
  30 +{% assign tags_list = null %}
5 _includes/production/analytics.html
... ... @@ -0,0 +1,5 @@
  1 +<!--
  2 + Drop your analytics in here.
  3 + This will only be included when published to GitHub.
  4 + We use "site.safe" variable which is true on GitHub.
  5 +-->
75 _includes/themes/mark-reid/default.html
... ... @@ -0,0 +1,75 @@
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3 +
  4 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
  5 +<head>
  6 + <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7 + <title>{{ page.title }} &larr; {{ page.top }}</title>
  8 + <meta name="author" content="{{ site.author.name }}" />
  9 +
  10 + <link rel="start" href="/" />
  11 +
  12 + {% if page.keywords %}
  13 + <meta name="keywords" content="{{ page.keywords }}">
  14 + {% endif %}
  15 +
  16 + {% if page.feed %}
  17 + <link rel="alternate" type="application/atom+xml" href="{{ page.feed }}" title="RSS feed" />
  18 + {% endif %}
  19 +
  20 + <!-- syntax highlighting CSS -->
  21 + <link rel="stylesheet" href="{{ theme_asset_path }}/css/syntax.css" type="text/css" />
  22 +
  23 + <!-- Homepage CSS -->
  24 + <link rel="stylesheet" href="{{ theme_asset_path }}/css/screen.css" type="text/css" />
  25 +
  26 +</head>
  27 +<body id="{{ page.section }}">
  28 +<div id="site">
  29 +
  30 + <div id="header">
  31 + <h1>
  32 + <a href="/" title="{{ site.title }}">{{ site.title }}</a>
  33 + <span class="byline">&larr; <a href="/">{{ site.author.name }}</a></span>
  34 + </h1>
  35 + <ul class="nav">
  36 + <li><a class="home" href="/">Home</a></li>
  37 + <li><a href="/archive.html">Archive</a></li>
  38 + <li><a href="/pages.html">Pages</a></li>
  39 + <li><a href="/categories.html">Categories</a></li>
  40 + <li><a href="/tags.html">Tags</a></li>
  41 + </ul>
  42 + </div>
  43 +
  44 + {{ content }}
  45 +
  46 + <div id="footer">
  47 + <address>
  48 + <span class="copyright">
  49 + Content by <a href="/info/site.html">{{ site.author.name }}</a>. Design by
  50 + <a href="http://mark.reid.name/">Mark Reid</a>
  51 + <br/>
  52 + (<a rel="licence" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Some rights reserved</a>)
  53 + </span>
  54 + <span class="engine">
  55 + Powered by <a href="http://github.com/mojombo/jekyll/" title="A static, minimalist CMS">Jekyll</a>
  56 + </span>
  57 + </address>
  58 + </div>
  59 +
  60 +</div>
  61 +
  62 +<!--[if IE 6]>
  63 +<script type="text/javascript">
  64 + /*Load jQuery if not already loaded*/ if(typeof jQuery == 'undefined'){ document.write("<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></"+"script>"); var __noconflict = true; }
  65 + var IE6UPDATE_OPTIONS = {
  66 + icons_path: "http://static.ie6update.com/hosted/ie6update/images/"
  67 + }
  68 +</script>
  69 +<script type="text/javascript" src="http://static.ie6update.com/hosted/ie6update/ie6update.js"></script>
  70 +<![endif]-->
  71 +{% if site.safe %}
  72 + {% include production/analytics.html %}
  73 +{% endif %}
  74 +</body>
  75 +</html>
6 _includes/themes/mark-reid/page.html
... ... @@ -0,0 +1,6 @@
  1 +<div id="page">
  2 +
  3 +<h1 class="emphnext">{{ page.title }}</h1>
  4 +{{ content }}
  5 +
  6 +</div><!-- End Page -->
31 _includes/themes/mark-reid/post.html
... ... @@ -0,0 +1,31 @@
  1 +<div id="page">
  2 +
  3 + <h1 class="emphnext">{{ page.title }}</h1>
  4 + <ul class="tag_box inline">
  5 + {% assign tags_list = page.tags %}
  6 + {% include helpers/tags_list.html %}
  7 + </ul>
  8 +
  9 + {{ content }}
  10 +
  11 + <address class="signature">
  12 + <a class="author" href="/">{{ site.author.name }}</a>
  13 + <span class="date">{{ page.date | date_to_long_string }}</span>
  14 + <span class="location">{{ page.location }}</span>
  15 + </address>
  16 +
  17 + <div class="prev-next">
  18 + {% if page.next %}
  19 + <a href="{{ page.next.url }}" class="next" title="{{ page.next.title }}">Next Post &rarr;</a>
  20 + {% endif %}
  21 + {% if page.previous %}
  22 + <a href="{{ page.previous.url }}" class="prev" title="{{ page.previous.title }}">&larr; Earlier Post</a>
  23 + {% endif %}
  24 + </div>
  25 +
  26 +</div><!-- End Page -->
  27 +
  28 +<!-- Discus Comments -->
  29 +<div id="disqus_thread">
  30 + <h2>Comment Section</h2>
  31 +</div>
60 _includes/themes/tom/default.html
... ... @@ -0,0 +1,60 @@
  1 +<!DOCTYPE html>
  2 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
  3 +<head>
  4 + <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5 + <title>{{ page.title }}</title>
  6 + <meta name="author" content="{{ site.author.name }}" />
  7 + <link href="http://feeds.feedburner.com/username" rel="alternate" title="your title" type="application/atom+xml" />
  8 +
  9 + <!-- syntax highlighting CSS -->
  10 + <link rel="stylesheet" href="{{ theme_asset_path }}/css/syntax.css" type="text/css" />
  11 +
  12 + <!-- Homepage CSS -->
  13 + <link rel="stylesheet" href="{{ theme_asset_path }}/css/screen.css" type="text/css" media="screen, projection" />
  14 +
  15 + <!-- Typekit -->
  16 + <script type="text/javascript" src="http://use.typekit.com/jpd0pfm.js"></script>
  17 + <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
  18 +</head>
  19 +<body>
  20 +
  21 + <div class="site">
  22 + <div class="title">
  23 + <a href="/">{{ site.title }}</a>
  24 + <a class="extra" href="/archive.html">Archive</a>
  25 + <a class="extra" href="/pages.html">Pages</a>
  26 + <a class="extra" href="/categories.html">Categories</a>
  27 + <a class="extra" href="/tags.html">Tags</a>
  28 + </div>
  29 +
  30 + {{ content }}
  31 +
  32 + <div class="footer">
  33 + <div class="contact">
  34 + <p>
  35 + {{ site.author.name }}<br />
  36 + tagline<br />
  37 + {{ site.author.email }}
  38 + </p>
  39 + </div>
  40 + <div class="contact">
  41 + <p>
  42 + <a href="http://github.com/{{ site.author.github }}/">github.com/{{ site.author.github }}</a><br />
  43 + <a href="http://twitter.com/{{ site.author.twitter }}/">twitter.com/{{ site.author.twitter }}</a><br />
  44 + <a href="http://flickr.com/photos/username/">flickr.com/photos/username</a>
  45 + </p>
  46 + </div>
  47 + <div class="rss">
  48 + <a href="http://feeds.feedburner.com/username">
  49 + <img src="/images/rss.png" alt="Subscribe to RSS Feed" />
  50 + </a>
  51 + </div>
  52 + </div>
  53 + </div>
  54 + <a href="http://github.com/{{ site.author.github }}"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" /></a>
  55 +
  56 +{% if site.safe %}
  57 + {% include production/analytics.html %}
  58 +{% endif %}
  59 +</body>
  60 +</html>
3  _includes/themes/tom/page.html
... ... @@ -0,0 +1,3 @@
  1 +<div id="post">
  2 +{{ content }}
  3 +</div>
17 _includes/themes/tom/post.html
... ... @@ -0,0 +1,17 @@
  1 +<div id="post">
  2 + <h1>{{ page.title }}</h1>
  3 + <p class="meta">
  4 + {{ page.date | date_to_long_string }}
  5 + {% if page.location %}{{ page.location }}{% endif %}
  6 + </p>
  7 + {{ content }}
  8 +</div>
  9 +
  10 +<div id="related">
  11 + <h2>Related Posts</h2>
  12 + <ul class="posts">
  13 + {% for post in site.related_posts limit:3 %}
  14 + <li><span>{{ post.date | date_to_string }}</span> &raquo; <a href="{{ post.url }}">{{ post.title }}</a></li>
  15 + {% endfor %}
  16 + </ul>
  17 +</div>
4 _layouts/default.html
... ... @@ -0,0 +1,4 @@
  1 +---
  2 +---
  3 +{% assign theme_asset_path = "/assets/themes/tom" %}
  4 +{% include themes/tom/default.html %}
4 _layouts/page.html
... ... @@ -0,0 +1,4 @@
  1 +---
  2 +layout: default
  3 +---
  4 +{% include themes/tom/page.html %}
4 _layouts/post.html
... ... @@ -0,0 +1,4 @@
  1 +---
  2 +layout: default
  3 +---
  4 +{% include themes/tom/post.html %}
38 _plugins/debug.rb
... ... @@ -0,0 +1,38 @@
  1 +# A simple way to inspect liquid template variables.
  2 +# Usage:
  3 +# Can be used anywhere liquid syntax is parsed (templates, includes, posts/pages)
  4 +# {{ site | debug }}
  5 +# {{ site.posts | debug }}
  6 +#
  7 +require 'pp'
  8 +module Jekyll
  9 + # Need to overwrite the inspect method here because the original
  10 + # uses < > to encapsulate the psuedo post/page objects in which case
  11 + # the output is taken for HTML tags and hidden from view.
  12 + #
  13 + class Post
  14 + def inspect
  15 + "#Jekyll:Post @id=#{self.id.inspect}"
  16 + end
  17 + end
  18 +
  19 + class Page
  20 + def inspect
  21 + "#Jekyll:Page @name=#{self.name.inspect}"
  22 + end
  23 + end
  24 +
  25 +end # Jekyll
  26 +
  27 +module Jekyll
  28 + module DebugFilter
  29 +
  30 + def debug(obj, stdout=false)
  31 + puts obj.pretty_inspect if stdout
  32 + "<pre>#{obj.class}\n#{obj.pretty_inspect}</pre>"
  33 + end
  34 +
  35 + end # DebugFilter
  36 +end # Jekyll
  37 +
  38 +Liquid::Template.register_filter(Jekyll::DebugFilter)
410 _posts/core-samples/2011-12-29-jekyll-introduction.md
Source Rendered
... ... @@ -0,0 +1,410 @@
  1 +---
  2 +layout: post
  3 +category : lessons
  4 +tags : [intro, beginner, jekyll, tutorial]
  5 +---
  6 +
  7 +This Jekyll introduction will outline specifically what Jekyll is and why you would want to use it.
  8 +Directly following the intro we'll learn exactly _how_ Jekyll does what it does.
  9 +
  10 +## Overview
  11 +
  12 +### What is Jekyll?
  13 +
  14 +Jekyll is a parsing engine bundled as a ruby gem used to build static websites from
  15 +dynamic components such as templates, partials, liquid code, markdown, etc. Jekyll is known as "a simple, blog aware, static site generator".
  16 +
  17 +### Examples
  18 +
  19 +This website is created with Jekyll. [Other Jekyll websites](https://github.com/mojombo/jekyll/wiki/Sites).
  20 +
  21 +
  22 +
  23 +### What does Jekyll Do?
  24 +
  25 +Jekyll is a ruby gem you install on your local system.
  26 +Once there you can call `jekyll --server` on a directory and provided that directory
  27 +is setup in a way jekyll expects, it will do magic stuff like parse markdown/textile files,
  28 +compute categories, tags, permalinks, and construct your pages from layout templates and partials.
  29 +
  30 +Once parsed, Jekyll stores the result in a self-contained static `_site` folder.
  31 +The intention here is that you can serve all contents in this folder statically from a plain static web-server.
  32 +
  33 +You can think of Jekyll as a normalish dynamic blog but rather than parsing content, templates, and tags
  34 +on each request, Jekyll does this once _beforehand_ and caches the _entire website_ in a folder for serving statically.
  35 +
  36 +### Jekyll is Not Blogging Software
  37 +
  38 +**Jekyll is a parsing engine.**
  39 +
  40 +Jekyll does not come with any content nor does it have any templates or design elements.
  41 +This is a common source of confusion when getting started.
  42 +Jekyll does not come with anything you actually use or see on your website - you have to make it.
  43 +
  44 +### Why Should I Care?
  45 +
  46 +Jekyll is very minimalistic and very efficient.
  47 +The most important thing to realize about Jekyll is that it creates a static representation of your website requiring only a static web-server.
  48 +Traditional dynamic blogs like Wordpress require a database and server-side code.
  49 +Heavily trafficked dynamic blogs must employ a caching layer that ultimately performs the same job Jekyll sets out to do; serve static content.
  50 +
  51 +Therefore if you like to keep things simple and you prefer the command-line over an admin panel UI then give Jekyll a try.
  52 +
  53 +**Developers like Jekyll because we can write content like we write code:**
  54 +
  55 +- Ability to write content in markdown or textile in your favorite text-editor.
  56 +- Ability to write and preview your content via localhost.
  57 +- No internet connection required.
  58 +- Ability to publish via git.
  59 +- Ability to host your blog on a static web-server.
  60 +- Ability to host freely on GitHub Pages.
  61 +- No database required.
  62 +
  63 +# How Jekyll Works
  64 +
  65 +The following is a complete but concise outline of exactly how Jekyll works.
  66 +
  67 +Be aware that core concepts are introduced in rapid succession without code examples.
  68 +This information is not intended to specifically teach you how to do anything, rather it
  69 +is intended to give you the _full picture_ relative to what is going on in Jekyll-world.
  70 +
  71 +Learning these core concepts should help you avoid common frustrations and ultimately
  72 +help you better understand the code examples contained throughout Jekyll-Bootstrap.
  73 +
  74 +
  75 +## Initial Setup
  76 +
  77 +After [installing jekyll](/index.html#start-now) you'll need to format your website directory in a way jekyll expects.
  78 +Jekyll-bootstrap conveniently provides the base directory format.
  79 +
  80 +### The Jekyll Application Base Format
  81 +
  82 +Jekyll expects your website directory to be laid out like so:
  83 +
  84 + .
  85 + |-- _config.yml
  86 + |-- _includes
  87 + |-- _layouts
  88 + | |-- default.html
  89 + | |-- post.html
  90 + |-- _posts
  91 + | |-- 20011-10-25-open-source-is-good.markdown
  92 + | |-- 20011-04-26-hello-world.markdown
  93 + |-- _site
  94 + |-- index.html
  95 + |-- assets
  96 + |-- css
  97 + |-- style.css
  98 + |-- javascripts
  99 +
  100 +
  101 +- **\_config.yml**
  102 + Stores configuration data.
  103 +
  104 +- **\_includes**
  105 + This folder is for partial views.
  106 +
  107 +- **\_layouts**
  108 + This folder is for the main templates your content will be inserted into.
  109 + You can have different layouts for different pages or page sections.
  110 +
  111 +- **\_posts**
  112 + This folder contains your dynamic content/posts.
  113 + the naming format is required to be `@YEAR-MONTH-DATE-title.MARKUP@`.
  114 +
  115 +- **\_site**
  116 + This is where the generated site will be placed once Jekyll is done transforming it.
  117 +
  118 +- **assets**
  119 + This folder is not part of the standard jekyll structure.
  120 + The assets folder represents _any generic_ folder you happen to create in your root directory.
  121 + Directories and files not properly formatted for jekyll will be left untouched for you to serve normally.
  122 +
  123 +(read more: <https://github.com/mojombo/jekyll/wiki/Usage>)
  124 +
  125 +
  126 +### Jekyll Configuration
  127 +
  128 +Jekyll supports various configuration options that are fully outlined here:
  129 +<https://github.com/mojombo/jekyll/wiki/Configuration>
  130 +
  131 +
  132 +
  133 +
  134 +## Content in Jekyll
  135 +
  136 +Content in Jekyll is either a post or a page.
  137 +These content "objects" get inserted into one or more templates to build the final output for its respective static-page.
  138 +
  139 +### Posts and Pages
  140 +
  141 +Both posts and pages should be written in markdown, textile, or HTML and may also contain Liquid templating syntax.
  142 +Both posts and pages can have meta-data assigned on a per-page basis such as title, url path, as well as arbitrary custom meta-data.
  143 +
  144 +### Working With Posts
  145 +
  146 +**Creating a Post**
  147 +Posts are created by properly formatting a file and placing it the `_posts` folder.
  148 +
  149 +**Formatting**
  150 +A post must have a valid filename in the form `YEAR-MONTH-DATE-title.MARKUP` and be placed in the `_posts` directory.
  151 +If the data format is invalid Jekyll will not recognize the file as a post. The date and title are automatically parsed from the filename of the post file.
  152 +Additionally, each file must have [YAML Front-Matter](https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter) prepended to its content.
  153 +YAML Front-Matter is a valid YAML syntax specifying meta-data for the given file.
  154 +
  155 +**Order**
  156 +Ordering is an important part of Jekyll but it is hard to specify a custom ordering strategy.
  157 +Only reverse chronological and chronological ordering is supported in Jekyll.
  158 +
  159 +Since the date is hard-coded into the filename format, to change the order, you must change the dates in the filenames.
  160 +
  161 +**Tags**
  162 +Posts can have tags associated with them as part of their meta-data.
  163 +Tags may be placed on posts by providing them in the post's YAML front matter.
  164 +You have access to the post-specific tags in the templates. These tags also get added to the sitewide collection.
  165 +
  166 +**Categories**
  167 +Posts may be categorized by providing one or more categories in the YAML front matter.
  168 +Categories offer more significance over tags in that they can be reflected in the URL path to the given post.
  169 +Note categories in Jekyll work in a specific way.
  170 +If you define more than one category you are defining a category hierarchy "set".
  171 +Example:
  172 +
  173 + ---
  174 + title : Hello World
  175 + categories : [lessons, beginner]
  176 + ---
  177 +
  178 +This defines the category hierarchy "lessons/beginner". Note this is _one category_ node in Jekyll.
  179 +You won't find "lessons" and "beginner" as two separate categories unless you define them elsewhere as singular categories.
  180 +
  181 +### Working With Pages
  182 +
  183 +**Creating a Page**
  184 +Pages are created by properly formatting a file and placing it anywhere in the root directory or subdirectories that do _not_ start with an underscore.
  185 +
  186 +**Formatting**
  187 +In order to register as a Jekyll page the file must contain [YAML Front-Matter](https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter).
  188 +Registering a page means 1) that Jekyll will process the page and 2) that the page object will be available in the `site.pages` array for inclusion into your templates.
  189 +
  190 +**Categories and Tags**
  191 +Pages do not compute categories nor tags so defining them will have no effect.
  192 +
  193 +**Sub-Directories**
  194 +If pages are defined in sub-directories, the path to the page will be reflected in the url.
  195 +Example:
  196 +
  197 + .
  198 + |-- people
  199 + |-- bob
  200 + |-- essay.html
  201 +
  202 +This page will be available at `http://yourdomain.com/people/bob/essay.html`
  203 +
  204 +
  205 +**Recommended Pages**
  206 +
  207 +- **index.html**
  208 + You will always want to define the root index.html page as this will display on your root URL.
  209 +- **404.html**
  210 + Create a root 404.html page and GitHub Pages will serve it as your 404 response.
  211 +- **sitemap.html**
  212 + Generating a sitemap is good practice for SEO.
  213 +- **about.html**
  214 + A nice about page is easy to do and gives the human perspective to your website.
  215 +
  216 +
  217 +## Templates in Jekyll
  218 +
  219 +Templates are used to contain a page's or post's content.
  220 +All templates have access to a global site object variable: `site` as well as a page object variable: `page`.
  221 +The site variable holds all accessible content and metadata relative to the site.
  222 +The page variable holds accessible data for the given page or post being rendered at that point.
  223 +
  224 +**Create a Template**
  225 +Templates are created by properly formatting a file and placing it in the `_layouts` directory.
  226 +
  227 +**Formatting**
  228 +Templates should be coded in HTML and contain YAML Front Matter.
  229 +All templates can contain Liquid code to work with your site's data.
  230 +
  231 +**Rending Page/Post Content in a Template**
  232 +There is a special variable in all templates named : `content`.
  233 +The `content` variable holds the page/post content including any sub-template content previously defined.
  234 +Render the content variable wherever you want your main content to be injected into your template:
  235 +
  236 +{% capture text %}...
  237 +<body>
  238 + <div id="sidebar"> ... </div>
  239 + <div id="main">
  240 + |.{content}.|
  241 + </div>
  242 +</body>
  243 +...{% endcapture %}
  244 +{% include helpers/liquid_raw.html %}
  245 +
  246 +### Sub-Templates
  247 +
  248 +Sub-templates are exactly templates with the only difference being they
  249 +define another "root" layout/template within their YAML Front Matter.
  250 +This essentially means a template will render inside of another template.
  251 +
  252 +### Includes
  253 +In Jekyll you can define include files by placing them in the `_includes` folder.
  254 +Includes are NOT templates, rather they are just code snippets that get included into templates.
  255 +In this way, you can treat the code inside includes as if it was native to the parent template.
  256 +
  257 +Any valid template code may be used in includes.
  258 +
  259 +
  260 +## Using Liquid for Templating
  261 +
  262 +Templating is perhaps the most confusing and frustrating part of Jekyll.
  263 +This is mainly due to the fact that Jekyll templates must use the Liquid Templating Language.
  264 +
  265 +### What is Liquid?
  266 +
  267 +[Liquid](https://github.com/Shopify/liquid) is a secure templating language developed by [Shopify](http://shopify.com).
  268 +Liquid is designed for end-users to be able to execute logic within template files
  269 +without imposing any security risk on the hosting server.
  270 +
  271 +Jekyll uses Liquid to generate the post content within the final page layout structure and as the primary interface for working with
  272 +your site and post/page data.
  273 +
  274 +### Why Do We Have to Use Liquid?
  275 +
  276 +GitHub uses Jekyll to power [GitHub Pages](http://pages.github.com/).
  277 +GitHub cannot afford to run arbitrary code on their servers so they lock developers down via Liquid.
  278 +
  279 +### Liquid is Not Programmer-Friendly.
  280 +
  281 +The short story is liquid is not real code and its not intended to execute real code.
  282 +The point being you can't do jackshit in liquid that hasn't been allowed explicitly by the implementation.
  283 +What's more you can only access data-structures that have been explicitly passed to the template.
  284 +
  285 +In Jekyll's case it is not possible to alter what is passed to Liquid without hacking the gem or running custom plugins.
  286 +Both of which cannot be supported by GitHub Pages.
  287 +
  288 +As a programmer - this is very frustrating.
  289 +
  290 +But rather than look a gift horse in the mouth we are going to
  291 +suck it up and view it as an opportunity to work around limitations and adopt client-side solutions when possible.
  292 +
  293 +**Aside**
  294 +My personal stance is to not invest time trying to hack liquid. It's really unnecessary
  295 +_from a programmer's_ perspective. That is to say if you have the ability to run custom plugins (i.e. run arbitrary ruby code)
  296 +you are better off sticking with ruby. Toward that end I've built [Mustache-with-Jekyll](http://github.com/plusjade/mustache-with-jekyll)
  297 +
  298 +
  299 +## Static Assets
  300 +
  301 +Static assets are any file in the root or non-underscored subfolders that are not pages.
  302 +That is they have no valid YAML Front Matter and are thus not treated as Jekyll Pages.
  303 +
  304 +Static assets should be used for images, css, and javascript files.
  305 +
  306 +
  307 +
  308 +
  309 +## How Jekyll Parses Files
  310 +
  311 +Remember Jekyll is a processing engine. There are two main types of parsing in Jekyll.
  312 +
  313 +- **Content parsing.**
  314 + This is done with textile or markdown.
  315 +- **Template parsing.**
  316 + This is done with the liquid templating language.
  317 +
  318 +And thus there are two main types of file formats needed for this parsing.
  319 +
  320 +- **Post and Page files.**
  321 + All content in Jekyll is either a post or a page so valid posts and pages are parsed with markdown or textile.
  322 +- **Template files.**
  323 + These files go in `_layouts` folder and contain your blogs **templates**. They should be made in HTML with the help of Liquid syntax.
  324 + Since include files are simply injected into templates they are essentially parsed as if they were native to the template.
  325 +
  326 +**Arbitrary files and folders.**
  327 +Files that _are not_ valid pages are treated as static content and pass through
  328 +Jekyll untouched and reside on your blog in the exact structure and format they originally existed in.
  329 +
  330 +### Formatting Files for Parsing.
  331 +
  332 +We've outlined the need for valid formatting using **YAML Front Matter**.
  333 +Templates, posts, and pages all need to provide valid YAML Front Matter even if the Matter is empty.
  334 +This is the only way Jekyll knows you want the file processed.
  335 +
  336 +YAML Front Matter must be prepended to the top of template/post/page files:
  337 +
  338 + ---
  339 + layout: post
  340 + category : pages
  341 + tags : [how-to, jekyll]
  342 + ---
  343 +
  344 + ... contents ...
  345 +
  346 +Three hyphens on a new line start the Front-Matter block and three hyphens on a new line end the block.
  347 +The data inside the block must be valid YAML.
  348 +
  349 +Configuration parameters for YAML Front-Matter is outlined here:
  350 +[A comprehensive explanation of YAML Front Matter](https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter)
  351 +
  352 +#### Defining Layouts for Posts and Templates Parsing.
  353 +
  354 +The `layout` parameter in the YAML Front Matter defines the template file for which the given post or template should be injected into.
  355 +If a template file specifies its own layout, it is effectively being used as a `sub-template.`
  356 +That is to say loading a post file into a template file that refers to another template file with work in the way you'd expect; as a nested sub-template.
  357 +
  358 +
  359 +
  360 +
  361 +
  362 +## How Jekyll Generates the Final Static Files.
  363 +
  364 +Ultimately, Jekyll's job is to generate a static representation of your website.
  365 +The following is an outline of how that's done:
  366 +
  367 +1. **Jekyll collects data.**
  368 + Jekyll scans the posts directory and collects all posts files as post objects. It then scans the layout assets and collects those and finally scans other directories in search of pages.
  369 +
  370 +2. **Jekyll computes data.**
  371 + Jekyll takes these objects, computes metadata (permalinks, tags, categories, titles, dates) from them and constructs one
  372 + big `site` object that holds all the posts, pages, layouts, and respective metadata.
  373 + At this stage your site is one big computed ruby object.
  374 +
  375 +3. **Jekyll liquifies posts and templates.**
  376 + Next jekyll loops through each post file and converts (through markdown or textile) and **liquifies** the post inside of its respective layout(s).
  377 + Once the post is parsed and liquified inside the the proper layout structure, the layout itself is "liquified".
  378 + **Liquification** is defined as follows: Jekyll initiates a Liquid template, and passes a simpler hash representation of the ruby site object as well as a simpler
  379 + hash representation of the ruby post object. These simplified data structures are what you have access to in the templates.
  380 +
  381 +3. **Jekyll generates output.**
  382 + Finally the liquid templates are "rendered", thereby processing any liquid syntax provided in the templates
  383 + and saving the final, static representation of the file.
  384 +
  385 +**Notes.**
  386 +Because Jekyll computes the entire site in one fell swoop, each template is given access to
  387 +a global `site` hash that contains useful data. It is this data that you'll iterate through and format
  388 +using the Liquid tags and filters in order to render it onto a given page.
  389 +
  390 +Remember, in Jekyll you are an end-user. Your API has only two components:
  391 +
  392 +1. The manner in which you setup your directory.
  393 +2. The liquid syntax and variables passed into the liquid templates.
  394 +
  395 +All the data objects available to you in the templates via Liquid are outlined in the **API Section** of Jekyll-Bootstrap.
  396 +You can also read the original documentation here: <https://github.com/mojombo/jekyll/wiki/Template-Data>
  397 +
  398 +## Conclusion
  399 +
  400 +I hope this paints a clearer picture of what Jekyll is doing and why it works the way it does.
  401 +As noted, our main programming constraint is the fact that our API is limited to what is accessible via Liquid and Liquid only.
  402 +
  403 +Jekyll-bootstrap is intended to provide helper methods and strategies aimed at making it more intuitive and easier to work with Jekyll =)
  404 +
  405 +**Thank you** for reading this far.
  406 +
  407 +## Next Steps
  408 +
  409 +Please take a look at [{{ site.categories.api.first.title }}]({{ site.categories.api.first.url }})
  410 +or jump right into [Usage]({{ site.categories.usage.first.url }}) if you'd like.
10 _posts/core-samples/api/2011-11-27-theme-api.md
Source Rendered
... ... @@ -0,0 +1,10 @@
  1 +---
  2 +layout : post
  3 +categories : api
  4 +tags : api
  5 +---
  6 +
  7 +The Jekyll Bootstrap Theme API documents how themes should be formatted
  8 +in order to be plugged into jekyll-bootstrap.
  9 +
  10 +## Philosophy
65 _posts/core-samples/api/2011-11-28-bootstrap-api.md
Source Rendered
... ... @@ -0,0 +1,65 @@
  1 +---
  2 +layout : post
  3 +categories : api
  4 +tags : api
  5 +---
  6 +
  7 +The Jekyll Bootstrap API consists of custom includes and development
  8 +strategies meant to provide a more modular and sensible coding experience
  9 +when working with Liquid and Jekyll.
  10 +
  11 +## Philosophy
  12 +
  13 +Jekyll-bootstrap uses an 'include' helper strategy to encapsulate frequently used
  14 +code logic. This makes for more modular and DRY code.
  15 +
  16 +The 'include' helper is the same concept as rails' view helper modules,
  17 +just obviously much more constrained due to Liquid.
  18 +
  19 +## Include-helper Strategy
  20 +
  21 +### Define a new "method"
  22 +
  23 +The include helper strategy is meant to emulate a ruby method.
  24 +First encapsulate your liquid code logic in a Jekyll include file.
  25 +example: `helpers/tags_list.html` which is a helper to list tags and their total counts.
  26 +
  27 +{% capture text %}|.% for tag in tags_list %.|
  28 + <li><a href="|.{ site.var.tags_path }.||.{ tag[0] }.|-ref">|.{ tag[0] }.| <span>|.{tag[1].size}.|</span></a></li>
  29 +|.% endfor %.|
  30 +
  31 +|.% assign tags_list = null %.|{% endcapture %}
  32 +{% include helpers/liquid_raw.html %}
  33 +
  34 +In order to emulate passing arguments to the method, your include should reference localized variables whenever possible.
  35 +Now we can pass in arguments by defining the local variables immediately before calling the include file:
  36 +
  37 +### Invoking the Method.
  38 +
  39 +{% capture text %}<ul>
  40 + |.% assign tags_list = site.tags %.|
  41 + |.% include helpers/tags_list.html %.|
  42 +</ul>{% endcapture %}
  43 +{% include helpers/liquid_raw.html %}
  44 +
  45 +You can define as many "arguments" as you want, just remember to nullify them all at the end of your include to preserve modularity.
  46 +
  47 +### Gotchas
  48 +
  49 +In Liquid, it is impossible to inline assign a variable to anything other than a string.
  50 +This means you can't pass in arrays, hashes, etc.
  51 +However, as shown above, you can pass-by-reference, and assign local variables to variables that already exist.
  52 +
  53 +So to pass in data-structures, you need to define them in your YAML Front Matter, or \_config.html file first, then pass them in by reference.
  54 +
  55 +## Contibuting
  56 +
  57 +If you have a good idea for another helper, please follow the outlines above,
  58 +then submit a pull request to [Jekyll-Bootstrap](http://github.com/plusjade/jekyll-bootstrap) and I'll include it.
  59 +
  60 +## Current Jekyll-Bootstrap Helpers
  61 +
  62 +<ul>
  63 + {% assign pages_list = site.categories.helpers %}
  64 + {% include helpers/pages_list.html %}
  65 +</ul>
38 _posts/core-samples/api/2011-11-29-jekyll-liquid-api.md
Source Rendered
... ... @@ -0,0 +1,38 @@
  1 +---
  2 +layout : post
  3 +categories : api
  4 +tags : api
  5 +---
  6 +
  7 +Here we'll get familiar with the Liquid syntax and learn about all the methods and logic available to us.
  8 +
  9 +## Introduction
  10 +
  11 +Jekyll uses the standard Liquid templating language package and includes a few other helpful extensions of its own.
  12 +
  13 +Jekyll-bootstrap does not support plugin development so only the standard filters and logic will be available to us.
  14 +
  15 +Remember we are the end-users!
  16 +
  17 +## Liquid Crash Course
  18 +
  19 +The following link contains a comprehensive course in everything available in Liquid.
  20 +The standard library is also available in Jekyll.
  21 +
  22 +<http://github.com/Shopify/liquid/wiki/Liquid-for-Designers>
  23 +
  24 +## Liquid Extensions Provided With Jekyll
  25 +
  26 +Jekyll introduces a few other filters and tags as outlined here:
  27 +
  28 +<http://github.com/mojombo/jekyll/wiki/Liquid-Extensions>
  29 +
  30 +## Examples
  31 +
  32 +Finally we take a look out the included helper examples and their source to see
  33 +how we can display our post and site information in a more strategic manner.
  34 +
  35 +<ul>
  36 +{% assign pages_list = site.categories.helpers %}
  37 +{% include helpers/pages_list.html %}
  38 +</ul>
172 _posts/core-samples/api/2011-11-30-template-data-api.md
Source Rendered
... ... @@ -0,0 +1,172 @@
  1