使用MIddleman 3.0 - 如何在动态页面上设置单个页面标题?

Jan*_*iak 13 ruby middleman

我正在中间人组建一个简单的投资组合网站.我根据本地YAML数据动态生成"工作"页面.这是在config.rb中:

data.work.projects.each do |project|
  page "/work/#{project[0]}.html", :proxy => "project_template.html" do
    @project = project
  end
end
Run Code Online (Sandbox Code Playgroud)

出于搜索引擎优化的目的,我希望这些动态生成的页面中的每一个都具有唯一的页面标题和描述.

标题当前在布局文件中设置如下

  %title
    = current_page.data.title
Run Code Online (Sandbox Code Playgroud)

而且我知道我可以使用frontmatter来设置这样的current_page变量

---
title: "Recent Work - "
---
Run Code Online (Sandbox Code Playgroud)

我可以将它粘贴到我的project_template.haml中,但是有什么方法可以让这样的东西工作吗?

---
title: "Recent Work - " + @project.title
---
Run Code Online (Sandbox Code Playgroud)

ghe*_*ton 24

您可以使用content_for,而不是在frontmatter中设置标题(就像您正在做的那样).

例如在布局中:

%title= yield_content(:title)

并在动态页面的模板中:

- content_for(:title, @project.title)


Jos*_*que 8

这是最简单的模块化解决方案.

在你的布局中,扔进去:

%title= 'Your Site Title | ' + @title
Run Code Online (Sandbox Code Playgroud)

@title是一个ruby实例变量,可供当前页面使用.

在你当前的页面中,扔进去(别忘了破折号):

- @title = 'Your Page Title'
Run Code Online (Sandbox Code Playgroud)

那你应该好好去!