【问题标题】:Can't seem to get Jekyll to see posts that are in subdirectories from the root folder似乎无法让 Jekyll 查看根文件夹的子目录中的帖子
【发布时间】:2014-11-01 04:05:55
【问题描述】:

我在我的 Jekyll 网站中使用了 GitHub Pages 的集合。我试图让 Jekyll 看到集合文件夹中的 Markdown 文件,_projects

这是文件结构的概要:

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 中设置一些东西,我猜?

提前致谢。

【问题讨论】:

  • 对于投了反对票的人,请告诉我这篇文章有什么问题,或者请就您的负面感受提供反馈。谢谢。

标签: yaml markdown jekyll liquid github-pages


【解决方案1】:

编辑:我的第一个答案完全错误。我在说话

_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 一切都很好!

【讨论】:

  • 我认为带下划线的文件夹用于_config.yml 文件中的集合。如果没有,官方在文件夹中使用集合的方式是什么,以及如何将文件放入其中,使其对应于Jekyll的{% for element in site.collection_name %}in Liquid?
  • 你是对的,我的第一个答案完全错了。我说的是页面而不是集合。我已经编辑了我的答案。
  • 我看到了编辑的部分。现在开始工作了!真正理解 Jekyll 的另一个令人困惑的部分感觉很好。我仍然觉得文档需要解释如何使用带有嵌套文件夹的集合,以便 Liquid 解析它们并知道要生成什么。我可以在嵌套文件夹中收集一组帖子,例如 _project &gt; someFolder &gt; anotherFolder &gt; project_1.md,如果文档没有解释这样的边缘情况,我不知道如何让 Jekyll 在没有帮助的情况下看到 project_1.md
  • 无法编辑以前的 cmets。我的意思是在_config.yml 中设置集合时。如果在指定集合的​​根文件夹时集合可以看到所有嵌套文件夹,那不等于说您是including 文件夹吗?还是需要include根文件夹,这样收藏才能看到那些子目录下的嵌套文件夹和帖子?
  • 是的,您的收藏夹和子文件夹中包含的所有内容都可以看到。
【解决方案2】:

OP tom-mai78101comments来自Hemanth.HM的文章“Jekyll Blog From a Subdirectory

证实了我的猜测,子目录仅由 Markdown 文件中的永久链接定义,而不是通过存储库中的文件夹定义。
I quickly wrote a code snippet, and created a few Markdown files shown here,我现在可以创建网页了使用嵌套在 _posts 文件夹中的 Markdown 文件。
简而言之,在 _config.yml 中无需使用集合,只需使用默认的 _posts
如果有办法更改_config.yml 中的默认永久链接设置,那就更好了。


问题“Jekyll not generating pages in subfolders”可能是相关的,以便在子文件夹中生成一些页面。

或者你可以use a different baseurl。 (杰基尔 1.0+)

或使用_include 文件夹(参见“Jekyll paginate blog as subdirectory”)


或者,文章“Running Your Jekyll Blog from a Subdirectory”(来自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 帖子而设置的内容。

【讨论】:

  • 同一种解决方案(使用永久链接)h3manth.com/new/blog/2013/jekyll-blog-from-a-subdirectory
  • 我用 _posts 做了 6 个小时的试验,在 Stack Overflow 中搜索。我注意到 Markdown 文件只有在文件按照以下结构命名时才能看到:YYYY-MM-DD-TITLE.md。将这些文件添加到 _posts 的子目录中仍然可以让 Jekyll 看到这些文件,除非您必须为每个 Markdown 文件添加自己的永久链接。 Markdown 文件中的用户定义的永久链接允许在为每个 URL 生成网页时看起来更清晰。就在我正要回答我自己的问题时,你的答案跳了出来。
  • 我阅读了您的评论链接,并确认了我的猜测,即子目录仅由 Markdown 文件中的永久链接定义,而不是通过存储库中的文件夹定义。 I quickly wrote a code snippet, and created a few Markdown files shown here,我现在可以使用嵌套在 _posts 文件夹中的 Markdown 文件创建网页。总之,_config.yml中不需要使用集合,直接使用默认的_posts即可。如果有办法更改_config.yml 中的默认永久链接设置会更好。
  • @tom_mai78101 我同意。我已将您的评论包含在答案中以提高知名度。
  • 谢谢。如果有人知道如何使用集合和自定义文件名结构,如 TITLE-YEAR.mdYEAR-TITLE-DAY.md,同时仍然允许 Jekyll 查看 Markdown 文件,无论它们是在 _posts 还是在用户定义的集合文件夹中,它会非常有帮助,可以添加到 Jekyll 官方文档中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多