DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

EXT: [AN] Search it!

Author:Kasper Skårhøj
Created:2002-11-01T00:32:00
Changed by:Markus Schmid
Changed:2005-02-11T09:17:00
Author:Markus Schmid [Area-Net GmbH]
Email:ms@area-net.de
Info 3:
Info 4:

EXT: [AN] Search it!

Extension Key: an_searchit

Copyright 2000-2005, Markus Schmid [Area-Net GmbH], <ms@area-net.de>

This document is published under the Open Content License

available from http://www.opencontent.org/opl.shtml

The content of this document is related to TYPO3

- a GNU/GPL CMS/Framework available from www.typo3.com

Table of Contents

EXT: [AN] Search it! 1

Introduction 1

What does it do? 1

Screenshots 1

Users manual 2

Configuration 2

plugin.tx_searchit_form 2

plugin.tx_searchit_resOverview 2

plugin.tx_searchit_resList 2

Reference 3

Example 5

Known problems 6

To-Do list 6

Changelog 6

Introduction

What does it do?

Die Extension bietet eine flexible Suchfunktion als Alternative zur integrierten Tyop3-Suche oder Index-Search-Extension von Kaspar. Die Suchextension kann frei konfiguriert werden, so dass auch ohne großen Aufwand beliebige Extension eingebunden werden können. Die ganze Konfiguration und das Layout kann über Typoscript erledigt werden.

Screenshots

img-1 Abbildung 1Ansicht der Suchergebnisse im Frontend

img-2

Abbildung 2 Das Suchformular

Users manual

Für die Benutzung muss die Extension lediglich aus dem Repository geladen, installiert und entsprechend dem nächsten Kapitel per Typoscript konfiguriert werden.

Configuration

Die Extension wird komplett per Typoscript konfiguriert. Es können verschiedene Tabellen angegeben werden, in denen gesucht werden sollen. Die Kombination von einer Tabelle und den entsprechenden Feldnamen werden als Section zusammengefasst. Eine Section kann dabei für den normalen Seiteninhalt (Tabelle tt_content) oder für jede beliebige Extension stehen. Es muss mindestens eine Section angegeben werden.

plugin.tx_searchit_form

Das Suchformular. Dieses kann dann in einem Template für einen Marker oder Subpart eingesetzt werden.

plugin.tx_searchit_resOverview

Eine Liste der Sections, in denen Suchergebnisse gefunden wurden mit einem Link jeweils auf die detaillierte Ergebnisseite.

plugin.tx_searchit_resList

Die detaillierte Ergebnisliste. Listet die Seiten der entsprechenden Section auf, in denen Suchergebnisse gefunden wurden.

Die drei obigen TS-Variablen können in einem Template entsprechenden Markern oder Subparts zugeordnet werden:

subparts.SEARCH < temp.searchitForm

In einer entsprechenden Suchergebnisseite können dann die Übersicht und die detaillierte Ergebnisliste beispielhaft wie fogt ausgegeben werden:

page.10.subparts.CONTENT = COA
page.10.subparts.CONTENT{
  10 = TEXT
  10.value = <h2>Suchergebnisse</h2>
  20 < temp.searchitOverview
  30 < temp.searchitList
}

Reference

plugin.tx_searchit_form
resultPID

Parameter

resultPID

Description

PID der Seite, auf der die Ergebnisse angezeigt werden sollen – also die Seite in der plugin.tx_searchit_resOverview und/oder plugin.tx_searchit_resList eingebunden sind.

format

Parameter

format

Description

Reihenfolge und Art der Elemente im Formular durch Komma getrennt. Mögliche Werte:

label, field, button
label.caption

Parameter

label.caption

Description

Beschriftung des label-Tags

label.cssClass

Parameter

label.cssClass

Description

Die CSS-Klasse des label-Tags. Entspricht:

<label class=...
label.cssStyle

Parameter

label.cssStyle

Description

Spezielle CSS-Angaben des label-Tags. Entspricht:

<label style=...
field.title

Parameter

field.title

Description

Titel-Attribut des Suchfeldes. Entpricht:

<input title=...
field.cssClass

Parameter

field.cssClass

Description

Die CSS-Klasse des Suchfeldes . Entspricht:

<input type=”text” class=...
field.cssStyle

Parameter

field.cssStyle

Description

Spezielle CSS-Angaben des Suchfeldes. Entspricht:

<input type=”text” style=...
field.value

Parameter

field.value

Description

Standardwert des Suchfeldes. Entspricht:

