Используйте вложенные макеты в Middleman - PullRequest
1 голос
/ 29 марта 2012

Я в основном работаю с Middleman 2, хотя, если это можно сделать только в Middleman 3, я могу переключиться на него

У меня есть layout.haml, имеющий весь шаблон и одновременно являющийся макетом индекса.

Теперь я хочу, чтобы макет inner.haml, который будет работать для остальных страниц, будет наследовать от layout.haml (с точки зрения того, что я не буду повторять части шаблона), будет включать некоторые дополнительные общие стили / сценарии, некоторая общая разметка, а затем будут заменены блоки yield.

В настоящее время я вообще не понимаю, откуда мне начинать. Я понимаю, как можно установить inner.haml в качестве макета по умолчанию и layout.haml в качестве макета для маршрута "/", но как система узнает, что inner.haml на самом деле вложен в layout.haml?

Пример настройки

layout.haml

!!!5
%html
  %head
    %script(src="HTML5 shiv")
    %title
      My Site
      \|
      = yield_content :title
    = stylesheet_link_tag "site.css"
    = yield_content :page_styles
  %body
    %div(role="main")
      = yield_content :content
    %script(src="jquery")
    = yield_content :page_scripts

index.html.haml

- content_for :title do
  Index
- content_for :page_styles do
  = stylesheet_link_tag "index.css"
- content_for :page_scripts do
  %script(src="index.js")
- content_for :content do
  Cool banner here

inner.haml

-# somehow inherits from / extends layout.haml
- content_for :page_styles do
  -# somehow I'm putting some common content and then reinclude the block from the specific page
  = stylesheet_link_tag "inner.css"
  = yield_content :page_styles
-# same thing for page_scripts
- content_fir :content do
  -# again I define some common HTML, then include page's content

Ответы [ 2 ]

3 голосов
/ 31 марта 2012

В 3.0 у вас будет index использование макета inner, который будет wrap_layout layout.

В 2.0 вам понадобится комбинация партиалов и блоков content_for.

0 голосов
/ 30 марта 2012

На первый взгляд, я бы соблазнился сделать это с двумя шаблонами. Возможно, не такой элегантный или СУХОЙ, но, конечно, понятно и легко подправить позже. Например. для нашего сайта у нас есть макет главной страницы и остальная часть макета сайта . И затем в каждом исходном файле MiddleMan мы объявляем, какой макет будет использоваться ( см. Пример ).

Помимо всего этого, я надеюсь узнать кое-что от мастера HAML, у которого есть магия для вашей ситуации!

...