Nhờ Berdir tôi đã làm cho nó hoạt động. Đây là cách nó hoạt động chi tiết hơn.
Tableort được kích hoạt "tự động" nếu mảng (cột) trong mảng $ headers chứa các khóa 'dữ liệu', 'trường' và tùy chọn 'sắp xếp'. Điều này sẽ tạo các liên kết với 'sắp xếp' và 'thứ tự' trong các tiêu đề cột và hiển thị mũi tên nhỏ và như vậy.
Để thực hiện sắp xếp của riêng bạn, hãy lấy các cài đặt sắp xếp hiện tại với framesort_get_order và framesort_get_sort và sử dụng các giá trị đó cho chức năng sắp xếp của riêng bạn. Khóa 'sql' trong mảng được trả về bởi framesort_get_order chứa tên trường được sử dụng để sắp xếp.
Một đoạn mã ví dụ (chưa được kiểm tra) với mảng $ user chứa một số chi tiết cho mỗi người dùng:
// setup the table data that we want to show
$tableData = array();
foreach ($users as $userDetails) {
$tableData[] = array(
'name' => $userDetails['name'],
'visits' => $userDetails['visits'],
'views' => $userDetails['views'],
'comments' => $userDetails['comments']
);
}
// headers array, sorting by default on comments
$headers = array(
array('data' => t('Name'), 'field' => 'name'),
array('data' => t('Visits'), 'field' => 'visits'),
array('data' => t('Views'), 'field' => 'views'),
array('data' => t('Comments'), 'field' => 'comments', 'sort' => 'desc')
);
// getting the current sort and order parameters from the url
$order = tablesort_get_order($headers);
$sort = tablesort_get_sort($headers);
// sort the table data accordingly (write your own sort function)
$tableData = my_array_sort($tableData, $order['sql'], $sort);
// create the array with rows for theme table
$rows = array();
foreach ($tableData as $entry) {
$rows[] = array(
array('data' => $entry['name']),
array('data' => $entry['visits']),
array('data' => $entry['views']),
array('data' => $entry['comments']),
);
}
// add any attributes and sent everything to theme table
$attributes = array('class' => array('my_class'));
$table = array('header' => $headers, 'attributes' => $attributes, 'rows' => $rows);
$html = theme('table', $table);