我有一个基于Jekyll的博客,每个帖子的前端都有一些位置数据。
例如:
get_next_item(...)
我想检索所有帖子中的所有位置,以便我可以在地图上绘制它们。目前,我通过将值传递到我从插件功能here修改的javascript函数,在地图顶部显示单个帖子的地图上的所有位置。
例如:
mapping:
locations:
- title: Times Square
latitude: 40.758885
longitude: -73.985134
- title: Central Park
latitude: 40.782841
longitude: -73.965350
我无法从所有帖子中检索所有位置以传递给与json相同的功能。
我试过了:
function () { jekyllMapping.loadScript( {{ page.mapping | jsonify }} ) };
%Capture%似乎作为字符串而不是数组元素对象返回,因此我被迫将循环中的输出jsonify。最后的输出很接近,但没有给我一个根json元素,也不是一个数组,所以我不能在javascript中迭代它。我可以像这样{% 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 %}
连接,但它当然只被视为一个大的转义字符串而不是json对象。
我也尝试将捕获结果拆分回数组但仍然没有运气。
"{\"locations\":[" + {{ travel_locations }} + "]}"
我希望我错过了从类别中的所有帖子中检索变量值的简单方法吗?
另外,我将博客作为静态网站托管在github页面上,所以插件是不可能的。
答案 0 :(得分:2)
您可以使用assign
创建一个空数组
{% assign locations = "" | split: "" %}
然后填写您的位置
{% for post in site.categories.travel %}
{% for location in post.mapping.locations %}
{% assign locations = locations | push: location %}
{% endfor %}
{% endfor %}
现在你有一个包含所有位置的数组,准备进行jsonified。
修改: 此代码将在当前的Github页面上运行' Jekyll版本:2.4.0
为了与Github Pages'同步工作jekyll版本,你需要创建一个包含
的Gemfilesource 'https://rubygems.org'
gem 'github-pages'
然后你做:
gem bundler install
bundle install
bundle exec jekyll serve
Bing! http://0.0.0.0:4000/是一切都好的地方!