【问题标题】:Jekyll definition for site or page variables?站点或页面变量的 Jekyll 定义?
【发布时间】:2019-11-18 11:59:35
【问题描述】:

我是 Jekyll 的新手(实际上我不是前端开发人员)。在许多情况下,当使用 Jekyll 时,我应该使用 site.pagespage.title 等。

official doc 中,这些变量是有含义的。但是,看完后我还是一头雾水。

例如:

  • site.pages:所有页面的列表;
  • page.title:页面标题;

我仍然想知道“所有页面”是什么意思:我项目根目录中的所有页面?还是我项目任何深度的所有页面?除了页面的定义是什么?

我认为文档对我来说不够清楚。任何人都知道更具体的细节,例如site.pages 代码中的定义位置?如果我知道定义在哪里,也许我可以得到更多。

还有更多:

  • site:站点范围的信息 + 来自 _config.yml 的配置设置。

那么关于所有“站点范围信息”的更多信息,或这些“站点范围信息”的定义位置?

任何帮助表示感谢。

【问题讨论】:

    标签: jekyll jekyll-theme


    【解决方案1】:

    在基础层面,Jekyll 中有 5 种数据类型

    • 页面
    • 静态文件
    • 文档
    • 收藏
    • 数据文件

    前两个粗体可以看作是 content-type 原语。 Jekyll 使用 front matter — 由一对连续三个破折号包围的键值对。例如:

    ---
    foo: bar
    ---
    

    ——确定给定的内容文件是否需要由 Jekyll处理

    如果文件一开始不包含前面的内容,它只是简单地从source复制到destination原样而不做任何更改。这样的文件称为静态文件

    否则,文件的内容将被发送以进行处理,最终生成一个 HTML 文件。此类文件是 PagesDocuments。这两者之间的区别在于文件是否属于集合

    集合是包含在特殊目录中的一组文件。目录名称以下划线开头,并且必须在配置文件中明确列出(不带前导下划线),才能将其视为 Collection 目录。 文件(在集合中)以开头的内容开始被视为文档。那些没有前题的只是静态文件


    简单地说,site.pages 包含所有那些一开始就包含前沿内容但本身不属于任何集合的文件。在项目目录的根目录下有这样的about.md?这是一个页面

    集合内的文档是通过集合访问的。因此,如果您的网站有一个标记为movies 的集合和几个文件在目录_movies 中,那么可以通过site.movies


    posts 是预定义的集合并以特殊状态处理。个别帖子不需要包含正面内容,它们仍然可以通过site.posts访问

    【讨论】:

    • 感谢您的详细解释,让我知道了很多。关于您的答案内容的任何文档链接?
    • 你知道为什么我根目录下的CHANGELOG.md会被编译成CHANGELOG.html从而出现在网站的头部吗?还有README.md,和CHANGELOG.md一样没有前置内容的普通markdown,没有编译?
    • 文件没有前面的内容不会被转换,只是复制到目的地。为避免不必要的复制,您可以在配置文件中的 exclude 键下列出这些文件。如需更多帮助,我需要查看您的源代码库。
    • 是的,我知道文件中不应该有前面的内容。但是README.mdCHANGELOG.md 都没有前面的内容,它们之间没有区别。所以我很好奇为什么READMD.md 没有被编译但是CHANGELOG.md 被编译了。感谢您的exclude 建议。如果您愿意查看源代码库,here it is。再次感谢。
    • 这是因为 GitHub Pages 捆绑了一个插件,使前端成为可选的。如果您使用 --verbose 开关在本地构建,您会看到 jekyll-optional-front-matter 以及 jekyll-readme-index 已加载,默认情况下会阻止转换 README.md
    猜你喜欢
    • 2016-07-31
    • 2021-02-17
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 2013-08-11
    相关资源
    最近更新 更多