Say I want to have a page with content like this:
<h1>{{page.comment_count}} Comment(s)</h1>
{% for c in page.comment_list %}
<div>
<strong>{{c.title}}</strong><br/>
{{c.content}}
</div>
{% endfor %}
There are no variables on the page named comment_count
or comment_list
by default; instead I want these variables to be added to the page from a Jekyll plugin. Where is a safe place I can populate those fields from without interfering with Jekyll's existing code?
Or is there a better way of achieving a list of comments like this?
Unfortunately, there isn't presently the possibility to add these attributes without some messing with internal Jekyll stuff. We're on our way to adding hooks for
#after_initialize
, etc but aren't there yet.My best suggestion is to add these attributes as I've done with my Octopress Date plugin on my blog. It uses Jekyll v1.2.0's
Jekyll::Post#to_liquid
method to add these attributes, which are collected viasend(attr)
on thePost
:super(attrs + %w[ ... ])
will ensure that all the old attributes are still included, then collect the return values of the methods corresponding to the entries in theString
array.This is the best means of extending posts and pages so far.