Enable the Posts extension
_ext/pipeline.rb
extension Awestruct::Extensions::Posts.new('/blog')
Create the blog directory
$ mkdir blog
Draft a post in Textile
blog/2012-11-27-welcome-to-rwx-2012.textile
--- layout: post title: Welcome to RWX 2012 author: Dan --- Welcome to sunny Ft. Lauderdale for RWX 2012!
Draft another post in Textile
blog/2012-11-28-are-you-awestruct.textile
--- layout: post title: Are you awestruct? author: Dan --- What will it take to impress your hacker instinct?
Draft a post in Markdown
blog/2012-11-30-thats-a-wrap.md
--- layout: post title: That's a wrap? author: Dan --- Go enjoy the beach!
Create the layout for a post
_layouts/post.html.haml
--- layout: base --- #content %article %header.page-header %h1.title %a{:href=>page.qurl}= page.title .meta %time= page.date.strftime("%B %e, %Y") .content ~ page.content
Show all posts
index.html.haml
--- layout: base --- #content - for post in site.posts %article %header.page-header %h1.title %a{:href=>post.qurl, :title=>'Click to go to post', :rel=>'tooltip'}= post.title .meta %time= post.date.strftime("%B %e, %Y") .content ~ post.content
Preview!
awestruct -d
Tidy the URLs
_ext/pipeline.rb
extension Awestruct::Extensions::Indexifier.new
Add the Indexifier extension after the Posts extension.
Enable the Pagination extension
_ext/pipeline.rb
extension Awestruct::Extensions::Paginator.new(:posts, '/index', :per_page => 2)
Add the Paginator extension after the Posts extension.
Show paginated posts
index.html.haml
#content - for post in page.posts
After changing site.posts to page.posts, notice one entry is missing.
Add pagination links
index.html.haml
.pagination %ul %li - if page.posts.previous_page %a{:href=>page.posts.previous_page.url} %span.icon-step-backward %li - if page.posts.next_page %a{:href=>page.posts.next_page.url} %span.icon-step-forward
Add an Atom feed
_ext/pipeline.rb
extension Awestruct::Extensions::Atomizer.new(:posts, '/feed.atom')
Add the Atomizer extension after the Indexifier extension.
Create an archive page
blog/index.html.haml
--- layout: base --- .page-header %h1 Blog Archive - for year, posts_by_year in site.posts_archive.posts - for month, posts_by_month in posts_by_year %h2 = year %small= posts_by_month.first[1].first.date.strftime('%B') %ul.unstyled - for date, posts_by_date in posts_by_month - for post in posts_by_date %li = post.date.strftime('%b %e') %a{:href=>post.url}= post.title
Warning
|
Currently requires a patch to the Posts extension |
Add archive and feed links to navbar
_layouts/base.html.haml
%li %a{ :href=>"#{site.base_url}/blog" } Archive %li %a{ :href=>"#{site.base_url}/feed.atom" } Feed
Add Google Analytics
_ext/pipeline.rb
helper Awestruct::Extensions::GoogleAnalytics
Add helpers after the extensions.
_layouts/base.html.haml
- if site.google_analytics = google_analytics_async
Add analytics key to the configuration:
_config/site.yml
google_analytics: UA-00000000-1