Jekyll frontmatter出现在我的网站上,没有正确插入我的默认布局

时间:2017-02-20 17:50:13

标签: utf-8 character-encoding jekyll github-pages

过去3天我一直在努力创建自己的网站,只需使用HTML文件,CSS文件和JavaScript文件,一切都很顺利。然后昨天我决定尝试将我对网站的一点点迁移到Jekyll友好的结构中,这样我就可以更好地管理我的内容。这是发生的事情:

  1. 在我的机器上执行了大量教程并安装Ruby和DevKit之后,我终于能够让Jekyll在本地运行了。但我发现我的根目录中的index.html文件没有插入_layouts文件夹中的default.html模板。 所以Jekyll在不使用default.html布局的情况下构建我的网站,它出现了,导致我的index.html文件中的内容被编译到我的最终index.html文件中。我的理解是,不是这样,根目录中index.html文件中的任何内容都会插入到布局中(在index.html的frontmatter中指定),而Jekyll放在_site目录中的最终index.html将是index.html和default.html的合并。

  2. 经过足够长的时间,我最终尝试将我的根目录中的index.html重命名为index.md。然后,当我再次运行Jekyll时,index.md中的html代码被插入到我的布局default.html中的{{content}}部分,这就是我一直想要的!太棒了吧?不。问题是index.md中的前端实际上是在我的网站上显示: Image of the frontmatter appearing on my local site

  3. 您可以在此处查看所有完整代码以及我的所有配置详细信息和目录结构: https://github.com/tygamvrelis/tylergamvrelis.github.io

    因此,似乎SOMEHOW Jekyll将index.md内容插入default.html中的正确位置,它正在执行此操作而不读取前端。事实上,我可以完全删除index.md中的frontmatter,并且我的网站看起来非常好,只要我在代码的开头留下至少1个空行。如果我在代码的开头没有留下至少1个空行,那么我在我的网站上看到index.md为原始HTML(标签和所有内容,没有格式化)。

    我知道这可能不是足够的信息,因为描述的怪异,但我想尝试了解发生了什么,我感谢任何建议。如果您需要我帮助解决此问题,请告知我们。

1 个答案:

答案 0 :(得分:1)

您的index.mdBOM headers

$ hd -n 3 index.md
00000000  ef bb bf                                          |...|
00000003

由于它是用 UTF-8 编码的,因此字节顺序标记遵循以下顺序:EF BB BF

和杰基尔不喜欢them

  

UTF-8字符编码警告

     

如果使用UTF-8编码,请确保没有BOM标头字符   存在于你的文件中,或者非常非常糟糕的事情会发生在杰基尔身上。

所以你需要删除它们,Jekyll会再次开心:

$ tail -c +4 index.md > UTF8.nobom
$ mv UTF8.nobom index.md

或了解如何使用awksed

删除它们