<input type=”text” value=...

Dieser Standardwert wird in der Suche ignoriert. Das vorbegelegen des Feldes mit einem Inhalt ist wichtig für die Einhaltung von Richtlinien zum barrierefreien Webdesign

button.caption

Parameter

button.caption

Description

Beschriftung des Submit-Button

button.cssClass

Parameter

button.cssClass

Description

Die CSS-Klasse des Buttons . Entspricht:

<input type=”submit” class=...
button.cssStyle

Parameter

button.cssStyle

Description

Spezielle CSS-Angaben des Buttons. Entspricht:

<input type=”submit” style=...
wrap

Parameter

wrap

Description

-> stdWrap.wrap

plugin.tx_searchit_resOverview
config

Parameter

config

Description

siehe Abschnit “config” am Ende der Refer

resultPID

Parameter

resultPID

Description

PID der Seite, auf der die detaillierten Ergebnisse der jeweiligen Section angezeigt werden sollen – also die Seite in der plugin.tx_searchit_resList eingebunden ist.Standardmäßig ist es dieselbe Seite wie die Übersicht.

headline.show

Parameter

headline.show

Description

Anzeige der Überschrift ja/nein. Mögliche Werte:

1 oder 0
headline.caption

Parameter

headline.caption

Description

Der Überschriftstext

headline.wrap

Parameter

headline.wrap

Description

-> stdWrap.wrap

sections.format

Parameter

sections.format

Description

Reihenfolge und Art der Elemente in der Liste der Sections. Mögliche Werte:

name, count
sections.NO.wrap

Parameter

sections.NO.wrap

Description

Wrap um eine nicht aktive Section:

-> stdWrap.wrap

sections.ACT

Parameter

sections.ACT

Description

Darstellung aktiver Zustand einer Section. Mögliche Werte:

1 oder 0
sections.ACT.wrap

Parameter

sections.ACT.wrap

Description

Wrap um die aktive Section.

-> stdWrap.wrap

sections.name.wrap

Parameter

sections.name.wrap

Description

Wrap um den Section-Namen.

-> stdWrap.wrap

sections.count.wrap

Parameter

sections.count.wrap

Description

Wrap um die Anzahl der gefundenen Treffer in einer Section.

-> stdWrap.wrap

sections.wrap

Parameter

sections.wrap

Description

Wrap um die gesamte Übersicht aller Sections, ohne Überschrift.

-> stdWrap.wrap

noResults.caption

Parameter

noResults.caption

Description

Ausgabetext, wenn keine Ergebnisse gefunden wurden.

plugin.tx_searchit_resList
config

Parameter

config

Description

siehe Abschnit “config” am Ende der Reference

resultPID

Parameter

resultPID

Description

PID der Seite, auf der die detaillierten Ergebnisse der jeweiligen Section angezeigt werden sollen – also die Seite in der plugin.tx_searchit_resList eingebunden ist.Standardmäßig ist es dieselbe Seite wie die Übersicht.

headline.show

Parameter

headline.show

Description

Anzeige der Überschrift ja/nein. Mögliche Werte:

1 oder 0
headline.caption

Parameter

headline.caption

Description

Der Überschriftstext

headline.wrap

Parameter

headline.wrap

Description

-> stdWrap.wrap

outString

Parameter

outString

Description

Formatiert die Ausgabe eines einzelnen Suchergebnis. Innerhalb von “outString” können die drei Marker

###HEADLINE### - Die Überschrift des Ergebnis (siehe. sections.x.header)

###BODY### - Der Übersichtstext des Ergebnis. Also ein automatischer

Zuammenschnitt des gefundenen Datensatzes oder eine

benutzerdefinierte Zusammenstellung (siehe sections.x.customBody)

###LINK### - Der Link zur Seite, auf der das Suchwort gefunden wurde.

Beispiel:

outString = <div class="searchhead"><b>###HEADLINE###</b></div><div class="searchbody">###BODY###</div><div class="searchlink"><img src="fileadmin/site/img/007a.gif" border="0">###LINK###</div>

Wird outString nicht angegeben, so wird die Ausgabe wie folgt formatiert:

outString = <strong>###HEADLINE###</strong><br />###BODY###<br />###LINK###
((Unknown Property))

Parameter

Description

config
sections

Parameter

sections

Description

Speichervariable für die verschiedenen Sections. Jede Section steht für eine Datenbank-Tabelle mit dazugehörigen Feldern, in denen gesucht werden soll. Mehrere Sections werden von 1..n durchnummeriert. Im nächsten Abschnitt wird ein Beispiel dies verdeutlichen. Es muss mindestens eine Section angegeben werden:

