Pregunta:
En mi módulo, estoy usando TableSort para algunas de mis tablas, pero también tengo algunas tablas que son generadas por código, por lo que no están directamente vinculadas a una consulta. Estas tablas también se crean con el tema ('tabla') y también las matrices $ header y $ rows. ¿Es posible usar TableSort en esos también, tal vez escribiendo mi función de clasificación?
La documentación de tablesort.inc parece sugerir que es posible ( todas las tablas creadas con una llamada al tema ('tabla') tienen la opción de tener encabezados de columna en los que el usuario puede hacer clic para ordenar la tabla por esa columna ). Sin embargo, no he encontrado ninguna instrucción o ejemplo sobre cómo hacer esto. Todo lo que encontré hasta ahora se basa en una consulta. Estoy usando Drupal 7.
Respuesta:
En realidad, Tablesort consta de dos sistemas diferentes que funcionan juntos.
La primera parte es la representación, lo que sucede directamente dentro de theme_table () o se llama desde eso. Todo lo que hace es mostrar los encabezados de la tabla con la indicación de ordenación si hay una ordenación o anulación predeterminada a través de $ _GET y los convierte en enlaces para que pueda hacer clic en ellos.
La segunda parte es el extensor de consultas TableSort , que ajusta la consulta en la que se agrega según la dirección de clasificación predeterminada o la anulación $ _GET.
Estos dos sistemas están bastante separados, simplemente funcionan juntos fácilmente porque obtienen sus datos de la misma estructura de encabezado $ y usan las mismas funciones auxiliares y convenciones de nomenclatura para los parámetros $ _GET. Pero nada le impide usar solo uno de estos.
Para responder realmente a su pregunta, si solo necesita la parte de renderizado, solo debe asegurarse de hacer algo similar a TableSort :: orderbyHeader () . En lugar de la llamada orderBy (), usaría una función de ordenación de matriz o la pasaría como un argumento a un servicio web o cualquier otra cosa.
Y para lo contrario, solo debe asegurarse de mostrar un enlace que sea básicamente el equivalente de tablesort_header () para que sea reconocido por el extensor de consultas TableSort.