Codelevel X logo
QR Barcode
Homex86-ProgrammierungProjekteTYPO3
Suche
>> HomeTYPO3 > Suchfunktion

TYPO3



Suchfunktion in TYPO3

Die Standard-Suche

(Suchmaske)

In Typo3 wird von Haus aus eine einfache Suchfunktion mitgeliefert. Dabei gibt es ein vorgefertigtes Inhaltselement mit dem Formulartyp "Suche", einem Suchfeld für die Eingabe des Suchbegriffs sowie einer Auswahl des Suchbereichs, nämlich ob die Suche nur die Überschriften betreffen soll oder ob eine Volltextsuche durchgeführt werden soll. Je nach Suchbegriff bzw. Anzahl der Treffer kann aber eine Volltextsuche recht unübersichtlich werden.

Man legt also am Besten eine Seite mit dem Namen "Suche" an und läßt diese automatisch in der Navigation erscheinen. Als Inhalt der Seite wird ein Inhaltselement angelegt mit dem Suchformular (siehe Beispiel links) und ggf. kann man darüber oder darunter noch ein weiteres Inhaltselement mit Text zur Erläuterung oder Hinweisen oder Tipps für die Suche erstellen. Beim Klick auf den Link "Suche" in der Navigation öffnet sich dann auch gleich das gewünschte Formular und bittet um Eingaben.

Weiter unten im folgenden Screenshot ist das Eingabeformular ersichtlich und im folgenden Screenshot dann auch die Ausgabe der Treffer. Es werden die Überschriften der gefundenen Seiten sowie die ersten Sätze angezeigt so dass man mit etwas Glück auch die Relevanz einschätzen kann. Für diese Suchfunktion ist keine Erweiterung notwendig, sie ist sozusagen im Kern von TYPO3 automatisch enthalten.

Man kann das Suchformular auch bereits mit Daten aufrufen und gleich die gewünschte Suchfunktion automatisch durchführen. Diese Lösung ist unten im Anschluss beschrieben und es ist eigentlich häufig bei Webseiten nur ein einfaches Eingabefeld bereits in der Navigation zu finden. Mit einem Klick auf Suche oder Go oder ähnlich wird dann die Suchfunktion direkt aufgerufen ohne den Zwischenweg über eine Eingabeseite. Das Standard Suchformular von TYPO3 unterstützt diesen Weg, erfordert aber etwas mehr Programmierung in der Navigation.

(Eingabemaske der Suchseite)
(Ergebnisse der Suche)

Smarte Suche mit Eingabefeld

Um eine Suchfunktion mit einem simplen Eingabefeld in der Navigation zu realisieren (wie im Beispiel Screenshot unten), benötigt man in der Navigation ein Formular und muss beim Absenden des Formulars die Werte an die Suchfunktion übergeben. Ein Beispiel für ein solches Suchformular bietet folgendes TypoScript:

(Beispiel für eine "Smart" Suchfunktion)

#search formular standard
compFormSRC=COA
compFormSRC {
  10=TEXT
  10.typolink.parameter={$searchUID}
  10.typolink.additionalParams=&no_cache=1
  10.typolink.returnLast=url
  10.wrap=<form action="|" method="post" id="mailform" name="mailform" enctype="multipart/form-data">
  20 = COA
  20 {
    10=IMAGE
    10.file=GIFBUILDER
    10.file {
      XY=22,25
      10 < decoMenuBG
    }          
    20=TEXT
    20.data=GP : sword
    20.htmlSpecialChars=1
    20.wrap=<input name="sword" value="|" class="searchbox-sword" type="text" size="20"  />    
    30=COA
    30 {
      10 = TEXT
      10.value = <input type="hidden" name="stype" value="L0" /><input type="hidden" name="locationData" value="5:tt_content:7" />
      20 = TEXT
      20.value = <input name="scols" value="tt_content.header-bodytext-imagecaption" type="hidden" />
    }
  }
  30 < topNav
  30.begin={$topPosSearch}
  30.1.min >
  30.stdWrap.split {
    token=suche.html
    cObjNum=1 || 2
    max=2
    1.current=1
    2.current=1
    2.wrap=javascript:document.mailform.submit();|
  }
  40=TEXT
  40.value=</form>
}

Zunächst wird ein Link auf die Suchseite generiert mit der Funktion typolink und der als Konstante definierte Seiten ID in searchUID. Dieser Link dient als "Action" für das Formular, dessen Einleitung dann mit einem wrap um den eigentlichen Link erzeugt wird. Wichtig ist die Verwendung von enctype (Encryption Type) wie im Beispiel um Fehlfunktionen bei der Eingabe von Umlauten oder Sonderzeichen zu vermeiden. Außerdem ist die Variante method=POST vorzuziehen damit nicht ein Rattenschwanz von URL Parametern die nächste Seite verziert.

Im Objekt 20.20 wird das Eingabefeld generiert und falls vorhanden mit dem bereits vorher eingegebenen Suchbegriff (Parameter sword) vorbelegt. So weiß man bei Anzeige der Suchseite, was man im Suchfeld eingegeben hatte. GP:sword liefert den Inhalt des Parameters sword. Objekt 20.30 enthält vordedefinierte Einstellungen (z.B. Suche nur in Überschriften oder Volltext) des Suchformulars über versteckte Felder.

Objekt 30 erzeugt hier den Grafikbutton Suche und ist eine Kopie der Standard Navigation mit einem definierten Beginn über die Konstante topPosSearch, in dem Fall z.B. das fünfte Navigationselement. Sofern noch weitere sichtbare Navigationselemente vorhanden sind, müsste man ggf. noch maxItems auf "1" setzen. Die folgende Nutzung der Funktion split ersetzt den automatisch erzeugten Link auf "suche.html" durch javascript:document.mailform.submit(). Nur so wird der eingegebene Suchbegriff im Formular tatsächlich an die Suchfunktion weitergeleitet, hat allerdings den kleinen Nachteil, dass JavaScript im Browser erlaubt sein muss.

Anderenfalls kann man natürlich die Suchfunktion immerhin noch so nutzen, dass man nach Eingabe des Suchbegriffs die Enter-Taste drückt und dann auch zur Suche mit Suchwort weitergeleitet wird. Ein Klick auf den Button Suche ohne Eingabe eines Suchbegriffs ruft das Suchformular dann ohne Suche auf. An dieser Stelle ist übrigens wieder ein Paradebeispiel warum man an verschiedenen Stellen in TypoScript eine Replace Funktion sehr gut gebrauchen könnte.

Es soll nicht verschwiegen werden, dass es mit der Erweiterung IndexedSearch eine weitaus komfortablere Suchfunktion in TYPO3 gibt. Diese ist unter Erweiterungsmodule erläutert.


Für die Nutzung dieses Angebotes gelten die AGB, insbesondere der Haftungsausschluss.



AutorNewsFeedbackImpressumAGBDatenschutz
...