我想在我的Jekyll网站上按重量排序导航。我正在使用this plugin,但我想在导航中只显示有重量的页面,而不是在列表末尾显示没有重量的页面。
所以我改变了这个插件:
module Jekyll
class WeightedPagesGenerator < Generator
safe true
def generate(site)
site.pages.each do |page|
if page.data["weight"] != nil
site.config['weighted_pages'] = site.pages.sort_by { |a|
a.data['weight'] }
end
end
end
end
end
但我得到一个错误:生成... /_plugins/sorted_navigation.rb:10:in`sort_by':NilClass与2的比较失败(ArgumentError)。
知道如何使这项工作吗?
答案 0 :(得分:1)
从Jekyll 2.2.0开始,您可以按任何对象属性对对象数组进行排序。现在可以按重量进行排序,并且比旧解决方案更有效(参见https://stackoverflow.com/a/25513956/1548376)
答案 1 :(得分:0)
我最终没有使用这个插件。相反,我使用来自this answer的液体标签,现在我的导航看起来像这样:
<nav>
<ul>
{% for weight in (1..5) %}
{% unless p.weight %}
{% for p in site.pages %}
{% if p.weight == weight %}
<li><a {% if p.url == page.url %}class="active"{% endif %} href="{{ p.url }}" title="{{ p.title }}">{{ p.title }}</a></li>
{% endif %}
{% endfor %}
{% endunless %}
{% endfor %}
</ul>
</nav>