Jekyll Cheat Sheet

    Document Variables

    • collection

      Label of the containing collection.

      Input
      {{ site.my_collection.first.collection }}
      
      Output
      my_collection
      
    • content

      The content of the collection item, rendered or un-rendered depending upon what Liquid is being processed and the item is.

      Input
      {{ site.my_collection.first.content }}
      
      Output
      Hello from my_collection.
      
    • relative_path

      The path to the document’s source file relative to the site source.

      Input
      {{ site.my_collection.first.relative_path }}
      
      Output
      _my_collection/item.md
      

    Collection Variables

    • directory

      The full path to the collections’s source directory.

      Input
      {{ site.my_collection.directory }}
      
      Output
      /Users/mike/jekyll-project/_my_collection
      
    • docs

      An array of the collection’s documents.

      Input
      {{ site.my_collection.docs.first.url }}
      
      Output
      /my_collection/item.html
      
    • files

      An array of static files in the collection.

      Input
      {{ site.my_collection.files | size }}
      
      Output
      0
      
    • label

      The name of your collection.

      Input
      {{ site.my_collection.label }}
      
      Output
      my_collection
      
    • output

      Whether the collection’s documents will be output as individual files.

      Input
      {{ site.my_collection.output }}
      
      Output
      true
      
    • relative_path

      The path to the document’s source file relative to the site source.

      Input
      {{ site.collections.my_collection.relative_path }}
      
      Output
      _my_collection
      

    Global Variables

    • content

      In layout files, the rendered content of the Post or Page being wrapped. Not defined in Post or Page files.

    • page

      Page specific information + the YAML front matter. Custom variables set via the YAML Front Matter will be available here.

    • paginator

      When the paginate configuration option is set, this variable becomes available for use.

    • site

      Sitewide information + configuration settings from _config.yml.

    Liquid Filters

    String

    • append

      Append characters to a string.

      Input
      {{ 'jekyll' | append: '.jpg' }}
      
      Output
      jekyll.jpg
      
    • capitalize

      Capitalizes the first character.

      Input
      {{ "static site generator" | capitalize }}
      
      Output
      Static site generator
      
    • cgi_escape

      Escape a string for use in a URL.

      Input
      {{ "foo,bar;baz?" | cgi_escape }}
      
      Output
      foo%2Cbar%3Bbaz%3F
      
    • default

      Set a fallback incase a value doesn’t exist.

      Input
      {{ nil | default: "hello"  }}
      
      Output
      hello
      
    • downcase

      Converts a string to lowercase.

      Input
      {{ "STATIC Site generator" | downcase }}
      
      Output
      static site generator
      
    • escape

      Returns an escaped version of html.

      Input
      {{ "<p>Jekyll</p>" | escape }}
      
      Output
      &amp;lt;p&amp;gt;Jekyll&amp;lt;/p&amp;gt;
      
    • lstrip

      Removes whitespace characters from the beginning of a string.

      Input
      {{ '          I love Jekyll!          ' | lstrip }}
      
      Output
      I love Jekyll!          
      
    • markdownify

      Convert a Markdown-formatted string into HTML.

      Input
      {{ "Hello **Jekyll**" | markdownify }}
      
      Output
      Hello <strong>Jekyll</strong>
      
    • number_of_words

      Count the number of words in a string.

      Input
      {{ "Hi Jekyll!" | number_of_words }}
      
      Output
      2
      
    • prepend

      Prepend characters to a string.

      Input
      {{ 'Jekyll' | prepend: 'I love ' }}
      
      Output
      I love Jekyll
      
    • remove_first

      Removes only the first occurrence of a substring from a string.

      Input
      {{ 'I really really like Jekyll' | remove_first: 'really' }}
      
      Output
      I really like Jekyll
      
    • remove

      Removes any occurrence of a substring from a string.

      Input
      {{ 'I really really like Jekyll' | remove: 'really' }}
      
      Output
      I like Jekyll
      
    • replace_first

      Replaces only the first occurrence of a substring from a string.

      Input
      {{ 'I really really like Jekyll' | replace_first: 'really', 'kinda' }}
      
      Output
      I kinda really like Jekyll
      
    • replace

      Replaces any occurrence of a substring from a string.

      Input
      {{ 'I really really like Jekyll' | replace: 'really', 'truly' }}
      
      Output
      I truly truly like Jekyll
      
    • rstrip

      Removes whitespace characters from the end of a string.

      Input
      {{ '          I love Jekyll!          ' | rstrip }}
      
      Output
                I love Jekyll!
      
    • sassify

      Convert a Sass string into CSS output.

      Input
      // assigned to sass_code
      body
        color: #333
        // ignored comment
        background-color: yellow
      
        p
          /* fixed comment
          color: green
      
      {{ sass_code | sassify }}
      
      Output
      body {
        color: #333;
        background-color: yellow;
      }
      body p {
        /* fixed comment */
        color: green;
      }
      
      
    • scssify

      Convert a SCSS string into CSS output.

      Input
      // assigned to scss_code
      body {
        color: #333;
        // ignored comment
        background-color: yellow;
      
        p {
          /* fixed comment */
          color: green;
        }
      }
      
      {{ scss_code | sassify }}
      
      Output
      body {
        color: #333;
        background-color: yellow;
      }
      body p {
        /* fixed comment */
        color: green;
      }
      
    • size

      Return the size of a string.

      Input
      <!-- page.my_string is jekyll -->
      {{ page.my_string | size }}
      
      Output
      6
      
    • slice

      returns a substring, starting at the specified index.

      Input
      {{ "hello" | slice: 0 }}
      {{ "hello" | slice: 1 }}
      {{ "hello" | slice: 1, 3 }}
      {{ "hello" | slice: -2 }}
      {{ "hello" | slice: -3, 2 }}
      
      Output
      h
      e
      ell
      l
      ll
      
    • slugify

      Convert a string into a lowercase URL slug.

      Input
      {{ "The _config.yml file" | slugify }}
      
      Output
      the-config-yml-file
      

      The slugify filter accepts an option, each specifying what to filter. The default is default. They are as follows (with what they filter):

      • none: no characters
      • raw: spaces
      • default: spaces and non-alphanumeric characters
      • pretty: spaces and non-alphanumeric characters except for ._~!$&'()+,;=@
    • smartify

      Convert quotes into smart quotes with SmartyPants

      Input
      {{ 'Use "Jekyll" --- the static generator...' | smartify }}
      
      Output
      Use &ldquo;Jekyll&rdquo; &mdash; the static generator&hellip;
      
    • split

      Divide a string into an array.

      Input
      {{ "a~b" | split:"~" }}
      
      Output
      ['a', 'b']
      
    • strip_html

      Strip all html tags from the input string.

      Input
      {{ "<p>Jekyll is cool</p>" | strip_html }}
      
      Output
      Jekyll is cool
      
    • strip_new_lines

      Strip all new line characters from the input string.

      Input
      {{ "Hello
      there" | strip_new_lines }}
      
      Output
      Hello there
      
    • textilize

      Convert a Textile-formatted string into HTML.

      Input
      {{ "h1. Hello Jekyll" | textilize }}
      
      Output
      <h1>Hello Jekyll</h1>
      
    • truncate

      Truncate a string down to x characters.

      Input
      {{ "I love Jekyll" | truncate: 12 }}
      
      Output
      I love Je...
      
    • truncatewords

      Truncate string down to x words.

      Input
      {{ "I love Jekyll" | truncatewords: 2 }}
      
      Output
      I love...
      
    • upcase

      Converts a string to uppercase.

      Input
      {{ "static site generator" | upcase }}
      
      Output
      STATIC SITE GENERATOR
      
    • uri_escape

      URI escape a string.

      Input
      {{ "foo, bar \baz?" | uri_escape }}
      
      Output
      foo,%20bar%20%5Cbaz?
      
    • url_encode

      Encodes any characters unsafe for a URL.

      Input
      {{ "john@example.com" | url_encode }}
      
      Output
      john%40example.com
      
    • xml_escape

      Select all the objects in an array where the key has the given value.

      Input
      {{ "<p>Hi Jekyll</p>"| xml_escape }}
      
      Output
      &amp;lt;p&amp;gt;Hi Jekyll&amp;lt;/p&amp;gt;
      

    Array

    • array_to_sentence_string

      Append characters to a string.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {{ page.my_array | array_to_sentence_string }}
      
      Output
      a, b, and c
      
    • first

      Get the first element of the passed in array.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {{ page.my_array | first }}
      
      Output
      a
      
    • group_by

      Group an array’s items by a given property.

      Input
      <!-- page.people is
      - name: "John"
        school: "Stanford"
      - name: "Jane"
        school: "Stanford"
      - name: "Joe"
        school: "Harvard"
      -->
      {{ page.people | group_by: "school" }}
      
      Output
      {
        "name"=>"Stanford",
        "items"=>[{
          "name"=>"John",
          "school"=>"Stanford"
        }, {
          "name"=>"Jane",
          "school"=>"Stanford"
        }]
      },
      {
        "name"=>"Harvard",
        "items"=>[{
          "name"=>"Joe",
          "school"=>"Harvard"
        }]
      }
      
    • join

      Joins an array with the specified character.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {{ page.my_array | join: ', ' }}
      
      Output
      a, b, c
      
    • jsonify

      Convert Hash or Array to JSON.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {{ page.my_array | jsonify }}
      
      Output
      ["a","b","c"]
      
    • last

      Get the last element of the passed in array.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {{ page.my_array | last }}
      
      Output
      c
      
    • map

      Accepts an array element’s attribute as a parameter and creates a string out of each array element’s value.

      Input
      <!-- page.people is
        - name: "John"
          school: "Stanford"
        - name: "Jane"
          school: "Stanford"
        - name: "Joe"
          school: "Harvard"
      -->
      {{ page.people | map: "name" }}
      
      Output
      JohnJaneJoe
      
    • push

      Adds an object to a array.

      Input
      {% assign my_array = "a,b,c" | split:"," %}
      {% assign my_array = my_array | push: 'd' %}
      
      {{ my_array | array_to_sentence_string }}
      
      Output
      a, b, c, and d
      
    • size

      Return the size of an array or string.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {{ page.my_array | size }}
      
      Output
      3
      
    • sort

      Sorts an array.

      Input
      <!-- page.my_array is ['c', 'a', 'b'] -->
      {{ page.my_array | sort }}
      
      Output
      ['a','b','c']
      
    • uniq

      Removes duplicate elements from an array.

      Input
      <!-- page.my_array is ['cat', 'dog', 'mouse', 'cat'] -->
      {{ page.my_array | uniq }}
      
      Output
      'cat', 'dog', 'mouse'
      
    • where

      Select all the objects in an array where the key has the given value.

      Input
      <!-- page.people is
        - name: "John"
          school: "Stanford"
        - name: "Jane"
          school: "Stanford"
        - name: "Joe"
          school: "Harvard"
      -->
      {{ page.people | where: "school", "Stanford" }}
      
      Output
      {"name"=>"John", "school"=>"Stanford"}{"name"=>"Jane", "school"=>"Stanford"}
      

    Integer

    • ceil

      Rounds a number up to the nearest whole number.

      Input
      {{ 1.2 | ceil }}
      
      Output
      2
      
    • divided_by

      Integer division.

      Input
      {{ 10 | divided_by:3 }}
      
      Output
      3
      
    • floor

      Rounds a number down to the nearest whole number.

      Input
      {{ 1.2 | floor }}
      
      Output
      1
      
    • minus

      Subtraction.

      Input
      {{ 4 | minus:1 }}
      
      Output
      3
      
    • modulo

      Remainder.

      Input
      {{ 3 | modulo:2 }}
      
      Output
      1
      
    • plus

      Addition.

      Input
      {{ 4 | plus:1 }}
      
      Output
      5
      
    • round

      Rounds a number to the nearest whole number.

      Input
      {{ 1.8 | round }}
      
      Output
      2
      
    • times

      Integer multiplication.

      Input
      {{ 10 | times:3 }}
      
      Output
      30
      

    Date

    • date_to_long_string

      Convert a date to long format.

      Input
      {{ site.time | date_to_long_string }}
      
      Output
      01 January 2016
      
    • date_to_long_rfc822

      Convert a Date into RFC-822 format.

      Input
      {{ site.time | date_to_rfc822 }}
      
      Output
      Mon, 07 Nov 2008 13:07:54 -0800
      
    • date_to_string

      Convert a date to short format.

      Input
      {{ site.time | date_to_string }}
      
      Output
      01 Jan 2016
      
    • date_to_xmlschema

      Convert a Date into ISO 8601 format.

      Input
      {{ site.time | date_to_xmlschema }}
      
      Output
      2008-11-07T13:07:54-08:00
      
    • date

      Converts a date into another format.

      Input
      {{ site.time | date: "%a, %b %d, %y" }}
      
      Output
      Wed, Jan 27, 16
      
      • %a - Abbreviated weekday (Sun)
      • %A - Full weekday name (Sunday)
      • %b - Abbreviated month name (Jan)
      • %B - Full month name (January)
      • %c - Preferred local date and time representation (Fri Jan 29 11:16:09 2016)
      • %d - Day of the month, zero-padded (05)
      • %-d - Day of the month (5)
      • %D - Formats the date (29/01/16).
      • %e - Day of the month (3).
      • %F - Returns the date in ISO 8601 format (2016-01-29).
      • %H - Hour of the day, 24-hour clock (07)
      • %I - Hour of the day, 12-hour clock (04)
      • %j - Day of the year (017)
      • %k - Hour of the day, 24-hour clock (7)
      • %m - Month of the year (04)
      • %M - Minute of the hour (09)
      • %p - Meridian indicator uppercase (AM)
      • %P - Meridian indicator lowercase (pm)
      • %r - 12-hour time (01:31:43 PM)
      • %R - 24-hour time (18:09)
      • %T - 24-hour time with seconds (18:09:13)
      • %s - Number of seconds since 1970-01-01 00:00:00 UTC (1452355261)
      • %S - Second of the minute (05)
      • %U - Week number of the current year, starting with the first Sunday as the first day of the first week (03)
      • %W - Week number of the current year, starting with the first Monday as the first day of the first week (09)
      • %w - Day of the week. Sunday is 0 (4)
      • %x - Preferred representation for the date (05/11/15)
      • %X - Preferred representation for the time (17:15:31)
      • %y - Year without a century (16)
      • %Y - Year with century (2016)
      • %Z - Time zone name (PST)
      • %% - Literal % character

    Liquid For Loops

    • else

      Condition when there are no items in the array.

      Input
      <!-- page.my_array is [] -->
      {% for item in page.my_array %}
        {{ item }}
      {% else %}
        There are no items!
      {% endfor %}
      
      Output
      There are no items!
      
    • first

      Returns whether it’s the first iteration.

      Input
      <!-- page.my_array is [1, 2, 3] -->
      {% for item in page.my_array %}
        {% if forloop.first %}
          First!
        {% else %}
          Not first
      {% endif %}
      {% endfor %}
      
      Output
      First! Not first Not first
      
    • index

      index of the current iteration.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {% for item in page.my_array %}
        {{ forloop.index }}
      {% endfor %}
      
      Output
      1 2 3
      
    • index0

      index of the current iteration (zero based).

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {% for item in page.my_array %}
        {{ forloop.index0 }}
      {% endfor %}
      
      Output
      0 1 2
      
    • last

      Returns whether it’s the last iteration.

      Input
      <!-- page.my_array is [1, 2, 3] -->
      {% for item in page.my_array %}
        {% if forloop.last %}
          Last!
        {% else %}
          Not last
        {% endif %}
      {% endfor %}
      
      Output
      Not last Not last Last!
      
    • length

      Length of the entire loop.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {% for item in page.my_array %}
        {{ forloop.length }}
      {% endfor %}
      
      Output
      3 3 3
      
    • limit

      Restrict how many items are looped through.

      Input
      <!-- page.my_array is [1, 2, 3, 4, 5] -->
      {% for item in page.my_array limit: 2 %}
        {{ item }}
      {% endfor %}
      
      Output
      1 2
      
    • offset

      Start looping from the nth item.

      Input
      <!-- page.my_array is [1, 2, 3, 4, 5] -->
      {% for item in page.my_array offset: 2 %}
        {{ item }}
      {% endfor %}
      
      Output
      3 4 5
      
    • reversed

      Reverses the order.

      Input
      <!-- page.my_array is [1, 2, 3, 4, 5] -->
      {% for item in page.my_array reversed %}
        {{ item }}
      {% endfor %}
      
      Output
      5 4 3 2 1
      
    • rindex

      Outputs the number of iterations left.

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {% for item in page.my_array %}
        {{ forloop.rindex }}
      {% endfor %}
      
      Output
      3 2 1
      
    • rindex0

      Outputs the number of iterations left (zero based).

      Input
      <!-- page.my_array is ['a', 'b', 'c'] -->
      {% for item in page.my_array %}
        {{ forloop.rindex0 }}
      {% endfor %}
      
      Output
      2 1 0
      

    Liquid Tags

    Variable

    • assign

      Create a new variable.

      Input
      {% assign my_variable = false %}
      {% if my_variable != true %}
        Hi there!
      {% endif %}
      
      Output
      Hi there!
      
    • capture

      Captures the string inside of the opening and closing tags and assigns it to a variable.

      Input
      {% capture my_variable %}
        Captured text.
      {% endcapture %}
      
      {{ my_variable }}
      
      Output
      Captured text.
      

    Iteration

    • break

      Causes the loop to stop iterating.

      Input
      {% for i in (1..5) %}
        {% if i == 3 %}
          {% break %}
        {% else %}
          {{ i }}
        {% endif %}
      {% endfor %}
      
      Output
      1 2
      
    • continue

      Causes the loop to skip the current iteration.

      Input
      {% for i in (1..5) %}
        {% if i == 3 %}
          {% continue %}
        {% else %}
          {{ i }}
        {% endif %}
      {% endfor %}
      
      Output
      1 2 4 5
      
    • cycle

      Loops through a group of strings and outputs them in the order that they were passed as parameters.

      cycle must be used within a for loop block.

      Input
      {% for i in (1..5) %}
        {% cycle 'red', 'blue', 'yellow' %}
      {% endfor %}
      
      Output
      red blue yellow red blue
      
    • decrement

      Creates a new variable and every time it’s called the value decreases by 1, with the initial value being -1.

      Input
      {% decrement my_variable %}
      {% decrement my_variable %}
      {% decrement my_variable %}
      
      Output
      -1
      -2
      -3
      

      Like increment, variables declared inside decrement are independent from variables created through assign or capture.

    • for

      Repeatedly executes a block of code.

      Input
      {% for page in site.pages %}
        {{ page.title }}
      {% endfor %}
      
      Output
      index
      about
      contact
      
    • increment

      Creates a new variable and every time it’s called the value increases by 1, with the initial value being 0.

      Input
      {% increment my_variable %}
      {% increment my_variable %}
      {% increment my_variable %}
      
      Output
      0
      1
      2
      

      Variables created through the increment tag are independent from variables created through assign or capture.

      In the example below, my_var is created through assign. The increment tag is then used several times on a variable with the same name. However, note that the increment tag does not affect the value of my_var that was created through assign.

      Input
      {% assign my_var = 15 %}
      {% increment var %}
      {% increment var %}
      {% increment var %}
      {{ my_var }}
      
      Output
      0
      1
      2
      15
      

    Control Flow

    • case

      Creates a switch statement to compare a variable with different values. case initializes the switch statement, and when compares its values.

      Input
      <!-- page.name is set to "home" -->
      {% case page.name %}
        {% when 'home' %}
          Home Page
        {% when 'about' %}
          About Page
        {% else %}
          Contact Page
      {% endcase %}
      
      Output
      Home Page
      
    • elsif

      Adds more conditions to an if or unless block.

      Input
      <!-- page.name is set to "contact" -->
      {% if page.name == 'about' %}
        About Page
      {% elsif page.name == 'contact' %}
        Contact Page
      {% else %}
        Other Page
      {% endif %}
      
      Output
      Contact Page
      
    • if

      Executes a block of code only if a certain condition is met.

      Input
      <!-- page.name is set to "about" -->
      {% if page.name == 'about' %}
        About Page
      {% endif %}
      
      Output
        About Page
      
    • operations

      Operators used in logic statements.

      • == equal
      • != not equal
      • > bigger than
      • < less than
      • >= bigger or equal
      • <= less or equal
      • or this or that
      • and must be this and that
      • contains includes the substring if used on a string, or element if used on an array
    • unless

      Similar to if, but executes a block of code only if a certain condition is not met.

      Input
      <!-- page.name is set to "about" -->
      {% unless page.name == "contact" %}
        It's not the contact page
      {% endunless %}
      
      Output
      It's not the contact page
      

      Which is the same as doing:

      {% if page.name != "contact" %}
        It's not the contact page
      {% endif %}
      

    Other

    • comment

      Don’t output the contained text.

      Input
      My name is {% comment %}Mr{% endcomment %} Jekyll
      
      Output
      My name is Jekyll
      
    • gist

      Embed a GitHub Gist.

      Input
      {% gist parkr/931c1c8d465a04042403 %}
      
      Output
      <noscript><pre>
      &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
      &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
       &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
      &lt;html&gt;
        &lt;head&gt;
          &lt;title&gt;503 backend read error&lt;/title&gt;
        &lt;/head&gt;
        &lt;body&gt;
          &lt;h1&gt;Error 503 backend read error&lt;/h1&gt;
          &lt;p&gt;backend read error&lt;/p&gt;
          &lt;h3&gt;Guru Mediation:&lt;/h3&gt;
          &lt;p&gt;Details: cache-lax1435-LAX 1453942175 1299394840&lt;/p&gt;
          &lt;hr&gt;
          &lt;p&gt;Varnish cache server&lt;/p&gt;
        &lt;/body&gt;
      &lt;/html&gt;
      </pre></noscript><script src="https://gist.github.com/parkr/931c1c8d465a04042403.js"> </script>
      
    • highlight

      Code snippet highlighting.

      Input
      {% highlight ruby %}
        def foo
          puts 'foo'
        end
      {% endhighlight %}
      
      Output
      <div class="highlight">
        <pre><code class="language-ruby" data-lang="ruby"><span class="k">def</span> <span class="nf">foo</span>
        <span class="nb">puts</span> <span class="s1">&#39;foo&#39;</span>
      <span class="k">end</span></code></pre></div>
      
    • include

      Inserts a file from the _includes directory.

      Input
      <h1>My site</h1>
      {% include nav.html %}
      
      Output
      <h1>My Site</h1>
      <ul class="nav">
        <li><a href="/">Home</a></li>
        <li><a href="/about/">About</a></li>
        <li><a href="/contact/">Contact</a></li>
      </ul>
      
    • include_relative

      Includes a file relative to the current file.

      Input
      <h1>My site</h1>
      {% include_relative about.html %}
      
      Output
      <h1>My Site</h1>
      <h1>About</h1>
      
    • post_url

      Generate the correct permalink URL.

      Input
      {% post_url 2010-07-21-name-of-post %}
      
      Output
      /news/2010/07/21/name-of-post/
      
    • raw

      No liquid will be parsed in within these tags.

      Input

      ~~~liquid{% raw %} {{ page.title }} {% endraw %} ~~~

      Output
      {{ page.title }}
      

    Markdown

    • blockquotes

      Input
      > Blockquotes are very handy in email to emulate reply text.
      > This line is part of the same quote.
      
      Output
      <blockquote>
        <p>Blockquotes are very handy in email to emulate reply text.
      This line is part of the same quote.</p>
      </blockquote>
      
    • code blocks

      Input
      ```
      def what?
        42
      end
      ```
      {: .language-ruby}
      
      Output
      <pre>
        <code class="language-ruby">
          def what?
            42
          end
        </code>
      </pre>
      
    • definition list

      Input
      HTML
      : Hypertext Markup Language, a standardized system for tagging text files.
      
      CSS
      : Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language
      
      Output
      <dl>
        <dt>HTML</dt>
        <dd>Hypertext Markup Language, a standardized system for tagging text files.</dd>
        <dt>CSS</dt>
        <dd>Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language</dd>
      </dl>
      
    • headings

      Input
      # H1
      
      ## H2
      
      ### H3
      
      #### H4
      
      ##### H5
      
      ###### H6
      
      Output
      <h1 id="h1">H1</h1>
      
      <h2 id="h2">H2</h2>
      
      <h3 id="h3">H3</h3>
      
      <h4 id="h4">H4</h4>
      
      <h5 id="h5">H5</h5>
      
      <h6 id="h6">H6</h6>
      
    • horizontal rules

      Input
      ---
      
      Output
      <hr />
      
    • lists

      Input
      1. First item
      2. Second item
      3. Third item
      
      * First item
      * Second item
      * Third item
      
      Output
      <ol>
        <li>First item</li>
        <li>Second item</li>
        <li>Third item</li>
      </ol>
      
      <ul>
        <li>First item</li>
        <li>Second item</li>
        <li>Third item</li>
      </ul>
      
    • paragraphs

      Input
      A paragraph is simply one or more consecutive lines of text, separated by one or more blank lines
      
      Output
      <p>A paragraph is simply one or more consecutive lines of text, separated by one or more blank lines</p>
      
    • tables

      Input
      | Tables        | Are           | Cool  |
      | ------------- |:-------------:| -----:|
      | col 3 is      | right-aligned | $1600 |
      | col 2 is      | centered      |   $12 |
      | zebra stripes | are neat      |    $1 |
      
      Output
      
      <table>
        <thead>
          <tr>
            <th>Tables</th>
            <th style="text-align: center">Are</th>
            <th style="text-align: right">Cool</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>col 3 is</td>
            <td style="text-align: center">right-aligned</td>
            <td style="text-align: right">$1600</td>
          </tr>
          <tr>
            <td>col 2 is</td>
            <td style="text-align: center">centered</td>
            <td style="text-align: right">$12</td>
          </tr>
          <tr>
            <td>zebra stripes</td>
            <td style="text-align: center">are neat</td>
            <td style="text-align: right">$1</td>
          </tr>
        </tbody>
      </table>
      
    • text markup

      Input
      **strong** text
      
      _emphasis_ text
      
      `inline` code
      
      [link](http://jekyllrb.com) text
      
      ![Alt tag](/path/to/image.jpg)
      
      
      Output
      <p><strong>strong</strong> text</p>
      
      <p><em>emphasis</em> text</p>
      
      <p><code>inline</code> code</p>
      
      <p><a href="http://jekyllrb.com">link</a> text</p>
      
      <p><img src="/path/to/image.jpg" alt="Alt tag" /></p>
      

    Page Variables

    • path

      The path to the raw post or page.

      Input
      {{ page.path }}
      
      Output
      index.html
      
    • url

      The URL of the Post without the domain, but with a leading slash.

      Input
      {{ page.url }}
      
      Output
      /index.html
      

    Paginator Variables

    • next_page_path

      path of next pagination page, or nil if no subsequent page exists.

      Input
      {{ paginator.next_page_path }}
      
      Output
      /blog/4
      
    • next_page

      page number of the next pagination page, or nil if no next page exists.

      Input
      {{ paginator.next_page }}
      
      Output
      4
      
    • page

      Current page number.

      Input
      {{ paginator.page }}
      
      Output
      1
      
    • per_page

      Number of posts per page.

      Input
      {{ paginator.per_page }}
      
      Output
      5
      
    • posts

      A list of posts for the current page.

      Input
      {% for post in paginator.posts %}
        {{ post.id }}
      {% endfor %}
      
      Output
      /2016/01/03/no-im-not /2016/01/04/im-back /2016/01/03/goodbye-world /2016/01/02/im-fleeting
      
    • previous_page_path

      path of previous pagination page, or nil if no previous page exists.

      Input
      {{ paginator.previous_page_path }}
      
      Output
      /blog/2
      
    • previous_page

      page number of the previous pagination page, or nil if no previous page exists.

      Input
      {{ paginator.previous_page }}
      
      Output
      2
      
    • total_pages

      Number of pagination pages.

      Input
      {{ paginator.total_pages }}
      
      Output
      6
      
    • total_posts

      Total number of posts in the site.

      Input
      {{ paginator.total_posts }}
      
      Output
      37
      

    Post Variables

    • categories

      The list of categories to which this post belongs.

      Input
      <!-- tags is set to
        categories:
          - news
      -->
      {{ page.categories | array_to_sentence_string  }}
      
      Output
      news
      
    • content

      The content of the post, rendered or un-rendered depending upon what Liquid is being processed and what post is.

      Input
      {{ page.content }}
      
      Output
      Hello World!
      
    • date

      The date assigned to the Post.

      Input
      {{ page.date }}
      
      Output
      2016-02-02 00:00:00 -0800
      
    • excerpt

      The un-rendered excerpt of the Post.

      Input
      {{ page.excerpt }}
      
      Output
      Hello World!
      
    • id

      An identifier unique to the Post.

      Input
      {{ page.id }}
      
      Output
      /2015/10/11/hello-world
      
    • next

      The next post relative to the position of the current post in site.posts. Returns nil for the last entry.

      Input
      {{ page.next.title }}
      
      Output
      /2016/01/02/hello-world.html
      
    • previous

      The previous post relative to the position of the current post in site.posts. Returns nil for the first entry.

      Input
      {{ page.previous.title }}
      
      Output
      /2016/01/02/im-fleeting.html
      
    • tags

      The list of tags to which this post belongs.

      Input
      <!-- tags is set to
        tags:
          - HTML
          - CSS
      -->
      {{ page.tags | array_to_sentence_string  }}
      
      Output
      HTML and CSS
      
    • title

      The title of the post.

      Input
      {{ page.title }}
      
      Output
      Hello World
      

    Site Variables

    • categories.category

      The list of all Posts in a category.

      Input
      {% for p in site.categories.news %}
        {{ p.url }}
      {% endfor %}
      
      Output
      /2016/01/03/goodbye-world.html
      /2016/01/01/hello-world.html
      
    • collections

      A list of all the collections.

      Input
      {{ site.collections | size }}
      
      Output
      1
      
    • configuration data

      All the variables set via the command line and your _config.yml are available through site.

      Input
      <!-- url is set to http://mysite.com in the configuration file -->
      {{ site.url }}
      
      Output
      http://mysite.com
      
    • data

      A list containing the data loaded from the YAML, JSON and CSV files located in the _data directory.

      Input
      {{ site.data.nba_players.first.name }}
      
      Output
      Michael Jordan
      
    • documents

      A list of all the documents in every collection.

      Input
      {{ site.documents | size }}
      
      Output
      19
      
    • html_pages

      A subset of site.pages listing those which end in .html

      Input
      {% for p in site.html_pages %}
        {{ p.path }}
      {% endfor %}
      
      Output
      about.html
      contact.html
      index.html
      
    • pages

      A list of all Pages.

      Input
      {% for p in site.pages %}
        {{ p.path }}
      {% endfor %}
      
      Output
      about.html
      contact.html
      index.html
      site-map.xml
      
    • posts

      A reverse chronological list of all Posts.

      Input
      {% for p in site.posts %}
        {{ p.url }}
      {% endfor %}
      
      Output
      /2016/01/03/goodbye-world.html
      /2016/01/02/im-fleeting.html
      /2016/01/01/hello-world.html
      
    • related_posts

      If the page being processed is a Post, this contains a list of up to ten related Posts. By default, these are the ten most recent posts.

      Input
      <!-- run on /_posts/2016-01-01-hello-world.md -->
      {% for p in site.related_posts %}
        {{ p.title }}
      {% endfor %}
      
      Output
      Goodbye World
      Im Fleeting
      
    • static_files

      A list of all static files (i.e. files not processed by Jekyll’s converters or the Liquid renderer).

      Input
      {% for file in site.static_files %}
        {{ file.path }}
      {% endfor %}
      
      Output
      /css/style.css
      /js/my-script.js
      
    • tags.tag

      The list of all Posts with a particular tag.

      Input
      {% for p in site.tags.sad %}
        {{ p.url }}
      {% endfor %}
      
      Output
      /2016/01/03/goodbye-world.html
      /2016/01/02/im-fleeting.html
      
    • time

      The current time (when you run the jekyll command).

      Input
      {{ site.time }}
      
      Output
      2016-01-28 08:32:19 -0800
      

    Static File Variables

    • extname

      The extension name for the file.

      Input
      {{ site.static_files.first.extname }}
      
      Output
      .css
      
    • modified_time

      The time the file was last modified.

      Input
      {{ site.static_files.first.modified_time }}
      
      Output
      1454000258
      
    • path

      The relative path to the file.

      Input
      {{ site.static_files.first.path }}
      
      Output
      /css/style.css
      

    Yaml

    • hashes

      Input
      # Nest hash
      my_hash:
        subkey:
          subsubkey1: 5
          subsubkey2: 6
        another:
          somethingelse: 'Important!'
      
      # Hash of hashes
      my_hash: {nr1: 5, nr2: 6}
      
    • sequences

      Input
      # sequence
      array:
        - 132
        - 2.434
        - 'abc'
      
      # sqeuence of sequences
      my_array:
      - [1, 2, 3]
      - [4, 5, 6]
      
    • variables

      Input
      a: 1
      b: 1.234
      c: 'abc'
      d: "abc"
      e: abc
      f: false # boolean type
      g: 2015-04-05 # date type
      
      # Enforcing strings
      h: !str 2015-04-05