我想在我的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
答案 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 %}