Drupal 视图中的自定义排序
Posted
技术标签:
【中文标题】Drupal 视图中的自定义排序【英文标题】:Custom sort in Drupal Views 【发布时间】:2010-09-29 12:06:01 【问题描述】:我有一个使用 Biblio 模块中的字段的视图,不幸的是,这些字段都定义为文本字段。我需要根据入藏号对视图进行排序,但是如果在视图中定义排序,则会将数字排序错误,例如
1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20 ...
而不是
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ...
我认为这是因为 Views 将它们解释为字符串并相应地对它们进行排序。
有没有一种简单的方法来创建自定义排序函数,将它们排序为数字?或者也许我可以覆盖自动生成的 SQL(我知道怎么做),但我不知道如何在 SQL 中将字符串排序为数字。
【问题讨论】:
我的视图中有一个百分比自定义字段。如何在此字段上添加排序? 【参考方案1】:您可以使用CAST
或CONVERT
将文本变成数字并进行正常排序,documentation
【讨论】:
【参考方案2】:考虑使用计算域模块 (http://drupal.org/project/computed_field)。它允许您将字段的值设置为内容类型中其他 CCK 字段的计算值。
创建一个计算域。将数据类型设置为整数。在计算域的设置中让
$node_field[0]['value'] = (int)($node->field_biblio_that_has_text[0]['value'])
;
现在您可以根据计算域进行排序,排序将以数字方式而非文本方式进行。当然你需要把field_biblio_that_has_text
改成biblio字段的机器名(去管理字段就可以找到名字了)。
要了解有关计算域的更多信息(并了解精确计算域的计算时间),请查看http://drupal.org/node/126522
【讨论】:
【参考方案3】:你可以使用这个模块 https://drupal.org/project/views_natural_sort 它可以选择以不同的方式排序
【讨论】:
以上是关于Drupal 视图中的自定义排序的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 6 中的自定义搜索表单:视图/面板还是自定义 sql?
mvc(QSortFilterProxyModel)中的自定义排序仅适用一次
如何使用 drupal 6 中的自定义字段将自定义版本的节点/添加表单放在视图中?