GitHub托管了Jeykll网站。 css中的背景图片没有显示?

时间:2017-01-23 19:48:53

标签: github jekyll

我在_data文件夹中创建了一个settings.yml。这也包含我的baseurl: / run-and-roll

所以我在我的资产前插入了{{ site.data.settings.baseurl }} css 文件正在加载 html 中定义的图像。但是,css中请求的任何背景图像都没有显示?

https://granttransition.github.io/run-and-roll/

3 个答案:

答案 0 :(得分:1)

https://jekyllrb.com/docs/configuration/中显示的每个配置变量都有意义。

通常模板会在使用{{site.baseurl}}生成某些网址(例如资源的网址)时预先显示基本网址,因此如果您从其他位置手动设置它,则默认情况下不会使用它。

您所阅读的内容是将设置和配置分开的一个好习惯是对于与jekyll内置变量无关的其他每个配置,将它们放在数据文件上是一个很好的做法,所以你保留你的_conf.yml尽可能清楚地显示官方文档suggests,这样可以更轻松地维护和更新您的Jekyll实例:

  

除了Jekyll提供的内置变量之外,您还可以   指定您可以通过Liquid访问的自定义数据   模板系统。

     

Jekyll支持从位于的YAML,JSON和CSV文件加载数据   _data目录。请注意,CSV文件必须包含标题行。

     

这个强大的功能可以避免模板中的重复   并在不更改_config.yml的情况下设置特定于站点的选项。

     

插件/主题也可以利用数据文件来设置配置   变量

答案 1 :(得分:1)

TL; DR

按照其他答案的建议将baseurl放入_config.yml:)

b / c如果您正在使用Jekyll和Github页面,那么如果site.urlsite.baseurl未指定CNAMEconfig.yml,则为{{ 3}}。然后它们将由production build

自动设置

解释

来自github page generator code-source:

  # Set `site.url` and `site.baseurl` if unset and in production mode.
  def set_url_and_baseurl_fallbacks!
    return unless Jekyll.env == "production"

    repo = drop.send(:repository)
    site.config["url"] ||= repo.url_without_path
    if site.config["baseurl"].to_s.empty? && !["", "/"].include?(repo.baseurl)
      site.config["baseurl"] = repo.baseurl
    end
  end

jekyll的默认构建环境是development。因此,在本地工作。每件事都会按照你的预期运行。即使将baseurl放在_config.yml

以外的其他位置

但是在github页面一侧,该网站是使用以下命令构建的:

JEKYLL_ENV=production jekyll build

并且site.urlsite.baseurl被覆盖。

在您的情况下,如果您使用{{ site.data.settings.baseurl }}访问某个网页,并且设置为('''/'),您可能不会注意到导航问题。用于css和js的bat assets path将无法按预期工作。

所以,只需将baseurl放入_config.yml,然后相应地重构您的布局和页面。你会没事的。

旁注:正如@David回答中所提到的,这是放置网站设置的jekyll惯例。在_config.yml,但如果你想把它们放在其他地方,你可以。请确保将production版本声明为。

另见:github page generator

更新

即使将网站移至github项目Clearing Up Confusion Around baseurl -- Again/<user-name>.github.io/<repo-name>而非用户(或组织)回购:/<user-name>.github.io。你需要设置如下:

site.baseurl: ''

或者只是删除它。因为您从主存储库(参见repo

服务您的网站

答案 2 :(得分:0)

使用{{ site.baseurl }}是一个jekyll惯例,将其移动到数据文件不是一个好主意。

尽管如此,从您的css角度来看,runner.jpg的路径始终为../assets/img/runner.jpg。无需使用baseurl