귀하의 데이터 조직 방법을 알고 있다고 가정합니다. 당신은 예를 들어, 정확한 데이터 구조, 알 수없는 경우
{% 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 }};
와우, 감사합니다! 이것은 아주 정교했다. 내가 집에 갈 때 나는 한 번 살펴볼 것이다. 다시 한 번 감사드립니다! – Unidan