0

据此,“Jekyll 将_config.yml在 theme-gem 的根目录中读入 a 并将其数据合并到站点现有的配置数据中。” 但是我创建了一个配置如下的主题: 图片

我在我的主题的 css 中引用了这样的变量:(注意最后一行为空的 frontmatter 和 Liquid 标签。) 图片

结果在呈现的站点中如下所示:(注意我的液体标签曾经所在的空字符串。) 图片

如果我将变量放在_config我的站点中而不是主题中,那么一切都会按预期进行。但我希望这些变量与主题相关联。

为了使事情更神秘,我可以在通用minimal-mistakes主题中找到示例,其中站点变量在主题中定义然后使用,就像我使用这些一样,在主题文件中没有问题。(注意 site.yadda.yadda,它们是在根目录的 . 中定义的config.yml。)

我不是在创造一个完整的宝石;我正在使用github-pages'remote_theme功能。我怀疑这是原因,除了像minimal-mistakes这种方法这样的主题可以正常工作。

到底是怎么回事?

4

1 回答 1

0

我还在Jekyll GitHub 上提出了这个问题,并得到了一些答案:

该功能在 GitHub 页面上不起作用,因为它使用 Jekyll 3.8.6 进行部署,而不是 4.0.0,并且这种使用主题变量的能力_config.yml是新版本中的一项新功能。

最小错误和其他主题在其配置文件中定义变量仅作为用户在站点配置文件中可能执行的操作的示例,因此index.html主题目录本身中定义的和其他演示在它们为jekyll served 时有一些参考。在某些情况下,您确实需要提供这些值,或者主题看起来不像预期的那样。在其他情况下,主题_includes具有条件 Liquid 标签,因此如果子站点中缺少变量,则根本不会呈现页面的整个部分。

解决方案?

  1. 等待 GitHub 使用 4.0.0,看起来人们已经问了,等待了将近一年。
  2. 定义子站点中的所有变量。如果您确实需要主题包含此信息以便可以在多个站点(例如此用例)中重复使用,则不可行。
  3. 不是使用变量和 Liquid 代码,而是在变量出现的任何地方硬编码值。
  4. 在本地使用 Jekyll 4.0.0 构建,然后手动或通过持续集成将_site工件推送到分支。gh-pages(设置劳动密集型,对于用户页面站点来说不是很可行,因为它从 呈现master,并且目前无法使用remote_themes 因为它已损坏 4.0.0
  5. 使用支持 Jekyll 4.0.0 的其他服务进行部署,例如 Netlify。但这违背了将其与我的 GitHub 存储库无缝以显示我的工作的目的。

因为我没有太多变量,所以我现在要进行硬编码,只是等待 Jekyll 3.8.6/4.0.0 的发布。

于 2020-01-13T15:49:49.830 回答