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