在中间人中,我如何从子布局中添加头部标签?

In middleman how do I add head tags from a child-layout?

在中间人中,我想知道如何从子布局向我的基本布局添加 head 标签。

我有一个 layout.erb 和一个博客-layout.erb。

我通过将附加项放在布局的 YAML 前端中来解决 Jekyll 中的问题,我喜欢这种方法。

我一直在尝试在 Middleman 中重新创建它,但一直没有成功。

我的博客-layout.erb是这样的:

---
head:
 - -<%= feed_tag :atom, "/blog/feed.xml", title: "Atom Feed" %>'
---

<% wrap_layout :layout do %>
<div id="main" role="main">
  <%= yield %>
</div>
<% end %>

然后在我的 layout.erb 我想这样做:

<% current_page.data.head.each do |headItem| %>
    < % = headItem %>
< % end %>

我尝试从 config.rb 访问布局的 frontmatter,但我也没有成功。

这是我的尝试之一:

with_layout :bloglayout do
   page "/blog/*", :headers => config[:bloglayout].head
end

我无法弄清楚布局在全局中的存储位置以及如何访问它们。

我还没有弄清楚如何通过 child 布局 frontmatter 来做到这一点。

我所做的是创建了一个数据文件:blogmetaheaders.yml

headers: >
 <link rel="alternate" type="application/atom+xml" title="Atom Feed" href="/blog/feed.xml" />

然后在我的 layout.rb 中我有这段代码可以注入 headers:

<% if current_page.path.start_with? 'blog'
        data.blogmetaheaders.each do |headerItem, headerValue | %>
        <%= headerValue %>
        <% end %>
      <% end %>

Padrino 的 application helper content_for 优雅地处理从包装布局添加头部标签。

我的布局:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" >
    <%= yield_content :head %>

我的博客布局:

<% wrap_layout :layout do %>

    <%= yield %>

    <% content_for :head do %>
      <%= feed_tag :atom, "/blog/feed.xml", :title => "Atom Feed tag" %>
    <% end %>
<% end %>

我的config.rb

activate :blog do |blog|
  blog.layout = "bloglayout"