2013-02-11 3 views
4

Я создаю статический сайт, используя Middleman, который имеет раздел портфеля всех последних проектов клиента. В разделе портфолио будут отображаться миниатюрные изображения проектов в галерее 3 X 3, и при нажатии на них откроется их совместно отвечающая страница html внутри лайтбокса.Передача динамического содержимого шаблону в Middleman

Макет для страниц внутри световой коробки является таким же, а не разметкой каждой отдельной страницы. Я думал, что Middleman будет обрабатывать содержимое, поданное из файла данных yaml (projects.yml), используя [a ссылка.

Вот что у меня есть в моем config.rb файле

### 
# Page options, layouts, aliases and proxies 
### 

# A path which all have the same layout 
with_layout :popup do 
    page "/projects/*" 
end 

# Proxy (fake) files 
# page "/this-page-has-no-template.html", :proxy => "/template-file.html" do 
# @which_fake_page = "Rendering a fake page with a variable" 
# end 
data.projects.details.each do |pd| 
    proxy "/projects/#{pd[:client_name]}.html", "/projects/template.html", locals: { project: pd }, ignore: true 
end 

ответ

13

ИТАК после некоторого копания я наткнулся на две должности ниже, которые помогли мне под стендом, как динамические страницы работают в посреднику. (К сожалению, не много DOCO и Посредник пример для динамических страниц действительно основной)

http://benfrain.com/understanding-middleman-the-static-site-generator-for-faster-prototyping/ http://forum.middlemanapp.com/discussion/134/best-way-to-use-yaml-same-html-but-parameter-driven-data-fixed/p1

Мое решение ...

данные/projects.yml (содержит детали проекта)

details: 
    - client: "Company X" 
    title: "Company X Event" 
    video_url: "" 
    logo: 
     - "logo_companyx.gif" 
    image_path: "/img/projects/companyx" 
    total_images: 10 
    content: "<p>Blah blah blah</p>" 
    responsibilities: 
     "<li>Something</li> 
     <li>Some task</li>" 

config.rb:

data.projects.details.each do |pd| 
    proxy "/projects/#{pd[:client]}.html", "/projects/template.html", :layout => false, :locals => { :project => pd }, :ignore => true 
end 

Трюк с приведенным выше фрагментом передает весь объект данных проекта в шаблон через прокси-сервер, используя локали, и устанавливает макет в false, чтобы он не наследовал макет сайта по умолчанию (поскольку я - или клиент скорее - хочу чтобы отобразить их в лайтбокс всплывающем окне)

последним шагом в этом процессе заключается в создании /projects/template.html.erb (в исходной папке), заявив следующее в верхней части шаблона

<% p = locals[:project] %> 

Это позволило мне выводить каждое свойство объекта p в template.html.erb.

например:

<%= p[:title] %> 

Я надеюсь, что это поможет кому-то, как это у меня ушло несколько дней игры вокруг и МНОГО поиска в Интернете, например, или намеков.

+0

Спасибо, я пытаюсь выяснить Миддлмана. Если у вас есть проект, который вы хотели бы открыть, я бы хотел увидеть. Борьба с документами. – BrainLikeADullPencil

+0

В этом блоге размещен источник его проекта на github: https://github.com/DarrenN/darrenknewton.com – Jeremy

+0

Эй, ваш URL-адрес отправлен в блог. Хотелось бы это прочитать. Мне нравится решение, но я немного нерешительно отношусь к прокси и макету: false.It может быть просто в моей голове, но я не видел этого и чувствует, что он сражается с посредником. Хотя, возможно, это было неправильно. –

 Смежные вопросы

  • Нет связанных вопросов^_^