Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
  #1  
Alt 22.06.07, 11:44
TYPO3forum.net Donater
 
Registriert seit: 19.01.06
Ort: Köln
Beiträge: 836

Tutorial: Die ultimative Suche


Hallo Leute,

Es gibt einige Suchextensions für Typo3: die Indexed Search durchsucht PDFs und gecachte Seiten, aber leider keine Datensätze, andere Extensions durchsuchen Datensätze, aber keine PDFs. Also beschloss ich zwei Extensions zu kombinieren.

Die erste ist die an_searchit: eine tolle Extensions, die mit TypoScript perfekt an die Bedürfnisse angepasst werden kann, durchsucht Datensätze.
http://typo3.org/extensions/reposito...earchit/2.4.1/

Die zweite ist die indexed_search: durchsucht gecachte Seiten und externe Dokumente (ist seit 4.0 eine Systemextension).

Ich brauche zwei Seiten, die erste ist sichtbar, da kommt die Suchbox drauf. Die zweite ist untergeordnet und unsichtbar, da sollen die Ergebnisse angezeigt werden. Auf der ersten Seite Extensiontemplate anlegen und die an_searchit konfigurieren, in diesem Fall sollen die Tabellen der Branchendatenbank (pro_industrydb) und der Veranstaltungskalender (sk_calendar) durchsucht werden:

Typoscript-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
temp.renderHeader {
length = 100
wrap = <h2>|</h2>
markupColor = #ff0000
}
temp.renderBody {
length = 100
wrap = <p>|</p>
markupColor = #ff0000
}
temp.searchitConfig {
sections {
2 {
title = Veranstaltungen
table = tx_skcalendar_events
fields = title|description
PID = 8
customBody.show = 1
customBody.title < temp.renderHeader
customBody.description < temp.renderBody
}
3 {
title = Branchenbucheinträge
table = tx_proindustrydb_entries
fields = title|short|description|addinfo
PID = 54
#doNotShowLink = 1
params = tx_proindustrydb_pi1[showUid]=#uid#&tx_proindustrydb_pi1[backLink]=80
customBody.show = 1
customBody.title < temp.renderHeader
customBody.description < temp.renderBody
}
}
}
seite.10.marks.CONTENT_CENTER >
seite.10.marks.CONTENT_CENTER = COA
# configure the search form
seite.10.marks.CONTENT_CENTER.10 < plugin.tx_ansearchit_form
seite.10.marks.CONTENT_CENTER.10 {
resultPID = 80
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
}
seite.10.marks.CONTENT_CENTER.80 < styles.content.get
plugin.tx_indexedsearch.show.advancedSearchLink = 0

Auf die zweite Seite kommt das Ergebnis hin. Das hab ich auf der ersten Seite vorkonfiguriert. Wieder Extensiontemplate anlegen und die beiden Extensions konfigurieren. Auf dieser Seite wird als Content Element die indizierte Suche eingebunden, die das Suchwort auch bekommen und auswerten soll. Deswegen schreib ich ein Mini-PHP-Skript, das diese Aufgabe für mich übernimmt:

PHP-Code:
<?
$_POST
['tx_indexedsearch']['sword'] = $_GET['tx_ansearchit_resOverview']['sWord'];
if(
$_POST['tx_ansearchit_form']['sword']!='') {
$_POST['tx_indexedsearch']['sword'] = $_POST['tx_ansearchit_form']['sword'];
}
if(
$_POST['tx_ansearchit_form']['submit'] != '') {
$_POST['tx_indexedsearch']['submit_button'] = $_POST['tx_ansearchit_form']['submit'];
} else {
$_POST['tx_indexedsearch']['submit_button'] = 'senden';
}
?>
Das Skript speichere ich im Ordner fileadmin/script als switch_search_vars.inc ab. Nun muss ich nur noch die Extension konfigurieren und das Skript einbinden.

Typoscript-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
config.no_cache = 1
# set post vars from indexed search
seite.10.marks.CONTENT_CENTER.5 = PHP_SCRIPT
seite.10.marks.CONTENT_CENTER.5.file = fileadmin/script/switch_search_vars.inc
# configure the search result overview
seite.10.marks.CONTENT_CENTER.20 < plugin.tx_ansearchit_resOverview
seite.10.marks.CONTENT_CENTER.20 {
config < temp.searchitConfig
headline.show = 1
headline.caption = Gefunden in folgenden Bereichen
headline.wrap = <h1 class="sectionsHeader">|</h1><p>klicken Sie eine Bereich an, um die komplette Ergebnisliste anzuzeigen</p>
sections.format = name, count
sections {
NO.wrap = <strong>|</strong><br />
ACT = 1
ACT.doNotLink = 1
ACT.wrap = <strong>|</strong><br />
name.wrap = |
count.wrap =  (|)
}
sections.wrap = <div class="sectionsDisplay">|</div>
noResults.caption = Ihre Suche brachte leider keine Ergebnisse
}
#configure the search result list
seite.10.marks.CONTENT_CENTER.30 < plugin.tx_ansearchit_resList
seite.10.marks.CONTENT_CENTER.30 {
config < temp.searchitConfig
headline.show = 1
headline.caption = Ergebnisse
headline.wrap = <h1 class="resultsHeader">|</h1>
outString = <div class="resultItem">###BODY### ###LINK###</div>
}

