In meinem Modul verwende ich TableSort für einige meiner Tabellen, aber ich habe auch einige Tabellen, die durch Code generiert werden, also nicht direkt mit einer Abfrage verknüpft sind. Diese Tabellen werden ebenfalls mit theme ('table') erstellt und haben die Arrays $ header und $ rows. Ist es auch möglich, TableSort zu verwenden, wenn ich meine Sortierfunktion schreibe?
Die Dokumentation für tablesort.inc scheint zu suggerieren, dass dies möglich ist ( Alle Tabellen, die mit einem Aufruf des Themas ('table') erstellt wurden, haben die Option, Spaltenüberschriften zu haben, auf die der Benutzer klicken kann, um die Tabelle nach dieser Spalte zu sortieren ). Ich habe jedoch keine Anleitung oder ein Beispiel dafür gefunden. Alles, was ich bisher gefunden habe, basiert auf einer Abfrage. Ich benutze Drupal 7.
Dank Berdir habe ich es geschafft. So funktioniert es im Detail.
Tablesort wird "automatisch" ausgelöst, wenn die (Spalten-) Arrays im $ headers-Array die Schlüssel 'data', 'field' und optional 'sort' enthalten. Dies wird Links mit 'sort' und 'order' in den Spaltenüberschriften erstellen und den kleinen Pfeil und so weiter anzeigen.
Um Ihre eigene Sortierung durchzuführen, rufen Sie die aktuellen Sortiereinstellungen mit tablesort_get_order und tablesort_get_sort ab und verwenden Sie diese Werte für Ihre eigene Sortierfunktion. Der Schlüssel 'sql' in dem von tablesort_get_order zurückgegebenen Array enthält den Feldnamen, der zum Sortieren verwendet werden soll.
Ein Stück (ungetesteter) Beispielcode mit dem Array $ users, der einige Details für jeden Benutzer enthält:
quelle
write your own sort function
.Hier ist der Code, den ich auf die Antwort von Whisky erhielt. Es wird eine Entitätsfeldabfrage verwendet.
quelle