2015-01-25 2 views
8

Предположим, у меня есть две ссылки: «все сообщения» и «личные». Когда пользователь нажимает «личную» ссылку, он должен видеть только сообщения, которые имеют категорию «личные». Прямо сейчас, жидкий тег - {% for post in site.posts %}. Я хочу узнать, есть ли способ доступа к переменной site.posts из javascript, чтобы я мог прослушивать событие click и динамически фильтровать сообщение. Если нет, что мне делать?Jekyll: жидкий тег внутри javascript

ответ

14

Вы можете заставить Jekyll разобрать любой файл, добавив к нему пустую переднюю часть.

Пример: активы/JS/script.js

Редактировать 16/07/28: вы можете использовать jsonifyfilter для любого хэша или массива

--- 
--- 
{{ 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 var.

+0

это приносит мне ошибку «Uncaught SyntaxError: Неожиданный токен {« как только я включаю теги жидкости –

+0

True. Я отредактировал свой ответ. –

+0

Добавление пустого переднего элемента в верхнюю часть моего js-файла приводит к срабатыванию предупреждения об ошибке «Ликвидация исключения: синтаксис: повреждение: неожиданный токен». – user3411192

Смежные вопросы