sections.1

Weitere Sections dann analog

sections.2
sections.3
...
sections.n
defaultSection

Parameter

defaultSection

Description

Wird keine defaultSection definiert, so wird beim ersten Suchaufruf nur eine Übersicht über die Anzahl der gefundenen Treffer in den Sections aufgelistet. Ist eine defaultSection definiert, so werden beim ersten Aufruf zusätzlich die Suchergebnisse dieser Section aufgelistet. Zum Beispiel:

defaultSection=1
sections.x.title

Parameter

sections.x.title

Description

Der Name der Section. Dieser wird in der Übersicht der Sections ausgegeben. Der Titel muss angegeben werden!

sections.x.table

Parameter

sections.x.table

Description

Der Name der Tabelle in der Datenbank, in der in dieser Section gesucht werden soll. Der Tabellennamen muss angegeben werden! Zum Beispiel:

tt_content
sections.x.fields

Parameter

sections.x.fields

Description

Der Name der Felder der obigen Tabelle in der Datenbank, in denen in dieser Section gesucht werden soll. Mindestens ein Feldnamen muss angegeben werden! Mehrere Feldnamen werden durch | getrennt Zum Beispiel:

header,bodytext,imagecaption
sections.x.PID

Parameter

sections.x.PID

Description

PID der Seite, auf der das Ergebnis gefunden wurde. Normalerweise wird die PID automatisch von der Such-Engine ermittelt. Es kann aber Fälle geben, in denen die Einträge beispielsweise in einem nicht öffentlichen Sys-Ordner abgespeichert, aber auf einer ganz anderen Seite ausgegeben werden. In diesem Fall würde der Link auf den Sys- Ordner verweisen, was natürlich nicht gewünscht ist. Daher kann alternativ eine andere PID angegeben werden.Möglichkeit 1 – eine PID. Beispiel:

sections.2.PID = 28

Möglichkeit 2 – PID abhängig von der PID des Sys-Ordners:

sections.2.PID = 110->28|111->29|112->30

Wird ein Ergebnis im Sys-Ordner mit der PID 110 gefunden, so zeigt der Link auf die Seite mit der PID 28, Wird ein Ergebnis im Sys-Ordner mit der PID 111 gefunden, so zeigt der Link auf die Seite mit der PID 29,

usw.

sections.x.header.field oder sections.x.header

Parameter

sections.x.header.field oder sections.x.header

Description

Standardmäßig wird in der detaillierten Ergebnisliste der entsprechenden Section das Feld “header” als Überschrift zum gefundenen Ergebnis ausgegeben. Bei Extension ist es aber oftmals sinnvoll andere Datenbankfelder als Überschrift (zum Beispiel “title”) zu verwenden.

sections.x.header.caption

Parameter

sections.x.header.caption

Description

Anstatt dem Inhalt eines Datenbankfeldes kann auch ein statischer Text als Überschrift zu den gefundenen Ergebnissen der jeweiligen Section ausgegeben werden.Ist “sections.x.header.caption” wird der Wert aus “sections.x.header.field” ignoriert.

sections.x.select

Parameter

sections.x.select

Description

Über diese Variable können weitere Felder oder Ausdrücke dem SQL- Statement hinzugefügt werden. Als

Beispiel:

sections.2.select = YEAR(FROM_UNIXTIME(start)) AS year

erzeugt

SELECT YEAR(FROM_UNIXTIME(start)) AS startyear,...

zu den zusätzlichen Feldern aus sections.x.fie

sections.x.params

Parameter

sections.x.params

Description

Übergabe von zusätzlichen Parametern an die Links der detailiierten Ergebnisseite, die auf die entsprechenden Seiten verweisen, in denen das Suchwort gefunden wurde

Möglichkeit 1 – statische Parameter:

sections.2.params = no_chache=1&modus=foo

Möglichkeit 2 – dynamische Parameter:

Es können auch die Inhalte von Datenbankfelder (sections.x.fields oder sections.x.select) als Parameter übergeben werden. Das Feld hat dabei folgende Syntax: #FELDNAME#

sections.2.params = tx_myplugin[year]=#year#

fügt in diesem Beispiel das zuvor über sections.2.select hinzugefügte Feld “year” hinzu und könnte folgende Ausgabe im Link erzeugen:

index.php?id=45&year=2004
sections.x.customBody.show

