2017-08-06 32 views
0

我使用Jekill创建模板。是否有可能通过项目的变量这样指定的属性进行排序:Jekill按变量中指定的属性排序

<!-- Collection identity --> 
{% assign collection_id = page.id %} 

<!-- Select pages and sort them by a value provided for the collection --> 
{% assign product_pages = (site.pages | sort: [collection_id]) %} 

的排序不工作(编译错误)。

的任务是有一个与头部定义类别像这样的一些网页:

--- 
layout: collection 
id: sale 
... 
--- 

随后的某些页面可以在一个或多个集合,并从而确定它们的排序顺序内的每个collectino页面会有这样的标题:

--- 
layout: item 
sale: 100 
news: 30 
general: 1000 
... 
--- 

出售,新闻,通用等有应自动生成相同的模板,他们可以分类收集。

回答

1

是的,这是可能的排序属性的物品,但页面不具有id财产,由另一个属性,您可以但是,对它们进行排序,例如:

未分类:

{% for p in site.pages %} 
{{p.name}} 
{% endfor %} 

通过page.name排序:

{% assign product_pages = site.pages | sort: 'name' %} 

{% for p in product_pages %} 
{{p.name}} 
{% endfor %} 

更新

排序与自定义id属性添加到网页:

{% assign product_pages = site.pages | sort: 'id' %} 
+0

嗯,就这么通过预定义的字段而不是动态的。我已经提供了有关该主题的更多信息来澄清任务。 –

+0

如果你在frontmatter中定义了你自己的'id'键,那么只需要用那个键来更改排序键,它就可以工作。 – marcanuy

+0

据我了解,这意味着像“销售”,“新闻”,“一般”等每个类别页面应该有自己的模板文件,但我想有一个模板,所有他们和采取page.id它应该按照相应的方式对页面进行排序:如果page.id是“sale”,那么通过“sale”属性等。 –