【问题标题】:Pass dynamic content to template in Middleman将动态内容传递给 Middleman 中的模板
【发布时间】:2013-02-11 23:54:09
【问题描述】:

我正在使用 Middleman 构建一个静态站点,其中包含所有客户最近项目的投资组合部分。 作品集部分将以 3 X 3 画廊的方式显示项目缩略图,点击后,将在灯箱中打开相应的 html 页面。

灯箱内页面的布局是相同的,所以不是标记每个单独的页面,我认为有一种方法可以让 Middleman 使用 [a 链接处理从 yaml 数据文件 (projects.yml) 提供的内容.

这是我的 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

【问题讨论】:

    标签: yaml middleman


    【解决方案1】:

    好吧,经过一番挖掘,我发现了下面的两篇文章,它们帮助我理解了动态页面在中间人中的工作原理。 (不幸的是,没有很多文档,动态页面的中间人示例非常基础)

    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

    我的解决方案...

    data/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
    

    上面 sn-p 的技巧是通过代理使用本地变量将整个项目数据对象传递给模板,并将布局设置为 false,这样它就不会继承默认的站点布局(就像我 - 或者客户宁愿- 想要在灯箱弹出窗口中显示这些)

    该过程的最后一步是创建 /projects/template.html.erb(在源文件夹中),在模板顶部声明以下内容

    <% p = locals[:project] %>
    

    这允许我在 template.html.erb 中输出 p 对象的每个属性。

    例如:

    <%= p[:title] %>
    

    我希望这对某人有所帮助,因为我花了几天的时间在网上搜索示例或提示。

    【讨论】:

    • 谢谢,我正在寻找中间人。如果你有一个愿意开源的项目,我很想看看。在文档中苦苦挣扎。
    • 此博客在 github 上托管其项目源:github.com/DarrenN/darrenknewton.com
    • 嘿,你的 url 在博客上被破坏了。虽然很想读。我喜欢这个解决方案,但我对代理和布局有点犹豫:错误。它可能只是在我的脑海中,但我还没有看到,感觉就像是在与中间人作斗争。不过这里可能绝对是错误的。
    • 嘿@BlaineHatab,对不起,自从写了上面的评论后,我把我的博客从heroku移植到了github。新网址是tomgillard.com/blog/2013-12-31-page-alive。至于您对代理和布局的担忧=> false。这些在 config.rb 中设置。我在上面的博客文章中有一个来自中间人文档的代理部分的链接。所有 layout => false 正在做的是告诉中间人您不想为 template.html 文件生成页面布局。希望这会有所帮助:-)
    猜你喜欢
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2012-11-08
    • 2014-05-20
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多