В посредник как да добавя head тагове от дъщерно оформление?

В посредник се чудя как да добавя заглавни тагове към моето основно оформление от под оформление.

Имам layout.erb и blog-layout.erb.

Подходих към проблема в Jekyll, като поставих допълнителните елементи в YAML frontmatter на оформлението и ми харесва този подход.

Опитвах се да го пресъздам в 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 %>

Опитах се да осъществя достъп до frontmatter на оформлението от config.rb, но и това не проработи.

Ето един от моите опити:

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

Не можах да разбера къде в глобален план се съхраняват оформленията и как да получа достъп до тях.


person David Silva Smith    schedule 20.10.2015    source източник


Отговори (2)


Още не разбрах как да го направя чрез frontmatter на дъщерно оформление.

Това, което направих, беше да създам файл с данни: blogmetaheaders.yml

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

След това в моя layout.rb имам този код за инжектиране на заглавки:

<% if current_page.path.start_with? 'blog'
        data.blogmetaheaders.each do |headerItem, headerValue | %>
        <%= headerValue %>
        <% end %>
      <% end %>
person David Silva Smith    schedule 21.10.2015

Помощникът за приложения content_forна Padrino елегантно се справя с добавянето на head тагове от обвито оформление.

Моето оформление:

<!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"
person David Silva Smith    schedule 17.12.2015