【问题标题】:Jekyll Github pages vs Local server Liquid tags interpretation differencesJekyll Github 页面与本地服务器 Liquid 标签解释差异
【发布时间】:2015-11-25 10:25:51
【问题描述】:

我在 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 页面。有人知道为什么吗?

【问题讨论】:

    标签: jekyll liquid github-pages


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。那是我的代码中的一个错字,让我编辑这个问题,我实际上认为它不是site.github.pages_list,尽管使用了site.pages_list,但我得到了这个错误。您答案的第二部分正是我想要的。非常感谢!
    【解决方案2】:

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

    page.url 在本地生成 /about/archive 之类的值,但在 Github 页面上它会生成 /about.html/archive.html 之类的值,即使浏览器显示的是 {{site.url}}/about 之类的链接,而不是 @987654328 @。

    已使用过滤器修复。像这样:

    {% 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 %}
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2013-07-24
    相关资源
    最近更新 更多