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

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

本文关键字:网站 标题 全局变量 中间人      更新时间:2023-09-26

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

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

例如:

data/site.json:

{
  "title": "Foo Test"
}

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

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

我刚刚测试了这个,它对我使用Middleman 3.4有效。

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

set :site_title, "Site Name"

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

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

或者,您可以创建自定义扩展中描述的辅助方法,例如:

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 %>

然后在您的模板中,您可以只使用