在工艺中,我试图按标题排序条目,每个标题都是一个数字,但排序功能像一个单词一样处理它。因为“100”显示在“2”之前,“31”显示在“4”之前,依此类推。
{% for entry in craft.entries.section('mySection').order('title').find() %}
<h2>§{{entry.title}}</h2>
{% endfor %}
思想?
答案 0 :(得分:2)
有一个名为SuperSort的Craft插件可以与natsort
一起使用。
{% for entry in craft.entries.section('mySection').order('title').find()|supersort('natsort') %}
<h2>§{{entry.title}}</h2>
{% endfor %}
答案 1 :(得分:1)
我不是手艺专家,但就我所知,它内部使用twig。所以你可以使用过滤器|sort
,但你真正想要的是使用PHP函数natsort
或natcasesort
。
使用此功能似乎并不是非常简单,实际上您需要为shown here (slide 51)之类的树枝添加扩展名:
class NatSortExtension extends Twig_Extension_Core {
public function getFilters() {
return array_merge(parent::getFilters(), array(
"natsort" => new Twig_Filter_Method($this, "sortFilter")
));
}
public function sortFilter($array) {
natcasesort($array);
return $array;
}
}
现在我不知道工艺是如何运作的。在树枝中你添加一个像这样的扩展名:
$twig = new Twig_Environment();
$twig->addExtension( new NatSortExtension());
然后你就可以做到这一点:
{% for entry in craft.entries.section('mySection').order('title').find|natsort %}
<h2>§{{entry.title}}</h2>
{% endfor %}
很抱歉,我无法继续帮助。