Man kann noch aus dem HTML-Template der indexed_search die Inhalte vom Marker SEARCH_FORM löschen, damit immer nur ein Suchformular angezeigt wird.

Das Ergebnis ist hier zu bewundern:
Amelinghausen: Suche
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #2  
Alt 22.06.07, 12:32
Benutzerbild von mstuebner
TYPO3 Forum Team
Moderator
 
Registriert seit: 01.09.04
Ort: 84424 Isen b. Dorfen
Alter: 41
Beiträge: 2.241
mstuebner eine Nachricht über Skype™ schicken

Sehr schön!

Nur verwundert es mich, dass Du in den Ergebnissen, selbst bei den Links auf die Detailseiten des Branchenverzeichnis das Grausamste schlechthin hast: no_cache=1.

(Beispiel:
Code:
http://www.amelinghausen.de/54.0.html?&no_cache=1&tx_proindustrydb_pi1[showUid]=83&tx_proindustrydb_pi1[backLink]=80#83
Ist Dir die Site zu performant oder warum versuchst Du sie zu verlangsamen? ;-(
__________________
mfg Matthias

TYPO3-Consultant -- TYPO3 Entwicklung
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #3  
Alt 22.06.07, 12:49
TYPO3forum.net Donater
 
Registriert seit: 19.01.06
Ort: Köln
Beiträge: 836

Die Extension, die ich geschrieben habe, verträgt kein Caching, deshalb das no_cache=1. Ich habe da eine Filterbox eingebaut (mit Suchfunktion etc), die funktioniert aber nicht mit Caching. Daher muss das bis ich das gelöst habe, bei ein paar Seiten so bleiben.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #4  
Alt 22.06.07, 12:56
Benutzerbild von mstuebner
TYPO3 Forum Team
Moderator
 
Registriert seit: 01.09.04
Ort: 84424 Isen b. Dorfen
Alter: 41
Beiträge: 2.241
mstuebner eine Nachricht über Skype™ schicken

Zitat:
Zitat von ghoti Beitrag anzeigen
Die Extension, die ich geschrieben habe, verträgt kein Caching, deshalb das no_cache=1. Ich habe da eine Filterbox eingebaut (mit Suchfunktion etc), die funktioniert aber nicht mit Caching. Daher muss das bis ich das gelöst habe, bei ein paar Seiten so bleiben.
1. Ich habe auf der Detailseite des Hotels nichts derartiges gesehen
2. Muss man dann nicht die gesamte Seite, sonderen nur das einzelne Element vom Caching ausnehmen.
__________________
mfg Matthias

TYPO3-Consultant -- TYPO3 Entwicklung
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #5  
Alt 22.06.07, 13:29
TYPO3forum.net Donater
 
Registriert seit: 19.01.06
Ort: Köln
Beiträge: 836

Zitat:
Zitat von mstuebner Beitrag anzeigen
2. Muss man dann nicht die gesamte Seite, sonderen nur das einzelne Element vom Caching ausnehmen.
guter tipp, danke! werde ich machen.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #6  
Alt 02.07.07, 11:03
TYPO3forum.net Donater
 
Registriert seit: 19.01.06
Ort: Köln
Beiträge: 836

Ein Element vom Caching rausnehmen - wie mach ich das?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #7  
Alt 02.07.07, 11:13
Benutzerbild von just2b  
Registriert seit: 03.11.04
Alter: 25
Beiträge: 2.498

USER_INT statt USER oder COA_INT statt COA
__________________
TYPO3 3.7./3.8.X/4.0.X/4.1.1
just2b.com | Google Maps | SmoothGallery | Das grösste werbefreie TYPO3 Forum typo3.net | Content-Management-Systeme mit TYPO3 & RedDot
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #8  
Alt 02.07.07, 11:41
TYPO3forum.net Donater
 
Registriert seit: 19.01.06
Ort: Köln
Beiträge: 836

so hab ich das jetzt auch gemacht und das Caching bei den Seiten wieder angemacht. Ich dachte, da gäbe es auch ein Häkchen wie bei Seiten, das ich aber übersehen hätte.
Danke!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
tt_news: Suche gutes Tutorial yallayalla News (tt_news, mininews und Co) 9 12.06.08 16:10
Suche Tutorial für BE Modul Gluehstrumpf Extension modifizieren oder neu erstellen 2 18.05.08 21:26
pdf_generator - Tutorial!? Kurt51 Alle anderen Extensions 0 03.07.07 17:19
ypMenu - Tutorial Vincent GMENU, HMENU, TMENU und Co. 4 05.06.06 13:00
Tutorial-Ext - wie geht das? Maddy TYPO3 3.x Fragen und Probleme 3 18.01.06 15:46


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0