在中间人如何从子布局添加头标记?

时间:2015-10-20 14:09:15

标签: middleman

在中间人我想知道如何从子布局向我的基础布局添加头标记。

我有一个layout.erb和一个blog-layout.erb。

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

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

我的blog-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访问布局的前端,但我也没有这样做。

这是我的一次尝试:

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

然后在我的layout.rb中我有这个代码来注入标题:

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

答案 1 :(得分:0)

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

我的bloglayout:

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