Dans mon module, j'utilise TableSort pour certaines de mes tables, mais j'ai également des tables qui sont générées par du code, donc pas directement liées à une requête. Ces tables sont également créées avec le thème ('table') et ont donc les tableaux $ header et $ rows. Est-il possible d'utiliser TableSort sur ceux-ci également, peut-être en écrivant ma fonction de tri?
La documentation de tablesort.inc semble suggérer que c'est possible ( toutes les tables créées avec un appel au thème ('table') ont la possibilité d'avoir des en-têtes de colonne sur lesquels l'utilisateur peut cliquer pour trier le tableau par cette colonne ). Cependant, je n'ai trouvé aucune instruction ni exemple sur la façon de procéder. Tout ce que j'ai trouvé jusqu'à présent est basé sur une requête. J'utilise Drupal 7.
Grâce à Berdir, je l'ai fait fonctionner. Voilà comment cela fonctionne plus en détail.
Tablesort est déclenché "automatiquement" si les tableaux (colonnes) du tableau $ headers contiennent les clés 'data', 'field' et éventuellement 'sort'. Cela créera des liens avec «tri» et «ordre» dans les en-têtes de colonne et affichera la petite flèche et autres.
Pour effectuer votre propre tri, obtenez les paramètres de tri actuels avec tablesort_get_order et tablesort_get_sort et utilisez ces valeurs pour votre propre fonction de tri. La clé 'sql' dans le tableau retourné par tablesort_get_order contient le nom du champ à utiliser pour le tri.
Un exemple de code (non testé) avec le tableau $ users contenant des détails pour chaque utilisateur:
la source
write your own sort function
.Voici le code que j'ai trouvé sur la réponse du whisky. Il utilise une requête de champ d'entité.
la source