У меня есть блог на основе Jekyll, который имеет некоторые данные о местоположении в начале каждого сообщения.Индексная страница извлекает переменную из всех сообщений
Например:
mapping:
locations:
- title: Times Square
latitude: 40.758885
longitude: -73.985134
- title: Central Park
latitude: 40.782841
longitude: -73.965350
Я хотел бы получить все места во всех моих постах, поэтому я могу построить их на карте. В настоящее время я отображаю все местоположения на карте для одного сообщения в верхней части этого сообщения, передавая значения в функцию javascript, которую я модифицировал из функциональности плагина here.
Например: function() { jekyllMapping.loadScript({{ page.mapping | jsonify }}) };
У меня возникли проблемы с извлечением всех мест со всех постов перейти к одной и той же функции, как JSON.
Я попытался:
{% capture travel_locations %}
{% for post in site.categories.travel %}
{% for location in post.mapping.locations %}
{{ location | jsonify }}{% unless forloop.last %},{% endunless %}{% endfor %}
{% unless forloop.last %},{% endunless %}{% endfor %}
{% endcapture %}
% Захват% появляется вернуться в строке не объект элемента массива, поэтому я вынужден jsonify выхода внутри цикла. Конечный результат близок, но не дает мне никакого элемента root json и не является массивом, поэтому я не могу его перебирать в javascript. Я могу конкатенировать вот так: "{\"locations\":[" + {{ travel_locations }} + "]}"
, но он, конечно, просто рассматривается как большая экранированная строка, а не объект json.
Я также попытался расщепить результат захвата обратно в массив, но все равно не повезло. {% assign my_locations = "{{ travel_locations | split:',' | jsonify }} %}
Надеюсь, что мне не хватает чего-то действительно простого для извлечения значений переменных из всех сообщений в категории?
Кроме того, я размещаю блог как статический сайт на страницах github, поэтому для плагинов не может быть и речи.
А, похоже, я был слишком усложнён и путался, используя захват. Я просто попробовал ваш ответ, но в результате получается пустой массив? {% assign locations = "" | split: ""%} {% для публикации в site.categories.travel%} \t {% для местоположения в post.mapping.locations%} \t \t {% assign location = locations | push: location%} \t {% endfor%} {% endfor%} –
Он работает здесь. Возможно, у вас есть проблема с именем переменной. –
Это определенно синтаксис для обработки массивов? Если я добавлю счетчик в свой внутренний вид, он будет зациклировать правильное количество раз: {% assign counter = 0%} {% for post in site.categories.travel%} \t {% для местоположения в должности .mapping.locations%} \t \t {% assign counter = counter | плюс: 1%} \t {% endfor%} {% endfor%} console.log ({{counter}}); –