索引页面从所有帖子中检索变量
Index page retrieve variable from all posts
我有一个基于 Jekyll 的博客,每个 post 的前端都有一些位置数据。
例如:
mapping:
locations:
- title: Times Square
latitude: 40.758885
longitude: -73.985134
- title: Central Park
latitude: 40.782841
longitude: -73.965350
我想检索我所有 post 中的所有位置,以便我可以将它们绘制在地图上。目前,我通过将值传递到我从插件功能 here 修改的 javascript 函数中,在 post 顶部显示地图上单个 post 的所有位置.
例如:
function () { jekyllMapping.loadScript( {{ page.mapping | jsonify }} ) };
我无法从所有 post 中检索所有位置以传递给与 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 %}
%Capture% 在 return 看来是一个字符串而不是数组元素对象,因此我不得不 json 验证循环内的输出。最终输出很接近,但没有给我根 json 元素,也不是数组,因此我无法在 javascript 中对其进行迭代。我可以像这样连接 "{\"locations\":[" + {{ travel_locations }} + "]}"
但它当然只是被视为一个大的转义字符串而不是 json 对象。
我也试过将捕获结果拆分回一个数组,但仍然没有成功。
{% assign my_locations = "{{ travel_locations | split:',' | jsonify }} %}
我希望我遗漏了一些非常简单的东西,可以从类别中的所有 post 中检索变量值?
此外,我将博客作为静态站点托管在 github 页面上,因此插件是不可能的。
您可以使用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/是一切都ok的地方!
我有一个基于 Jekyll 的博客,每个 post 的前端都有一些位置数据。
例如:
mapping:
locations:
- title: Times Square
latitude: 40.758885
longitude: -73.985134
- title: Central Park
latitude: 40.782841
longitude: -73.965350
我想检索我所有 post 中的所有位置,以便我可以将它们绘制在地图上。目前,我通过将值传递到我从插件功能 here 修改的 javascript 函数中,在 post 顶部显示地图上单个 post 的所有位置.
例如:
function () { jekyllMapping.loadScript( {{ page.mapping | jsonify }} ) };
我无法从所有 post 中检索所有位置以传递给与 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 %}
%Capture% 在 return 看来是一个字符串而不是数组元素对象,因此我不得不 json 验证循环内的输出。最终输出很接近,但没有给我根 json 元素,也不是数组,因此我无法在 javascript 中对其进行迭代。我可以像这样连接 "{\"locations\":[" + {{ travel_locations }} + "]}"
但它当然只是被视为一个大的转义字符串而不是 json 对象。
我也试过将捕获结果拆分回一个数组,但仍然没有成功。
{% assign my_locations = "{{ travel_locations | split:',' | jsonify }} %}
我希望我遗漏了一些非常简单的东西,可以从类别中的所有 post 中检索变量值?
此外,我将博客作为静态站点托管在 github 页面上,因此插件是不可能的。
您可以使用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/是一切都ok的地方!