我在我的Jekyll网站上使用了GitHub Pages的集合。我试图让Jekyll看到集合文件夹_projects
中的Markdown文件。
这是文件结构的概要:
root
│
├─ _projects
│ │
│ ├─ project_1.md
│ └─ project_2.md
│
└─ /*Rest of the Jekyll folders and files, _posts, _includes, etc.*/
目前,我意识到您必须将Markdown文件放在根目录中,因此当您点击通过固定链接指向它们的链接后,Jekyll可以查看和解析文件以显示它们。但它不能"看" Markdown文件,如果文件不在根文件夹中,经过一段时间的测试。
有没有办法让Jekyll在子文件夹_projects
中查看和解析文件,就像它可以看到根文件夹中的文件一样?也许我需要在_config.yml
设置一些内容,我猜?
提前致谢。
答案 0 :(得分:2)
修改:我的第一个回答是完全错误的。我在说话
collections:
project:
output: true
---
layout: project
title: project
---
## Yo!
Project in **strong** yo `inline code`
some code
yolo !
<!DOCTYPE html>
<html>
{% include head.html %}
<body>
{% include header.html %}
<div class="page-content">
<div class="wrapper">
{{ content }}
</div>
</div>
{% include footer.html %}
</body>
</html>
您现在有一个project/project_1.html
页。
无需使用include:
参数以便Jekyll查看集合文件夹或子文件夹。
exclude:
参数可用于忽略集合中的子文件夹。
结束修改
旧答案(与收集无关)
Jekyll会忽略您的_project
文件夹,就像任何underscored folder
要强制Jekyll解析此文件夹中的文件,请在_config.yml
中添加:
include:
- _project
jekyll build
一切都很好!
答案 1 :(得分:1)
OP tom-mai78101 comments文章&#34; Jekyll Blog From a Subdirectory&#34;来自Hemanth.HM
已经确认我的猜测子目录仅由Markdown文件中的固定链接定义,而不是通过存储库中的文件夹定义。
I quickly wrote a code snippet, and created a few Markdown files shown here,我现在可以使用嵌套在_posts
文件夹中的Markdown文件创建网页。
简而言之,我们无需在_config.yml
中使用集合,只需使用默认的_posts
。 如果有办法更改_config.yml
中的默认永久链接设置,情况会更好。
问题&#34; Jekyll not generating pages in subfolders&#34;可能是相关的,以便在子文件夹中生成一些页面。
或者你可以use a different baseurl。 (Jekyll 1.0 +)
或使用_include
文件夹(请参阅&#34; Jekyll paginate blog
as subdirectory&#34;)
或者,文章&#34; Running Your Jekyll Blog from a Subdirectory&#34; (来自Josh Branchaud)似乎解决了你的情况:
在公共html目录中创建名为
blog
的目录(即,在您的域指向的目录中)。 假设您正在使用某种部署方案(GitHub pages或deployment methods),您需要让该部署方案告诉Jekyll部署到blog
目录而不是它当前使用的目录
(在您的情况下blog
将为projects
)
首先在本地创建一个目录,您可以在其中设置Jekyll
blog
此目录位于_posts
,_site
,css
等旁边 这只会保留index.html
等非帖子文件blog
帖子仍会显示在_posts目录中。接下来,我们将告诉Jekyll,我们希望它能够收集我们的博客文章,并在生成它们时将它们放在名为blog的目录中。
这可以通过在_config.yml
文件中添加永久链接设置来完成 将这样的行添加到文件的顶部:
permalink: /blog/:categories/:year/:month/:day/:title.html.
默认(您可能已经使用过)将
posts
放在以类别开头的目录结构中,后跟日期,最后将博客文章的标题作为html文件的名称。
其中,拼写将是
/:categories/:year/:month/:day/:title.html.
这看起来很熟悉吗?当然可以。这是我们上面使用的,没有
/blog
部分 我们基本上是在模拟默认目录结构,并在开头添加我们的blog
目录。最后,您要将
index.html
文件添加到您创建的blog
目录中。
这样,当某人访问mydomain.com/blog/
时,他们就会看到您提供的blog
个帖子 此索引页面或多或少会完全反映您最初为列出blog
帖子而设置的内容。