/ / Wie bekomme ich den rohen "Inhalt" von allen Seiten - Ruby, Sitemap, Ritzel, Zwischenhändler

Wie man den rohen "Inhalt" von allen Seiten bekommt - Ruby, Sitemap, Ritzel, Zwischenhändler

Ich versuche, eine Indexdatei für meine Middleman-Website zu erstellen, und möchte in diese Datei den rohen "Inhalt" meiner Seiten aufnehmen.

/source/mypage.md:

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

und

/source/myotherpage.md:

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

Ich hätte gerne eine dritte Seite, die es ist /source/site_index.json.erb Wenn die Ausgabe etwa so aussieht:

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

Ich kann den Titel usw. mit so etwas bekommen, aber ich weiß nicht, wie ich den rohen Körper bekommen soll:

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

Antworten:

1 für die Antwort № 1

Benutze Middleman noch nie zuvor, aber hast du es versucht resource.render?

Laut der Dokumentation unter http://rubydoc.info/gems/middleman-core/Middleman/Sitemap/Resource#render-instance_method Es scheint, als ob es funktionieren sollte.

Ein weiterer möglicher Hinweis ist der folgende Verweis auf raw_body_content beim https://github.com/middleman/middleman-sitemap-api/blob/master/lib/middleman-sitemap-api/extension.rb#L122

Hoffe das hilft


1 für die Antwort № 2

Das resource Objekt hat einen Zeiger auf die Quelldatei (source_file) und du könntest einfach den Inhalt der Datei lesen:

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

Das funktionierte für mich, getestet mit Middleman 3.3.3.