在Middleman中如何访问Renderer文件?

时间:2015-12-20 09:50:11

标签: ruby renderer middleman

在Middleman中,我想从目录中读取一些markdown文件并进行渲染。这样当外行人添加文件时,他们可以添加降价文件而不用担心其他任何事情。

除了没有解析YAML之外,我已经完成了所有工作。我想如果我可以访问Middleman的FileRendererTemplateRenderer那么代码就可以了。

但是我无法弄清楚如何访问它们:(

这是我的代码。

主要部分:

<% @photos = Dir["source/_partials/feature-pieces/*.md"] %>
<%= partial "/feature-pieces/homepageslider", :collection => @photos %>

然后在我的

homepageslider

<div class="item featured<%=homepageslider_counter%>">
  <div class="slider-content">
    <% markdown = File.read(homepageslider) %>
    <%= Kramdown::Document.new(markdown).to_html %>
  </div>
</div>

<% content_for :cssScreen do %>
  .owl-carousel .item.featured<%=homepageslider_counter%> {
    background: url("/images/horizontal-medium1.jpg");
  }
<% end %>

,最后一个是降价文件:

---
background: /images/horizontal-medium1.jpg
---

## Featured Heading from md.

md
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

<div class="center">
<input type="button" class="btn btn-med" value="Call To Action">
</div>

1 个答案:

答案 0 :(得分:0)

这比我想象的容易得多。

我在render_individual_file中使用homepageslider方法,如下所示:

<div class="item featured<%=homepageslider_counter%>">
  <div class="slider-content">
    <%= render_individual_file root + "/" + homepageslider %>
  </div>
</div>

它完美呈现。

我通过使用Middleman Console

来解决这个问题
require 'pp'
pp ::Middleman::Application.instance_methods

我也想出了如何获得前线。在这种情况下,它帮助我浏览了Middleman的源代码,而不是查看实例方法。

在我的情况下,我想要背景

<div class="item featured<%=homepageslider_counter%>">
  <div class="slider-content">
    <%= render_individual_file root + "/" + homepageslider %>
  </div>
</div>

<% content_for :cssScreen do %>
  .owl-carousel .item.featured<%=homepageslider_counter%> {
    background: url(
    <%= self.extensions[:frontmatter].data(homepageslider.gsub(config.source + "/", ""))[0][:background] %>);
  }
<% end %>

重要的部分是&lt;%= self.extensions [:frontmatter] .data(homepageslider.gsub(config.source +“/”,“”))[0] [:background]%&gt;

然后我在config.rb

中制作了一个辅助方法
def getData(filePath, symbol)
  fm = extensions[:frontmatter]
  localFilePath = filePath.gsub(config.source + "/", "")
  parsedData  = fm.data(localFilePath)
  fmData = parsedData[0]
  fmData[symbol]
end

我称之为:

<%= getData('source/_partials/feature-pieces/slider-1.md', :background) %>