我的中间人结构如下:
source/
blog/
post-one.md
post-two.md
blog.erb
index.md
我的config.rb
定义了这个帮手:
helpers do
TOP_LEVEL_DIR = Dir.pwd
def posts
files = Dir["#{TOP_LEVEL_DIR}/source/blog/*"]
files.map do |file|
created_at = `git log --follow --date=short --pretty=format:%ad --diff-filter=A -- #{file}`
basename = File.basename(file).split('.')[0]
{
date: created_at,
link: '/blog/' + basename,
title: basename.gsub('-', ' ').capitalize
}
end
end
end
我的blog.erb
看起来像这样:
<ul>
<% posts.each do |post| %>
<li><%=post[:date]%>: <%= link_to post[:title], post[:link] %></li>
<% end %>
</ul>
这对我来说非常好,但是我错过了一件事。我想在created_at
和post-one
的布局中显示我在自定义帮助程序中定义的post-two
元数据。
通常这是通过定义Frontmatter来完成的,但我不想在git中提供每个帖子时手动输入每个帖子的日期。
所以我需要一种方法来定义一个允许我访问current_page
元数据的自定义帮助器。或者传递元数据的其他方式我在posts
助手中手动创建到布局中。
答案 0 :(得分:1)
这比我想象的要简单得多。助手可以使用current_page
,因此我可以在config.rb
中直接在我的助手中使用它:
helpers do
def created_at
# `git log --follow --date=short --pretty=format:%ad --diff-filter=A -- #{current_page.source_file}`
end
end