Fix to collections.js for site.collections change in Jekyll 3
Opened this issue · 1 comments
heacu commented
Jekyll couldn't build my site. I tracked the problem down to lib/local/collections.js, and changed it like so:
var Collections = (function(window, undefined) {
/*
* Listing of all the collections and documents. Generated
* automatically by Jekyll and used e.g for the auto-linking
* feature. Don't edit this file unless you are sure what you are
* doing.
*/
var listing = {
{% for i in site.collections %}{% assign c = i %}
"{{ c.label }}": [{% for d in c.docs %}
{
"title": "{{ d.title }}",
"url": "{{ site.baseurl }}{{ d.url }}",
},{% endfor %}
],
{% endfor %}
};
return {
listing: listing,
};
})(window);
I made this change because site.collections has changed in Jekyll 3 http://jekyllrb.com/docs/upgrading/2-to-3/#sitecollections-has-changed. My site builds again now so the change seems to have worked.
spyysalo commented
@torma : thanks for noting this! The compatibility hack for #16 appears to have ceased to work somewhere between jekyll 3.3.1 and 3.6.2. The error for 3.6.2 is
Liquid Exception: 1 is not a symbol nor a string in lib/local/collections.js
jekyll 3.6.2 | Error: 1 is not a symbol nor a string
I'll adopt your solution if I can't figure out a backward-compatible reformulation.