我正在当前版本的Middleman中创建一个博客,我希望能够创建一个博客上所有作者的列表,以显示在侧边栏上(就像我将标记一样,然后链接到列出所有作者帖子的页面(有点像作者档案?)
到目前为止,我在每个页面的顶部都有一个“作者”前端块:
---
author: Joe Bloggs
---
我已经考虑过使用前面的事情做这个,但是frontmatter似乎只允许页面特定的变量,例如:
---
layout: "blog"
authors:
- author 1
- author 2
- author 3
---
<ul>
<% current_page.data.authors.each do |f| %>
<li><%= f %></li>
<% end %>
</ul>
并且没有创建存档页面。
我认为我可以像标记列表的显示方式一样:
<ul>
<% blog.tags.each do |tag, articles| %>
<li><%= link_to tag, tag_path(tag) %></a></li>
<% end %>
</ul>
但到目前为止还没有运气。我做了谷歌搜索,但没有找到具体的。
有人可以提出可能的代码解决方案吗?
答案 0 :(得分:1)
首先,您需要在config.rb中添加代理:
# Assumes the file source/author/template.html.erb exists
["tom", "dick", "harry"].each do |name|
proxy "/author/#{name}.html", "/author/template.html", :locals => { :person_name => name }, :ignore => true
end
问题是,中间人博客引擎似乎并不正式支持每个帖子的不同作者。阅读本教程,获取有关自制解决方案的完整说明:Building a Middleman Blog
基本上,您需要在存档页面模板上执行以下操作:
# Note the presence of the person_name local variable, created in the above example
<% author_articles = articles.select {|x| x.data.author == person_name } %>
<ul>
<% author_articles.each do |article|
# Add your rendering code here %>
<li><%= link_to article.title, article.url %></li>
<% # (for better practices, put this in a helper method)
end %>
</ul>