21.09.2010

tt_news Suchformular erweitern

tt_news bietet Hooks für die Erweiterung des Suchformulars um zusätzliche Felder.
Leider funktioniert die Suche trotzdem nur, wenn ein Suchwort (tx_tt_news[swords]) übergeben wird.

Nachdem ich per Hook dem tt_news Suchformular neue Felder hinzugefügt und mit einem weiteren Hook die Datenbankabfrage erweitert hatte, funktionierte die Suche in der normalen Suchansicht von tt_news dennoch nicht.

Ein Blick in die Datei tt_news/pi/class.tx_ttnews.php in function displayList($excludeUids = 0) {...} zeigt, warum das so ist: 

 

php Download
  1. // do the search and add the result to the $where string
  2.  if ($this->piVars['swords']) {
  3.     $where = $this->searchWhere(trim($this->piVars['swords']));
  4.     $theCode = 'SEARCH';
  5. } else {
  6.     $where = ($this->conf['emptySearchAtStart'] ? 'AND 1=0' : ''); // display an empty list, if 'emptySearchAtStart' is set.
  7. }
  8. break;

Wenn das Inputfeld mit dem Suchword leer bleibt, wird die integrierte Suchansicht nicht angesprochen. Die Suche "findet nichts".

Ich habe das so gelöst, dass ich dem Submit-Button ein name-Attribut im HTML-Template des Suchformulars eingebaut habe.

html4strict Download
  1. <input type="submit" class="button submit" name="tx_ttnews[search]" value="###SEARCH_BUTTON###" />

Natürlich müssen auch die neuen Formularfelder im HTML-Template eingetragen werden.

Den o.a. Code in der Datei Datei tt_news/pi/class.tx_ttnews.php habe ich dann so geändert (Zeile 3):

php Download
  1. // do the search and add the result to the $where strin
  2. // if ($this->piVars['swords']) {
  3. if ($this->piVars['search']) {
  4.      $where = $this->searchWhere(trim($this->piVars['swords']));
  5.      $theCode = 'SEARCH';
  6. } else {
  7.      $where = ($this->conf['emptySearchAtStart'] ? 'AND 1=0' : ''); // display an empty list, if 'emptySearchAtStart' is set.
  8. }
  9. break;

Nun funktioniert die Standardsuche auch mit zusätzlichen Feldern. Wichtig ist hier nur, dass die Suchansicht ausgewählt wird (SEARCH). Die zusätzlichen Where Parameter in der SQL-Abfrage übernimmt der entspr. Hook.

Wie die zusätzlichen Suchparameter auch im Pagebrowser in der Listenansicht von tt_news übergeben werden, beschreibt u.a. Artikel.

Die Verwendung der o.a. Hooks wird in der Dokumentation von tt_news ausführlich beschreiben.

Ich habe tt_news 3.0.1 verwendet.


Kategorie: TYPO3, Extensions, tt_news