2014-10-21 1 views

답변

1

귀하의 데이터 조직 방법을 알고 있다고 가정합니다. 당신은 예를 들어, 정확한 데이터 구조, 알 수없는 경우

{% assign splitMark = "###" %} 
{% assign arr = "" %} 

{% for el in site.foo %} 

    {% assign arrSize = arr | size %} 

    <!-- if we already have something in our string 
     add the splitMark at the end --> 
    {% if arrSize > 0 %} 
     {% capture arr %}{{arr}}{{splitMark}}{%endcapture%} 
    {% endif %} 

    <!-- array + foo.foo value + splitMark --> 
    {% capture arr %}{{arr}}{{el.foo}}{{splitMark}}{%endcapture%} 

    <!-- transform an array to a string 
    with elements delimited by splitMark --> 
    {% assign bazStr = el.baz | join: splitMark %} 

    <!-- array + transformed array --> 
    {% capture arr %}{{arr}}{{bazStr}}{%endcapture%} 

{% endfor %} 

<!-- transform our string to an array splitting at the splitMark --> 
{% assign arr = arr | split: splitMark %} 

<script> 
    var my_var = {{ arr | jsonify }}; 
</script> 

:

- 
    foo: "bar" 
    baz: ["a", "b", "c", 10] 
    - 
    foo: baz 
    baz: ["x", "y"] 
    any: other 
    key: ['toto','titi'] 

을 당신은 플러그인 방식으로 가야한다. 포함 된 파일 _plugins/flatten.rb을 만듭니다

module Jekyll 
    module FlattenArray 
    def flatten(datas) 

     datas.flat_map(&:values).flatten 

    end 
    end 
end 

Liquid::Template.register_filter(Jekyll::FlattenArray) 

이제 다음과 같이 당신의 datas를 평평하게 할 수 있습니다

var my_var = {{ site.foo | flatten | jsonify }}; 
+0

와우, 감사합니다! 이것은 아주 정교했다. 내가 집에 갈 때 나는 한 번 살펴볼 것이다. 다시 한 번 감사드립니다! – Unidan

관련 문제