Domyślnie w UTF-8 sortowanie ustawia literę "Ł" na końcu listy.

Aby to zmienić należy zmienić COLLATION przy ORDER BY na 'utf8_polish_ci'.

Zmiany należy dokonać w pliku:

system/database/DB_query_builder.phg

było

$qb_orderby[] = ($direction === '' && preg_match('/\s+(ASC|DESC)$/i', rtrim($field), $match, PREG_OFFSET_CAPTURE))
? array('field' => ltrim(substr($field, 0, $match[0][1])), 'direction' => ' '.$match[1][0], 'escape' => TRUE)
: array('field' => trim($field), 'direction' => $direction, 'escape' => TRUE);

ma być

$qb_orderby[] = ($direction === '' && preg_match('/\s+(ASC|DESC)$/i', rtrim($field), $match, PREG_OFFSET_CAPTURE))
? array('field' => ltrim(substr($field, 0, $match[0][1])), 'direction' => ' '.$match[1][0], 'escape' => TRUE)
: array('field' => trim($field), 'direction' => 'COLLATE utf8_polish_ci '.$direction, 'escape' => TRUE);

WAŻNE! Nie działa jeśli sortujemy liczby!

Dodaj komentarz

Brak komentarzy, bądź pierwszy i dodaj swój komentarz