在中间人我想知道如何从子布局向我的基础布局添加头标记。
我有一个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
我无法弄清楚布局存储的全局位置以及如何访问它们。
答案 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"