Сортировка по алфавиту списка сопутствующих товаров в админке Virtuemart

Как многие, кто пользуется Virtuemart 1.0.x уже заметили, при попытке добавить сопутствующий товар в адмике (особенно если товаров много) — дело достаточно нелегкое и вот почему.

Товары выводятся не по алфавиту.

Задача решается достаточно просто — нужно просто отсортировать стандартными средствами PHP массив, содержащий эти самые товары.Для этого открываем файл \administrator\components\com_virtuemart\classes\ps_html.php, переходим к строке 400 и перед ней вставляем функцию сортировки.

Т.е. вместо:

 

while( $db->next_record() ) {
$products[$db->f("product_id")] = $db->f("category_name")." => ".$db->f("product_name");
}
$this->dropdown_display($list_name, $values, $products, $size=20, "multiple=\"multiple\"");
}

Пишем:

 

while( $db->next_record() ) {
$products[$db->f("product_id")] = $db->f("category_name")." => ".$db->f("product_name");
}
asort($products);
reset($products);
$this->dropdown_display($list_name, $values, $products, $size=20, "multiple=\"multiple\"");
}


Пара строк.

Теперь рассмотрим подробнее.

Функция asort ( array &array [, int sort_flags] )

Эта функция сортирует массив таким образом, что сохраняются отношения между ключами и значениями. Она полезна, в основном, при сортировке ассоциативных массивов, когда важно сохранить отношение ключ => значение.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Дополнительный второй параметр sort_flags можно использовать для изменения поведения сортировки, используя следующие значения:

Флаги сортировки:

SORT_REGULAR — сравнивать элементы нормально (не изменять типы)

SORT_NUMERIC — сравнивать элементы в числовом отношении

SORT_STRING — сравнивать элементы как строки

SORT_LOCALE_STRING — сравнивать элементы как строки, основываясь на текущей локали. Добавлено в PHP 5.0.2

0

Добавить комментарий