如何获得原始内容"从所有页面

时间:2014-08-09 14:21:49

标签: ruby sitemap sprockets middleman

我正在尝试为我的Middleman网站制作一个索引文件,并希望在该文件中包含我的网页的原始“内容”。即。

/source/mypage.md:

---
title: My Page
---
# This is my page
With *my markdown*

/source/myotherpage.md:

---
title: My Other Page
---
# Here is my other page

我希望有一个位于/source/site_index.json.erb的第三页,当输出看起来像:

 [
   {'title': 'My Page', 'body': '#This is my page\nWith *my markdown\n'},
   {'title': 'My Other Page', 'body': '#Here is my other page\n'}
 ]

我可以使用类似的东西获得标题等,但我不知道如何获得原始身体:

[
  <% sitemap.resources.select{|resource| resource.content_type == 'text/html; charset=utf-8' unless resource.data.ignore }.each do |resource| %>
    {
      "title": <%= resource.data.title.to_json %>,
      "body": <%= nil %>
    } ,
  <% end %>
]

2 个答案:

答案 0 :(得分:1)

之前从未使用过Middleman,但您尝试过resource.render吗?

根据http://rubydoc.info/gems/middleman-core/Middleman/Sitemap/Resource#render-instance_method的文档,它似乎应该有效。

另一个潜在的潜在客户是以下对https://github.com/middleman/middleman-sitemap-api/blob/master/lib/middleman-sitemap-api/extension.rb#L122

raw_body_content的引用

希望这有帮助

答案 1 :(得分:1)

resource对象有一个指向源文件(source_file)的指针,你可以只读取文件内容:

[
    <%
    pages = sitemap.resources.select{|resource| resource.content_type == 'text/html; charset=utf-8' unless resource.data.ignore }
    pages.each_with_index do |resource, index|
        file = File.open(resource.source_file, 'r')
        content = file.read
    %>
    {
        "title": <%= resource.data.title.to_json %>,
        "body": <%= content.to_json %>
    } <%=',' unless( index == pages.length-1) %>
    <% end %>
]

这适用于我,使用Middleman 3.3.3测试。