Parameter

sections.x.customBody.show

Description

Zeigt bei “sections.x.customBody.show=1” den benutzerdefinierten Ergebnistext an. Dieser kann laut den nächsten 4 Einstellungsmöglichkeiten konfiguriert werden.Wird diese Variable nicht gesetzt wird der Ergebnistext automatisch anhand der ausgewählten Feldern aus sections.x.fields formatiert.

sections.x.customBody.FIELD.length

Parameter

sections.x.customBody.FIELD.length

Description

Anzahl der Zeichen, die um das gefundene Suchwort angezeigt werden. FIELD entspricht dabei einem Datenbankfeld der zu durchsuchenden Tabelle. Das Datenbankfeld muss vorher über “sections.x.fields” ausgewählt worden sein.Beispiel:

customBody.title.length = 100

Ausführliches Beispiel siehe nächster Abschnit.

Für eine unbegrenzte Zeichenanzahl bitte den Wert 0 übergeben.

sections.x.customBody.FIELD.markupColor

Parameter

sections.x.customBody.FIELD.markupColor

Description

Die Farbe, in der das gefundene Suchwort im Text hervorgehoben wird. FIELD entspricht dabei einem Datenbankfeld der zu durchsuchenden Tabelle. Das Datenbankfeld muss vorher über “sections.x.fields” ausgewählt worden sein.Beispiel:

customBody.title.markupColor = #FF0000

Ausführliches Beispiel siehe nächster Abschnit.

Wird die Farbe nicht angegeben, so wird auch das Sichwort nicht extra hervorgehoben

sections.x.customBody.FIELD

Parameter

sections.x.customBody.FIELD

Description

-> stdWrap-> typolinkstdWrap/typolink für das entsprechende Datenbankfeld. FIELD entspricht dabei einem Datenbankfeld der zu durchsuchenden Tabelle. Das Datenbankfeld muss vorher über “sections.x.fields” ausgewählt worden sein.

Ausführliches Beispiel siehe nächster Abschnit.

Example

temp.searchitConfig{
  sections{
    1{
        title = Seiteninhalt
        table = tt_content
        fields = header|bodytext|imagecaption
     }
    2{
        title = Zuständigkeiten
        table = tx_ancompetencies_competencies
        header.caption = Zuständige Person
        fields = title|name|email|contact
      PID = 28
     }
     3{
        title = Vereinsregister
        table = tx_anassocbase_associations
        fields = title|contact|web|email
      customBody.show = 1
      customBody{
          title{
            length = 0
            wrap = | <br />
          }
          contact{
            length = 0
            wrap = Kontaktadresse:<br />|<br />
          }
      }
      doNotShowLink = 1
      select = ORD(LOWER(t.title)) AS letter
      params = no_cache=1&tx_anassocbase_alphabet[letter]=#letter#
        PID = 114->110|113->108|112->109
     }
  }
}

temp.searchitForm < plugin.tx_ansearchit_form
temp.searchitForm {
        resultPID = 92
        format =  label,field, button
        label.caption= Suche
        label.cssStyle = margin-right:10px;
        field.title = Bitte geben Sie einen Suchbegriff ein
        field.cssStyle = margin-right:10px;
        button.caption = suchen
}


temp.searchitOverview < plugin.tx_ansearchit_resOverview
temp.searchitOverview {
        config < temp.searchitConfig
        headline.show = 1
        headline.caption = Gefunden in
        headline.wrap = <br /><h3>|</h3><br/>
        sections.format = name, count
        sections{
                NO.wrap = |<br/>
                ACT = 1
                ACT.doNotLink = 1
                ACT.wrap = |<br/>
                name.wrap = |
                count.wrap = &nbsp;(|)
        }
        sections.wrap = |<hr style="border:none;border-bottom:solid #C9C9C9;height:1px;”>
        noResults.caption = Ihre Suche brachte leider keine Ergebnisse.
}


temp.searchitList < plugin.tx_ansearchit_resList
temp.searchitList{
        config < temp.searchitConfig
        headline.show = 1
        headline.caption = Ergebnisse
        headline.wrap = <br/><br/><h3>|</h3><br/>
}

Known problems

---

To-Do list

  • Übersetzung des deutschen Manuals ins Englische
  • Konfiguration der detaillierten Ergebnisseite über Typoscript
  • eine erweiterte Siche
  • logische Verknüpfungen (AND / OR) bei der Suche

Changelog

--

img-3 EXT: [AN] Search it! - 7