/ / Comment obtenir le "contenu" brut de toutes les pages - ruby, sitemap, sprockets, intermédiaire

Comment obtenir le "contenu" brut de toutes les pages - ruby, sitemap, sprockets, intermédiaire

J'essaie de créer un fichier d'index pour mon site Middleman, et j'aimerais inclure dans ce fichier le "contenu" brut de mes pages.

/source/mypage.md:

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

et

/source/myotherpage.md:

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

Je voudrais avoir une troisième page qui soit à /source/site_index.json.erb que lorsque la sortie ressemble à quelque chose comme:

 [
{"title": "My Page", "body": "#This is my pagenWith *my markdownn"},
{"title": "My Other Page", "body": "#Here is my other pagen"}
]

Je peux obtenir le titre en utilisant quelque chose comme ça, mais je ne sais pas comment obtenir le corps brut:

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

Réponses:

1 pour la réponse № 1

Jamais utilisé Middleman avant mais avez-vous essayé resource.render?

Selon la documentation à http://rubydoc.info/gems/middleman-core/Middleman/Sitemap/Resource#render-instance_method il semble que cela devrait fonctionner.

Une autre piste potentielle est la référence suivante à raw_body_content à https://github.com/middleman/middleman-sitemap-api/blob/master/lib/middleman-sitemap-api/extension.rb#L122

J'espère que cela t'aides


1 pour la réponse № 2

le resource l'objet a un pointeur sur le fichier source (source_file) et vous pouvez simplement lire le contenu du fichier:

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

Cela a fonctionné pour moi, testé avec Middleman 3.3.3.