Jekyll frontmatter 出现在我的网站上,但没有正确插入到我的默认布局中
Jekyll frontmatter appearing on my website and not inserting properly into my default layout
过去 3 天我一直在尝试制作自己的网站,仅使用 HTML 文件、CSS 文件和 [=53] 一切正常=] 文件。然后昨天我决定尝试将我网站上的一点点迁移到一个 Jekyll 友好的结构,这样我就可以更好地管理我的内容。事情是这样的:
在学习了很多教程并在我的机器上安装了 Ruby 和 DevKit 之后,我终于能够在本地将 Jekyll 安装到 运行。但是我发现我的根目录中的 index.html 文件没有被插入到 _layouts 文件夹中的 default.html 模板中。
所以 Jekyll 没有使用 default.html 布局来构建我的网站,它出现了,导致我的 index.html 文件中的内容被编译到我的最终 index.html 文件中。我的理解是,根目录中 index.html 文件中的任何内容都将被插入布局(在 index.html 的前文中指定),而最终的 index.html放置在 _site 目录中的 Jekyll 将是 index.html 和 default.html 的合并。
经过足够长的时间,我最终尝试将根目录中的 index.html 重命名为 index.md。然后,当我再次 运行 Jekyll 时,index.md 中的 html 代码被插入到我的布局 default.html 中的 {{ content }} 部分,这就是我一直想要!太棒了,对吧?不。当时的问题是 index.md 中的 frontmatter 实际上显示在我的网站上:
Image of the frontmatter appearing on my local site
您可以在此处查看所有完整代码以及我的所有配置详细信息和目录结构:
https://github.com/tygamvrelis/tylergamvrelis.github.io
所以 Jekyll 似乎以某种方式将 index.md 内容插入到 default.html 中的正确位置,它没有阅读前文就这样做了。事实上,我可以完全删除 index.md 中的 frontmatter 并且我的网站看起来非常好,只要我在代码开头至少保留 1 个空行即可。如果我在代码开头没有留下至少 1 个空行,那么我会在我的网站上看到 index.md 作为原始 HTML(标签和所有内容,无格式)。
我知道鉴于所描述的怪异现象,这可能不是足够的信息,但我想尝试了解发生了什么,我很感激任何建议。如果您需要我提供任何其他信息来帮助解决此问题,请告诉我。
你的 index.md
有 BOM headers:
$ hd -n 3 index.md
00000000 ef bb bf |...|
00000003
因为是用UTF-8编码的,所以字节序标记遵循的顺序是:EF BB BF
.
Jekyll 不喜欢 them:
UTF-8 Character Encoding Warning
If you use UTF-8 encoding, make sure that no BOM header characters
exist in your files or very, very bad things will happen to Jekyll.
所以你需要删除它们,Jekyll 会再次开心:
$ tail -c +4 index.md > UTF8.nobom
$ mv UTF8.nobom index.md
或者查看如何使用 awk or sed
删除它们
过去 3 天我一直在尝试制作自己的网站,仅使用 HTML 文件、CSS 文件和 [=53] 一切正常=] 文件。然后昨天我决定尝试将我网站上的一点点迁移到一个 Jekyll 友好的结构,这样我就可以更好地管理我的内容。事情是这样的:
在学习了很多教程并在我的机器上安装了 Ruby 和 DevKit 之后,我终于能够在本地将 Jekyll 安装到 运行。但是我发现我的根目录中的 index.html 文件没有被插入到 _layouts 文件夹中的 default.html 模板中。 所以 Jekyll 没有使用 default.html 布局来构建我的网站,它出现了,导致我的 index.html 文件中的内容被编译到我的最终 index.html 文件中。我的理解是,根目录中 index.html 文件中的任何内容都将被插入布局(在 index.html 的前文中指定),而最终的 index.html放置在 _site 目录中的 Jekyll 将是 index.html 和 default.html 的合并。
经过足够长的时间,我最终尝试将根目录中的 index.html 重命名为 index.md。然后,当我再次 运行 Jekyll 时,index.md 中的 html 代码被插入到我的布局 default.html 中的 {{ content }} 部分,这就是我一直想要!太棒了,对吧?不。当时的问题是 index.md 中的 frontmatter 实际上显示在我的网站上: Image of the frontmatter appearing on my local site
您可以在此处查看所有完整代码以及我的所有配置详细信息和目录结构: https://github.com/tygamvrelis/tylergamvrelis.github.io
所以 Jekyll 似乎以某种方式将 index.md 内容插入到 default.html 中的正确位置,它没有阅读前文就这样做了。事实上,我可以完全删除 index.md 中的 frontmatter 并且我的网站看起来非常好,只要我在代码开头至少保留 1 个空行即可。如果我在代码开头没有留下至少 1 个空行,那么我会在我的网站上看到 index.md 作为原始 HTML(标签和所有内容,无格式)。
我知道鉴于所描述的怪异现象,这可能不是足够的信息,但我想尝试了解发生了什么,我很感激任何建议。如果您需要我提供任何其他信息来帮助解决此问题,请告诉我。
你的 index.md
有 BOM headers:
$ hd -n 3 index.md
00000000 ef bb bf |...|
00000003
因为是用UTF-8编码的,所以字节序标记遵循的顺序是:EF BB BF
.
Jekyll 不喜欢 them:
UTF-8 Character Encoding Warning
If you use UTF-8 encoding, make sure that no BOM header characters exist in your files or very, very bad things will happen to Jekyll.
所以你需要删除它们,Jekyll 会再次开心:
$ tail -c +4 index.md > UTF8.nobom
$ mv UTF8.nobom index.md
或者查看如何使用 awk or sed
删除它们