SEARCHRESULT
Suchbegriffe werden in einer Form ins Register geladen, die es möglich macht, auf Seiten zu verlinken.
Beispiel:
register: SWORD_PARAMS= '&sword_list[]=word1&sword_list[]=word2...'
SEARCHRESULT liefert nur Ergebnisse von Seiten vom Typ "Standard" (1), "Erweitert" (2) und "Nicht im Menü" (5)
Eigenschaft | Datentyp | Beschreibung | Standard |
string | Liste (durch : getrennt) mit zugelassenen Tabellenspalten. Beispiel: | ||
string | Dies gibt an, wie das Suchergebis dargestellt wird. Beispiel: ###RANGELOW### Der Anfang des Ergebnisbereiches (z.B. 1) | ||
cObject | Dieses Inhaltsobjekt wird von einem Link zur nächsten Seite mit Suchergebnissen gewrapt. Dieser Code ersetzt das ###NEXT###-Element | ||
cObject | Dieses Inhaltsobjekt wird von einem Link zur vorigen Seite mit Suchergebnissen gewrapt. Dieser Code ersetzt das ###PREV###-Element | ||
target | Ziel bis zu den next/prev-Links | ||
int | Die Anzahl an Ergebnissen pro Seite | 20 | |
cObject | Das Inhaltsobjekt, welches die Suchergebnisse darstellt. | ||
wrap | |||
cObject | Das Inhaltsobjekt, welches den eigentlichen Suchergebnissen vorangestellt ist. | ||
cObjekt | Das Inhaltsobjekt, welches benutzt wird, wenn keine Suchergebnisse gefunden wurden. | ||
boolean | Wenn diese Eigenschaft gesetzt ist, werden die Ergebnisse NICHT nach lastUpdated, tstamp in der pages-Tabelle sortiert | ||
wrap | Wrapt den gesamten Inhalt | ||
»stdWrap | Wrapt den gesamten Inhalt | ||
boolean | Wenn diese Eigenschaft gesetzt ist, werden die Seitentypen 3 und 4 (Externe URLs und Verknüpfungen) zu den durchsuchten Seitentypen hinzugefügt. Allerdings werden zu diesem Zeitpunkt keine Seiten ausgewählt, solange sie nicht mindestens einen Seiteninhalt haben. Das liegt daran, dass die pages- und die tt_content-Tabelle verknüpft sind. Daher muss in einer Externen-URL- oder Verknüpfungs-Seite mindestens ein Seiteninhalt vorhanden sein, damit die Seite in der Suche berücksichtigt wird. | ||
string | Setzt einen Feldnamen, nach dem die Sprache gefiltert werden soll. Das funktioniert wie die languageField-Einstellung in »select. Beispiel: |
ANMERKUNG: "sword" und "scols" MÜSSEN gesetzt sein, damit die Suche durchgeführt werden kann.
var "sword" | Suchbegriff(e) |
var "scols" | Durchsuchte Spalten durch ":" getrennt, z.B.: |
var "stype" | Der Ausgangspunkt der Suche: |
var $GLOBALS ["HTTP_POST_VARS"] ["locationData"] | Wenn diese Eigenschaft gesetzt ist, wird die Suchedurchgeführt, als ob sie auf der Seite gestartet worden wäre, die von locationData angegeben wird. Siehe die Beschreibung beimInhaltsobjekt "FORMS". Nur wenn die Seite, auf die locationData zeigt, innerhalb der Rootline dieser Seite liegt, wird die Suche dies berücksichtigen. |
Intern:
var "scount" | Wenn diese Eigenschaft gesetzt ist, wird sie als Suchzähler benutzt - Die Gesamtanzahl an Ergebnissen. Auf diese Weise müssen wir diese Zahl nicht rekonstruieren |
var "spointer" | Dies zeigt auf den Anfangsinhalt der Suche |
Später:
var "alldomains" | boolean: Wenn gesetzt, wird die Suche auch auf andere Domains ausgeweitet |
var "allsites" | boolean: Wenn gesetzt, wird die Suche auch auf andere Sites ausgeweitet (angegeben durch die "root"-Einstellung in einem aktiven Template) |
var "depth" | Die Tiefe |
Suchsyntax
Wenn Sie eine Suche durchführen, können Sie drei Operatoren benutzen:
- UND: "+", "and" (UK), "og" (DK)
- ODER: "or" (UK), "eller" (DK)
- NICHT: "not" (UK), "uden" (DK)
Der Standardoperator ist AND. Wenn Sie Suchbegriffe in Anführungszeichen "" angeben, wird nach der kompletten Zeichenfolge gesucht. Die Suche unterscheidet nicht zwischen Groß- und Kleinschreibung und findet auch Teile von Wörtern.
Beispiele
- menu backend - Findet Seiten, die sowohl "menu" als auch "backend" enthalten
- "menu backend" - Findet Seiten mit der exakten Wortfolge "menu backend"
- menu or backend - Findet Seiten, die entweder "menu" oder "backend" enthalten
- menu or backend not content - Findet Seiten, die entweder "menu" oder "backend", aber nicht "content" enthalten.
Abfragen zu den Beispielen
In diesem Fall ist als zu durchsuchendes Feld "Seiteninhalt" angegeben. Das beinhaltet tt_content.header, tt_content.bodytext und tt_content.imagecaption.
Den Abfragen vorangestellt ist das hier:
SELECT pages.title AS pages_title, pages.subtitle AS pages_subtitle, pages.keywords AS pages_keywords, pages.description AS pages_description, pages.uid, tt_content.header AS tt_content_header, tt_content.bodytext AS tt_content_bodytext, tt_content.imagecaption AS tt_content_imagecaption FROM pages, tt_content WHERE(tt_content.pid=pages.uid) AND (pages.uid IN (2,5,6,20,21,22,29,30,31,3,4,8,9,16,1) AND pages.doktype in (1,2,5) AND pages.no_search=0 AND NOT tt_content.deleted AND NOT tt_content.hidden AND (tt_content.starttime<=985792797) AND (tt_content.endtime=0 OR tt_content.endtime>985792797) AND tt_content.fe_group IN (0,-1) AND NOT pages.deleted AND NOT pages.hidden AND (pages.starttime<=985792797) AND (pages.endtime=0 OR pages.endtime>985792797) AND pages.fe_group IN (0,-1)) ...
Der Teil "... pages.uid IN (2,5,6,20,21,22,29,30,31,3,4,8,9,16,1)..." ist eine Liste von Seiten-IDs, die durchsucht werden sollen. Diese Liste basiert auf den Seiten-IDs im Website-Zweig des Seitenbaums und begrenzt die Suche auf diesen Zweig und nicht auf die gesamte Tabelle.
... AND ((tt_content.header LIKE '%menu%' OR tt_content.bodytext LIKE '%menu%' OR tt_content.imagecaption LIKE '%menu%') AND (tt_content.header LIKE '%backend%' OR tt_content.bodytext LIKE '%backend%' OR tt_content.imagecaption LIKE '%backend%')) GROUP BY pages.uid
-
... AND ((tt_content.header LIKE '%menu backend%' OR tt_content.bodytext LIKE '%menu backend%' OR tt_content.imagecaption LIKE '%menu backend%')) GROUP BY pages.uid
-
... AND ((tt_content.header LIKE '%menu%' OR tt_content.bodytext LIKE '%menu%' OR tt_content.imagecaption LIKE '%menu%') OR (tt_content.header LIKE '%backend%' OR tt_content.bodytext LIKE '%backend%' OR tt_content.imagecaption LIKE '%backend%')) GROUP BY pages.uid
-
... AND ((tt_content.header LIKE '%menu%' OR tt_content.bodytext LIKE '%menu%' OR tt_content.imagecaption LIKE '%menu%') OR (tt_content.header LIKE '%backend%' OR tt_content.bodytext LIKE '%backend%' OR tt_content.imagecaption LIKE '%backend%') AND NOT (tt_content.header LIKE '%content%' OR tt_content.bodytext LIKE '%content%' OR tt_content.imagecaption LIKE '%content%')) GROUP BY pages.uid
Beachten Sie, dass Groß- und Kleinschreibung bei der Suche keine Rolle spielt. Außerdem findet "menu" als Suchbegriff außer "menu" auch "menus", "menuitems" usw.
Kommentare von registrierten Benutzern:
| Autor | Nachricht |
|---|---|
|
Verfasst am: Freitag, 01-05-09 10:39
|
|
|
linajoy
Dabei seit: 18. 04. 2006
Beiträge: 401
|
Möchte man die Suche mit zusätzlichen Feldern, .B. aus Extensions, erweitern, muss man nicht nur die scols übergeben sondern auch die allowedCols anpassen. Beisiel gibt es hier: http://typo3-blog.net/blog/typo3-seitensuche-erweitern.html |
|
Verfasst am: Freitag, 01-05-09 09:28
|
|
|
linajoy
Dabei seit: 18. 04. 2006
Beiträge: 401
|
Seltamerweise wird auch die auswahl von Extension Feldern, die zu pages oder tt_content gehören ignoriert. Ich habe dazu mehrere Fragen aber keine Antworten gefunden. |
|
Verfasst am: Dienstag, 15-05-07 11:50
|
|
|
Heiko Trömel
Dabei seit: 15. 05. 2007
Beiträge: 0
|
Das wichtigste wird einem wieder mal nicht gesagt: The 'pages'-table is ALWAYS included as the search is page-based. Apart from this there may be one and only one table, joined with the pages-table. This table is the first table mentioned in the requested-list. If any more tables are set here, they are ignored. Zitat aus dem Quellcode von Typo3. |
|
Verfasst am: Montag, 14-08-06 19:34
|
|
|
tobi
Dabei seit: 04. 02. 2003
Beiträge: 1
|
TYPOSCRIPT |



