似乎无法让Jekyll从根文件夹中查看子目录中的帖子

时间:2014-11-01 04:05:55

标签: yaml markdown jekyll liquid github-pages

我在我的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设置一些内容,我猜?

提前致谢。

2 个答案:

答案 0 :(得分:2)

修改:我的第一个回答是完全错误的。我在说话

_config.yml

collections:
  project:
    output: true

_project / project_1.md

---
layout: project
title: project
---

## Yo!

Project in **strong** yo `inline code`

    some code
    yolo !

_layouts / project.html

<!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)似乎解决了你的情况:

解决方案1 ​​

  

在公共html目录中创建名为blog的目录(即,在您的域指向的目录中)。   假设您正在使用某种部署方案(GitHub pagesdeployment methods),您需要让该部署方案告诉Jekyll部署到blog目录而不是它当前使用的目录

(在您的情况下blog将为projects

解决方案2

  

首先在本地创建一个目录,您可以在其中设置Jekyll blog   此目录位于_posts_sitecss等旁边   这只会保留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帖子而设置的内容。