[Typo3-german] Backend Suche erweitern

Christoph Köpernick @ proSystem Media GmbH christoph at psysm.com
Tue Sep 6 16:33:46 CEST 2005


Hallo Liste!

Ich habe mich gefragt ob es eine erweiterte Suchbox im Backend (List
Modul) gibt um Records zu durchsuchen. Gibt es so etwas? Ich habe einige
Beiträge gefunden, welche auch danach fragen und dazu bisher keine
Antworten kamen.


Meine Anforderungen:

- Suche in allen im TCA definierten Feldern der Tabelle
- Formate der Felder aus dem TCA übernehmen (z.B. im TCA als
Pull-Down-Menü definiertes Feld wird in der Suche genauso mit den
möglichen Werten angezeigt.)
- Beliebiges hinzufügen von Feldern zur Suchanfrage (ähnl. Mailform
Builder)
- Beliebiges verschachteln mit AND/OR Operatoren
- Mehrfachauswahl mit AND/OR innerhalb von Select-Boxen
- Für jedes Feld die Einstellung ob mit LIKE/!=/= gearbeitet werden soll
(Vrgl. phpmyadmin)
- Suche über Fremdschlüssel möglich. Wenn ein Record einen
Fremdschlüssel einer anderen Tabelle enthält sollte es möglich sein, das
verknüpfte Record auch zu durchsuchen -> ausgeweitet würde dies bedeuten
Suchanfragen über mehrere Tabellen zu verknüpfen.

Meine Wünsche lassen sich am ehesten mit guten bis sehr guten SQL
Kenntnissen in reiner Query-Form realisieren. Die Antwort auf die Frage,
"dann kann ich ja gleich mit phpmyadmin/SQL arbeiten!" ist: Unsere
Aufgabe ist es den Menschen die mit t3 arbeiten das Leben so einfach wie
möglich zu machen ;)


Realisierung:

Ich habe mir die bestehende Suchbox und das List Modul genauer
angesehen.

Die aktuelle Suchbox wird in typo3/class.db_list.php(recordList extends
t3lib_recordList):242 getSearchBox() definiert. 
Diese Methode gilt es mit einer umfangreicheren Suchbox zu realisieren,
welche die Felder der jeweiligen Tabelle aus dem TCA holt und zur
Auswahl stellt. Optisch würde dies an den Mailform/Tabellen Builder
erinnern. Selbstverständlich sollten dabei auch die exclude fields
berücksichtigt werden.

Die eigentliche Suche geschieht derzeit folgendermaßen:
Der Suchbegriff wird in typo3/db_list.php über
t3lib_div::_GP('search_field') nach $this->search_field geschrieben und
von der Methode start() in typo3/class.db_list.inc (recordList extends
t3lib_recordList) verwendet. Dort ist er als $this->searchString
verfügbar. Die Methode recordList::makeSearchString() baut den Query.
Demnach gilt es die Durchleitung der stark erweiterten Such-Variablen
sicherzustellen und die Methode makeSearchString() zu erweitern.


Diese beiden Anpassungen wären die Basis. Nun die Frage: Wie könnte man
diese Erweiterungen in eine Extension packen, anstatt den Quellcode der
entsprechenden Dateien zu verändern?

Viele Grüße, Christoph Köpernick




More information about the TYPO3-german mailing list