2016-11-28 4 views
0

У меня есть JSON-файл со следующей структурой:Отображение данных в формате JSON с критериями Джекила

{ 
    "resources": [ 
     { 
      "date": "Nov 7", 
      "content": [ 
       { 
        "articleTitle":"The Distribution of Users’ Computer Skills: Worse Than You Think", 
        "articleUrl":"https://www.nngroup.com/articles/computer-skill-levels/?ref=boomkrak", 
        "articleAuthor": "Jakob Nielson", 
        "articleTag": "ux, web design" 
       }, 
       { 
        "articleTitle":"How to Use Animation to Improve UX", 
        "articleUrl":"https://uxplanet.org/how-to-use-animation-to-improve-ux-338819e93bdb#.84b3m022s?ref=boomkrak", 
        "articleAuthor": "Nick Babich", 
        "articleTag": "ux, animation" 
       } 
      ] 
     }, 
     { 
      "date": "Nov 15", 
      "content": [ 
       { 
        "articleTitle":" 7 Things Every Designer Needs to Know about Accessibility", 
        "articleUrl":"https://medium.com/salesforce-ux/7-things-every-designer-needs-to-know-about-accessibility-64f105f0881b#.5pgg5014x?ref=boomkrak", 
        "articleAuthor": "Jesse Hausler", 
        "articleTag": "ux, web design, accessibility" 
       }, 
       { 
        "articleTitle":"Get the most out of your research with storytelling", 
        "articleUrl":"https://blog.intercom.com/get-the-most-out-of-your-research-storytelling/?ref=boomkrak", 
        "articleAuthor": "Jillian Wells", 
        "articleTag": "design research, collaboration" 
       } 
      ] 
     } 
    ] 
} 

Я хочу, чтобы показать статью, основанную на каждой метке. Например, если я хочу показать статьи ux, тогда должны быть показаны все статьи с тегом ux.

Кто-нибудь знает, как это сделать в Джекилле?

ответ

1

Учитывая, что Вашие данные в _datas/articles.json, вы можете использовать этот заголовочный файл (_includes/listbyTag.html):

{% assign tag = include.tag %} 
{% assign days = site.data.articles.resources %} 
{% assign list = ""| split: "/" %} {% comment %} creates an empty array {% endcomment %} 

{% for day in days %} 
    {% for article in day.content %} 
    {% if article.articleTag contains tag %} 
     {% assign list = list | push: article %} 
    {% endif %} 
    {% endfor %} 
{% endfor %} 

{% if list.size != 0 %} 
    <h3>Found {{ list.size }} posts for tag : {{ tag }}</h3> 
    <ul> 
    {% for post in list %} 
     <li>{{ post.articleTitle }}</li> 
    {% endfor %} 
    </ul> 
{% endif %} 

Теперь вы можете включить его в любом месте с:

{% include listByTag.html tag="ux" %} 

Или для страницы тегов:

--- 
tag: ux 
title: my title 
layout: default 
--- 
{% include listByTag.html tag=page.tag %} 
+0

Как передать тег переменной по ссылке, чтобы он мог быть динамическим? Может быть, что-то вроде отправки метода GET/POST на php? –

+0

Jekyll статичен, поэтому нет логики на стороне сервера. Вам нужно будет создать страницу по тегу. См. Мой отредактированный ответ. –

+0

А я вижу. Спасибо, Дэвид! –