为什么站点变量在Jekyll远程主题中';s`\u config`文件不可访问?

为什么站点变量在Jekyll远程主题中';s`\u config`文件不可访问?,jekyll,jekyll-theme,Jekyll,Jekyll Theme,,“Jekyll将读取主题gem根目录下的\u config.yml,并将其数据合并到站点的现有配置数据中。”但我创建了一个主题,其配置如下: 我在主题的css中引用了如下变量:(注意最后一行的空白frontmatter和liquid标记。) 在渲染的站点中,结果是这样的:(注意我的液体标签以前所在的空字符串。) 如果我把变量放在我站点的\u config中,而不是放在主题中,那么一切都会按预期进行。但我希望这些变量与主题相关 为了让事情变得更加神秘,我可以在公共文档中找到一些例子,其中站

,“Jekyll将读取主题gem根目录下的
\u config.yml
,并将其数据合并到站点的现有配置数据中。”但我创建了一个主题,其配置如下:

我在主题的css中引用了如下变量:(注意最后一行的空白frontmatter和liquid标记。)

在渲染的站点中,结果是这样的:(注意我的液体标签以前所在的空字符串。)

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

为了让事情变得更加神秘,我可以在公共文档中找到一些例子,其中站点变量在主题中定义,然后在主题文件中使用,就像我在主题文件中使用这些变量一样,没有任何问题。(注意site.yadda.yadda,它在根目录的
config.yml
中定义)

我不是在创造一个完整的宝石;我正在使用
github页面
remote\u主题
功能。我怀疑这就是原因,除了像
最小错误
这样的主题可以通过这种方法很好地工作


发生了什么事?

我也提出了这个问题,并得出了一些答案:

该功能在GitHub页面上不起作用,因为它使用的是Jekyll 3.8.6而不是4.0.0来部署,而这种使用主题的
\u config.yml
变量的功能是新版本中的一项新功能

最小错误和其他主题在其配置文件中定义变量仅作为用户在站点配置文件中可能执行的操作的示例,因此主题目录中定义的
index.html
和其他演示在
jekyll-serve
d时可以参考。在某些情况下,您确实需要提供这些值,或者主题看起来与预期不符。在其他情况下,主题
\u includes
具有条件液体标记,因此如果子站点中缺少变量,则页面的整个部分不会呈现

解决方案

  • 等待GitHub使用4.0.0,看起来人们已经询问并等待了将近一年
  • 定义子站点中的所有变量。如果您确实需要主题包含此信息,以便可以跨多个站点重用,则此主题不可行
  • 不使用变量和液体代码,而是在变量出现的任何地方使用硬代码值
  • 在本地使用Jekyll 4.0.0构建,并手动或通过持续集成将
    \u站点
    工件推送到
    gh页面
    分支。(设置起来需要耗费大量人力,对于用户页面站点来说不太可行,因为它是从
    master
    进行渲染的,并且当前不可能使用
    remote\u主题
    s,因为)
  • 使用支持Jekyll4.0.0的其他服务进行部署,如Netlify。但这样做违背了我们的目的
  • 因为我没有太多的变量,所以我现在要进行硬编码,等待Jekyll3.8.6/4.0.0的出现