Jekyll Collection不渲染

时间:2016-09-13 18:21:11

标签: jekyll liquid templating

我想在我的jekyll网站上为旧博客帖子创建一个存档。以前,我的结构是在我的网站首页index.html上提供_posts的内容。在线阅读了集合文档和一些教程后,我在我的结构中添加了一个集合文件夹_archive,并在其中添加了一个名为test-file.markdown.的测试文件

但是,url mysite.com/archive/test-file 完全重新生成我的主index.html,而不是集合内容

结构:

_archive
    index.html
    test-file.markdown
_includes
    about.html
    head.html
    ... other stuff ...
_layouts
    default.html
_posts
    post1.markdown
    post2.markdown
    ... other stuff ...
css
img
js
_config.yaml
... other stuff ...

测试file.markdown

---
layout: default
title: test
---

_config.yml

# Site settings
title: test
email: test@test.com
url: http://www.test.com


# Color settings (hex-codes without the leading hash-tag)
color:
  primary: ffffff #80B3FF
  primary-rgb: "24,288,156" #"128,179,255"
  secondary: 2c3e50 #FD6E8A
  secondary-dark: 233140 #A2122F
  third: 979797

collections:
  archive:
    output: true
    permalink: /archive/:path/

# Build settings
markdown: kramdown
permalink: pretty

mysite.com/archive/index.html

---
---
{% for p in site.archive %}
  {{ p}}
  {{ p.title }}
{% endfor %}

这将重新呈现主index.html,而不是test-file.markdown的内容。

如何在mysite.com/archive /?

中正确呈现_archive的内容

编辑:将---添加到index.html

2 个答案:

答案 0 :(得分:0)

你添加了:

---
---

{% for p in site.archive %}
{{ p}}
{{ p.title }}
{% endfor %}

在index.html文件的顶部?如果它丢失了,它就不会通过jekyll的模板引擎运行该文件中的任何内容。

答案 1 :(得分:0)

如果没有看到整个网站,很难说出你的问题究竟是什么。如果可能,请提供回购URL。

如果/index.html输出中出现/_archive/test-file.markdown的内容,则post循环可能位于默认布局文件中,因为两个文件共享该布局。这里的解决方案是将相关内容移到/index.html

我相信你的/_archive/index.html没有被输出。将/_archive/index.html移至/archive.html。 Jekyll不处理_archive文件夹内的页面,因为它以下划线开头。

然后,您将使用当前配置输出这些文件:

  • /archive/index.html
  • /archive/test-file/index.html

在我看来,您应该将帖子保留为帖子,无论是否存档。然后,您可以在存档帖子时保留URL,而不必设置301或将其丢失为大空白。

要执行此操作,请将前置事项添加到已归档的帖子中:

---
archived: true
---

您当前的帖子(您可以使用defaults来保存重复):

---
archived: false
---

排除主要帖子循环中的已归档帖子:

{% assign posts = site.posts | where: "archived", false %}

排除存档页面上的当前帖子:

{% assign archived_posts = site.posts | where: "archived", true %}