Awestruct navigation:按类别对页面进行排序

时间:2013-01-22 02:39:22

标签: ruby haml jekyll awestruct

我正在尝试打印的是ul li个,每个都包含所有具有给定标记的页面(在元数据中设置)

如果不熟悉Awestruct,它与Jekyll类似,页面元数据可以作为page.property访问,页面位于site对象中,可以使用site.pages.each进行迭代

我想要实现的是这样的事情:

Category
    Page
    Page
Category
    Page
    Page

到目前为止,我只能打印页面标题。

- site.pages.each do |page|
            %li
              %a{ :href => page.url}= page.title

我有一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:2)

如果我满足于你想要的东西,这样的事情应该有效:

%ul
  -site.pages.group_by(&:category).each do |category, pages|
    %li
      = category
      %ul
        -pages.each do |page|
          %li
            %a{href: page.url}= page.title

这使用group_by创建一个以类别属性为键的页面数组的哈希值,并生成每个页面中所有页面的嵌套列表。

这将包括所有页面,包括没有类别的thoe,因此您可能希望首先使用reject过滤网页数组:

-site.pages.reject{|p| p.category.nil?}.group_by(&:category).each do |category, pages|
  ...