Доброго времени суток! Есть вопрос.
Существует нода с полем название товара. Здесь прописываются модели оборудования. Например tovar 1, tovar 2, tovar 12 и т.д
Так вот, при сортировке во вьюхе по этому полю выводится следующим образом:
tovar 1
tovar 12
tovar 13
tovar 2
tovar 3
а нужно:
tovar 1
tovar 2
tovar 3
tovar 12
tovar 13
Как это реализовать?
Заранее спасибо.
Комментарии
В случае с полем "название" никак. Попробуйте сортировать по другому полю например ID.
Можно сделать так.
Завести дополнительное поле, в которое при добавлении/редактировании товара вводить (или выделять из строкового названия) вот этот номер товара.
Если же в номере товара будут не только цифры, но еще и знаки подчеркивания, буквы и т.д., то приводить номер к какому-нибудь виду, чтобы можно было сделать сортировку. Также, если есть номера "0", "10" и "1000", то хранить не "0", а "0000" и не "10", а "0010", чтобы при сортировке они были раньше, чем "1000".
Ну а потом просто делать сортировку по этому полю во Views.
Проще уж тогда кастомный хендлер сортировки написать
В моем случае с помощью регулярного выражения распознаешь элементы номера и дальше на их основе формируешь строку таким образом, чтобы сортировка была такая, какая требуется.
И, кстати, в моем случае можно при желании заполнить строку своим значением, если есть необходимость определенный товар поместить, к примеру, на первое место.
Насчет хэндлеров - не знаю, пока не дорос до их написания
Можно заальтерить вьюсовый запрос, оттуда вычленить регуляркой номер из тайтла и по нему отсортировать, но это накладно по ресурсам
Ужасное решение. Советую написать хендлер для сортировки.
Я писал в своем блоге статью про написание хендлеров, правда тут на примере фильтра http://www.badscript.net/blogpost/pishem-svoy-views-handler-dlya-drupal-54
Сортировка по заголовку ужасна первоначальна
Начнем с того, что не по заголовку, а по названию товара, которым выступает специальное поле. Ничего плохого в сортировке по названию не вижу.
Начнём с того, что у вас сортировка по текстовой строке из которой вы пытаетесь сделать числовую