Middleman自动加载/data
文件夹中存在的.json
或.yml
数据文件的内容。
是否有任何方法可以加载此文件夹中任何.txt
或.md
文件的内容?
我找到了这个扩展,但我不知道如何才能实现。
示例
给定此结构和以下文件:
data/
├── foo.yml
└── bar.txt
foo.yml
:
text: "I can load this text."
bar.txt
I want to load this text.
我可以访问data.foo.text
并检索I can load this text.
我想访问data.bar
并检索I want to load this text.
我不确定您试图通过读取txt数据(或markdown(来实现什么。中间人数据不打算包含数组/哈希形式以外的数据。假设你想加载长(或格式化(文本,这是IMO 的更好方法
posts.yml:
-
title: First Post
file: foo.txt
-
title: Second Title
file: bar.txt
在您看来:
<% data.posts.each do |post| %>
<%= post[:title] %>
<%= simple_format(File.read("data/#{post[:file]}").html_safe) %>
<% end %>
我找到了一个变通方法,直到我找到了如何编写自己的扩展名来加载纯文本文件。
具有以下数据文件:
- 数据/bar.yml:
---
title: bar
# Content in plain text can be placed after ---
---
## H2 test
- Hello __world__!
然后可以使用data.bar.postscript
:访问内容
<div class="container">
<h1><%= data.bar.title %></h1>
<%= makrdown data.bar.postscript %> # In this case, I want to render it in Markdown
</div>
为了渲染Markdown,我在config.rb:中定义了一个助手函数
helpers do
def markdown(text=nil)
text ||= yield
return Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, tables: true).render(text)
end
end