Jekyll Github页面vs本地服务器Liquid标签解释差异

时间:2015-11-25 10:25:52

标签: jekyll liquid github-pages

我在html文件中使用以下液体标签逻辑。

{% assign custom_share = true %}

{% for p in site.pages_list %}{% if page.url == p[1] %}
  {% assign custom_share = false %}
{% endif %}{% endfor %}

{% if custom_share %}
    This page is not in the list.
{% endif %}

我的jekyll _config.yml有一个像这样的变量pages_list

pages_list:       
  About: '/about'
  Archive: '/archive'
  Feed: '/atom.xml'
  Email: '/subscribe-via-email'

当我jekyll serve这些液体标签正常工作时,它似乎无法在github页面上运行。谁知道为什么?

2 个答案:

答案 0 :(得分:1)

访问您的网页列表可以使用site.pages_list,而不是site.github.pages_list变量。

site.github仅包含github pages上提供的元数据。 请注意,可以在github-metadata gem的帮助下在本地访问这些元数据。

另一个原因可能是您在Github页面上使用当前版本的jekyll不支持的extensionless url see dependencies version here

答案 1 :(得分:0)

问题在于Github Pages如何处理链接。

page.url在本地生成/about/archive等值,但在Github Pages上,它会生成/about.html/archive.html等值,即使浏览器显示的是{{site.url}}/about而非{{site.url}}/about.html等链接。

修复使用过滤器。像这样的东西:

{% assign custom_share = true %}

{% assign link = page.url | remove: ".html" %}

{% for p in site.pages_list %}{% if link == p[1] %}
  {% assign custom_share = false %}
{% endif %}{% endfor %}

{% if custom_share %}
    This page is not in the list.
{% endif %}