Пользовательская сортировка в Drupal Views - PullRequest
1 голос
/ 29 сентября 2010

У меня есть представление, в котором используются поля из модуля 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.

Ответы [ 3 ]

3 голосов
/ 29 сентября 2010

Вы можете использовать CAST или CONVERT, чтобы преобразовать текст в числа и просто выполнить обычную сортировку, документация

2 голосов
/ 22 марта 2014

Вы можете использовать этот модуль https://drupal.org/project/views_natural_sort он имеет возможность сортировки различными способами

2 голосов
/ 29 сентября 2010

Рассмотрите возможность использования модуля вычисляемого поля (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

...