arzumy md short notes on small discoveries

jekyll And liquid Loops

25 November 2012

I’ve been using jekyll to run this site since 3 years ago. But I didn’t do much with it. It was just a single page site. Surprisingly enough, this site is a PageRank 3 site! Now who said content is king? :P

Now that I’m starting to convert this site to a blog, I’ve been using jekyll as it’s intended to be. I got to learn a bit more about it. Specifically the syntaxes for liquid, template engine used in jekyll.

Since this is a blog, having atom.xml for feed is not a bad idea. I just copied (yes, this pattern starting to emerge now) from Tom Preston-Werner’s blog and edited it a bit.

  <?xml version="1.0" encoding="utf-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  
   <title>{{ site.title }} - {{ site.tagline }}</title>
   <link href="{{ site.production_url }}/atom.xml" rel="self"/>
   <link href="{{ site.production_url }}"/>
   <updated>{{ site.time | date_to_xmlschema }}</updated>
   <id>{{ site.production_url }}</id>
   <author>
     <name>{{ site.author.name }}</name>
     <email>{{ site.author.email }}</email>
   </author>
  
   {% for post in site.posts %}
   <entry>
     <title>{{ post.title }}</title>
     <link href="{{ site.production_url }}{{ post.url }}"/>
     <updated>{{ post.date | date_to_xmlschema }}</updated>
     <id>{{ site.production_url }}{{ post.id }}</id>
     <content type="html">{{ post.content | xml_escape }}</content>
   </entry>
   {% endfor %}
  
  </feed>

But if you look at the loop

{% for post in site.posts %}

That will list down all posts since the dawn of time. I don’t have a problem with it yet. At this time of writing, I only have 4 posts. This could be a problem if I’m persistent enough to churn out new post every few days. I decided not to be pragmatic and solve this non-problem now.

A quick look here https://github.com/Shopify/liquid/wiki/Liquid-for-Designers shows that I can just add limit to the loop.

{% for post in site.posts limit:10 %}

There you go. Non-problem solved.

NOTE: If you want to use <code> tag to display liquid syntax like I did above, then you’ll have to temporarily disable tag processing. You can use {% raw %} tag.

{% raw %}
  {% for post in site.posts limit:10 %}
{% endraw %}

Credit goes to this Stack Overflow answer.

arzumy md, CTO at Fave and BillPlz.

https://www.facebook.com/arzumy
https://my.linkedin.com/in/arzumy
https://www.google.com/search?q=arzumy