Jekyll: 在 JavaScript 中使用 Liquid 标签

13
假设我有两个链接:“所有文章”和“个人”。当用户点击“个人”链接时,他只应该看到类别为“个人”的文章。现在,液态标签是{% for post in site.posts %}。我想知道是否有一种方法可以从JavaScript访问变量site.posts,以便我可以侦听点击事件并动态过滤帖子。如果没有,我该怎么办?
1个回答

21

通过添加一个空的front matter,你可以让Jekyll解析任何文件。

例如:assets/js/script.js

编辑于 16/07/28:你可以使用jsonify 过滤器来处理任何哈希表或数组。

---
---
{{ site.posts | jsonify }}

旧答案

---
---
{% capture posts %}
[
{% for post in site.posts %}
{
"title"    : "{{ post.title }}",
"url"      : "{{ post.url }}",
"date"     : "{{ post.date | date: "%B %d, %Y" }}",
"content"  : "{{ post.content | escape }}"
} {% if forloop.last %}{% else %},{% endif %}
{% endfor %}
]
{% endcapture %}
var posts = {{posts | strip_newlines}}

这将会把site.posts对象集合以json形式呈现,并将它们分配给你的JavaScript变量posts


只要我包含液态标签,它就会给我返回错误信息“Uncaught SyntaxError: Unexpected token {”。 - Maximus S
3
在我的JS文件顶部添加空的Front Matter会触发“Liquid Exception: SyntaxError: Unexpected token”警告。 - Edward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接