索引页面检索所有帖子的变量

时间:2015-06-01 07:46:42

标签: javascript jekyll github-pages

我有一个基于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页面上,所以插件是不可能的。

1 个答案:

答案 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版本,你需要创建一个包含

的Gemfile
source 'https://rubygems.org'
gem 'github-pages'

然后你做:

gem bundler install
bundle install
bundle exec jekyll serve
Bing! http://0.0.0.0:4000/是一切都好的地方!