Middlemanapp中的自定义标签

时间:2013-09-03 12:37:55

标签: ruby sinatra middleman

我正在当前版本的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>
但到目前为止还没有运气。我做了谷歌搜索,但没有找到具体的。

有人可以提出可能的代码解决方案吗?

1 个答案:

答案 0 :(得分:1)

首先,您需要在config.rb中添加代理:

Middleman: Dynamic Pages

# 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>