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

时间:2015-12-08 15:03:05

标签: javascript ruby static yaml middleman

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

2 个答案:

答案 0 :(得分:4)

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

例如:

数据/ site.json:

{
  "title": "Foo Test"
}

partials / head.html.erb (或任何其他部分/布局/页面)

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

我刚测试了这个,它适用于我使用Middleman 3.4。

答案 1 :(得分:1)

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

set :site_title, "Site Name"

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

<%= current_page.data.title || settings.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 %>

然后在你的模板中你可以