在中间人中,我如何访问文件渲染器?

In Middleman how do I access the file Renderer?

在 Middleman 中,我想从目录中读取一些降价文件并呈现它们。这样,当外行人添加文件时,他们只需添加 markdown 文件,而不必担心其他任何事情。

除了 YAML 未被解析外,我一切正常。我想如果我可以访问 Middleman 的 FileRenderer or TemplateRenderer 那么代码就可以工作了。

但是我不知道如何访问它们:(

这是我的代码。

主要部分:

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

然后在我的

主页滑块

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

这比我想的要容易得多。

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

<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 %>

重要的部分是<%= self.extensions[:frontmatter].data(homepageslider.gsub(config.source + "/", ""))[0][:background ] %>

然后我在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) %>