在中间人中使用全局变量?即网站标题

Using global variables in middleman? i.e. Website title

我正在尝试找到一种在中间人中使用全局变量的方法,即设置网站名称,如果当前页面没有标题或在像 <meta name="application-name" content="Site name"> 这样我就不用每次都手动写了。问题是,目前我只能获得当前页面标题,如 <%= current_page.data.title || "Site Name" %> ,其中每个布局都不同,而不是 "Site Name" 我想传递一个存储在某个地方的全局变量文件,每个页面都可以访问。

我已经有一段时间没有使用 Middleman 了,但我认为这样做的方法是在 config.rb 中使用 set,例如:

set :site_title, "Site Name"

然后在您的模板中,您可以使用 settings 对象访问它:

<%= current_page.data.title || config.site_title %>

或者,您可以创建一个辅助方法,如 Custom Extensions 中所述,例如:

class MyFeature < Middleman::Extension
  SITE_TITLE = "Site Name"

  helpers do
    def page_title
      current_page.data.title || SITE_TITLE
    end
  end
end

config.rb 中激活扩展后,您可以在模板中执行此操作:

<%= page_title %>

然后在您的模板中您可以

您可以使用 data files。只需在项目根级别的 data 文件夹中创建一个名为 site.json 的文件。然后您可以使用数据路径访问它。

例如:

data/site.json:

{
  "title": "Foo Test"
}

partials/head.html.erb(或任何其他 partial/layout/page)

<title><%= current_page.data.title || data.site.title %></title>

我刚刚对此进行了测试,它适用于使用 Middleman 3.4 的我。