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.
Das Suchformular. Dieses kann dann in einem Template für einen Marker oder Subpart eingesetzt werden.
Eine Liste der Sections, in denen Suchergebnisse gefunden wurden mit einem Link jeweils auf die detaillierte Ergebnisseite.
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
}
plugin.tx_searchit_form
Parameter | Description |
resultPID | 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 | Reihenfolge und Art der Elemente im Formular durch Komma getrennt. Mögliche Werte: label, field, button |
label.caption | Beschriftung des label-Tags |
label.cssClass | Die CSS-Klasse des label-Tags. Entspricht: <label class=”... |
label.cssStyle | Spezielle CSS-Angaben des label-Tags. Entspricht: <label style=”... |
field.title | Titel-Attribut des Suchfeldes. Entpricht: <input title=”... |
field.cssClass | Die CSS-Klasse des Suchfeldes . Entspricht: <input type=”text” class=”... |
field.cssStyle | Spezielle CSS-Angaben des Suchfeldes. Entspricht: <input type=”text” style=”... |
field.value | 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 | Beschriftung des Submit-Button |
button.cssClass | Die CSS-Klasse des Buttons . Entspricht: <input type=”submit” class=”... |
button.cssStyle | Spezielle CSS-Angaben des Buttons. Entspricht: <input type=”submit” style=”... |
wrap | -> stdWrap.wrap |
plugin.tx_searchit_resOverview
Parameter | Description |
config | siehe Abschnit “config” am Ende der Refer |
resultPID | 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 | Anzeige der Überschrift ja/nein. Mögliche Werte: 1 oder 0 |
headline.caption | Der Überschriftstext |
headline.wrap | -> stdWrap.wrap |
sections.format | Reihenfolge und Art der Elemente in der Liste der Sections. Mögliche Werte: name, count |
sections.NO.wrap | Wrap um eine nicht aktive Section: -> stdWrap.wrap |
sections.ACT | Darstellung aktiver Zustand einer Section. Mögliche Werte: 1 oder 0 |
sections.ACT.doNotLink | Aktive Section verlinken oder nicht. Mögliche Werte: 1 oder 0 |
sections.ACT.wrap | Wrap um die aktive Section. -> stdWrap.wrap |
sections.name.wrap | Wrap um den Section-Namen. -> stdWrap.wrap |
sections.count.wrap | Wrap um die Anzahl der gefundenen Treffer in einer Section. -> stdWrap.wrap |
sections.wrap | Wrap um die gesamte Übersicht aller Sections, ohne Überschrift. -> stdWrap.wrap |
noResults.caption | Ausgabetext, wenn keine Ergebnisse gefunden wurden. |
plugin.tx_searchit_resList
Parameter | Description |
config | siehe Abschnit “config” am Ende der Reference |
resultPID | 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 | Anzeige der Überschrift ja/nein. Mögliche Werte: 1 oder 0 |
headline.caption | Der Überschriftstext |
headline.wrap | -> stdWrap.wrap |
outString | 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### |
config
Parameter | Description |
sections | 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.2sections.3 ... sections.n |
defaultSection | 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 | Der Name der Section. Dieser wird in der Übersicht der Sections ausgegeben. Der Titel muss angegeben werden! |
sections.x.table | 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 | 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 | 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.fieldodersections.x.header | 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 | 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 | Ü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 | Ü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 | 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 | 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 | 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 | -> 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. |
sections.x.doNotShowLink | Zeigt bei “sections.x.doNotShowLink=1” den Link zur Seite, auf der der Suchbegriff gefunden wurde, nicht an |
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 = (|)
}
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/>
}