Zum Inhalt springen

Elemente direkt mit ID ansprechen

Erstellt am 23. Juni 2009 · 7 Antworten · letzte Antwort am 25. Juni 2009

Tags: Frage

kraftmalz ·

Hallo liebe Typo3-Gemeinde,

wieder mal ein Verzweifler 🙂 Ich versuche gerade eine Suche in Typo3 zu realisieren. Ich habe dafür in all meinen Seiten ein Sucheingabefeld angelegt ("Suchformular") und als Zielseite eine Ergebnisseite angegeben. Wenn ich also einen Suchbegriff eingebe, lande ich immer auf der Ergebnisseite. Soweit so gut 🙂
Das Suchtextfeld befindet sich in einem (extra angelegten) "Suche"-Bereich (TemplaVoilà) Nun sollen die Ergebnisse (auf der Ergebnisseite) aber in einem "Inhalt"-Bereich angezeigt werden und trotzdem im "Suche"-Bereich weiterhin das Textfeld für die Eingabe. Also habe ich für die Ergebnisseite jeweils im Inhaltsbereich und im Suchbereich ein Suchformular angelegt. Nun weiss ich, wie ich mit TypoScript entweder nur die Ergebnisliste oder nur das Suchformular anzeigen kann, nämlich so:

#nur Ergebnisse anzeigen
tt_content.search.30 >
#nur Formular anzeigen
tt_content.search.20 >

Das macht Typo3 dann aber für alle (!) Suchformulare auf der Ergebnisseite. D.h. Ich sehe in beiden Bereichen entweder nur das Formular oder nur die Ergebnisliste. Ich möchte aber gern im Inhaltsbereich nur die Ergebnisliste und im Suchbereich nur das Formular. Wie macht man das? Wie kann ich die einzelnen Inhaltselemente (von denen ich die ID ja kenne) ansprechen???

Ich danke schonmal vielmals fürs durchlesen! 🙂

Gruss Felix

Michaelh74 ·

Verwende zwar kein TV, aber Du muss Dein Formular in ein zentrales Content Element packen, welches Du dann auf allen Seiten einbindest.

Die Seite für die Anzeige der Ergebnisse bekommt dann ein Extension Template in dem Du dort die Anzeige ohne Formular vornimmst.

Gruß
Michael

kraftmalz ·

Vielen Dank für die Antwort! Ist aber leichter gesagt als getan 😃 Also für mein Verständnis. Ein Extension Template habe ich angelegt - das Problem jedoch bleibt bestehen. Ich möchte in einem Bereich der Seite das Formular anzeigen und in einem anderen Bereich die Ergebnisliste dazu. Das heisst ich mache in jeden Bereich jeweils ein Suchformular und möchte beim ersten die Ergebnisliste ausblenden und beim zweiten das Formular. Dazu muss ich aber auf die Suchformulare einzeln zugreifen in TypoScript - und ich weiss nicht wie das geht.

Für Hilfe bin ich sehr dankbar 🙂

Michaelh74 ·

Versuchs mal mit der Extension macina_searchbox. Damit kannst Du Dein Suchformular einbauen (unterstützt auch eigene HTML Templates) und als Anzeige verwendest Du die indexed_search Ergebnisanzeige mit ausgeschaltetem Formular.

Das sollte klappen.

Gruß
Michael

kraftmalz ·

Jaaa - das ist super 🙂 Jetzt muss ich nur noch wissen, wie ich in TypoScript auf dieses MacinaSuchfeld zugreifen kann. Denn ich hatte vorher die Optik des Sucheingabefeldes angepasst und will das gerne für die Macina übernehmen. Also Beschriftung weg, Knopf mit Symbol etc.

Der alte Manipulationscode sah so aus:

tt_content.search.30 {
    #allgemein
    accessibility=1
    formName= suchform
    #Layout
    labelWrap.wrap=|
    stdWrap.wrap = |
    layout = ###LABEL### ###FIELD###

    #weiterleiten
    redirect = 205
    
    #Formelemente anpassen
    dataArray {
        #Suchfeld
        10 >
        10.type = sword=input,10
        10.label=
        #Parameter in Hidden-Feldern
        20 >
        20.type = scols=hidden
        20.value = tt_content.header-bodytext-imagecaption
        30 >
        30.type = stype=hidden
        30.value = L0
        #Submit-Button
        40 >
        40.type = submit=submit
        40.value =
    }
    #Klassen vergeben
    params {
        submit = class=searchButton
        input= class=searchInput
    }
}

Ich danke Dir aber tausendmal für alle geleistete Mühe - JUHUUUU

kraftmalz ·

Hmm, und ein kleines Problem hab ich noch gefunden: Die Macina Suchmaschine findet nix 🙁 Also ich hab ja jetzt auf allen anderen Seiten die normale Suchbox, die dann auf die Ergebnisseite weiterleitet und dort die Ergebnisse anzeigt und dort wo vorher das normale Eingabefeld für die Suche war zeigt es nun das Eingabefeld der Macina. Wenn ich dort jetzt aber nen Suchbegriff eingebe, bekomme ich kein Ergebnis 🙁

Gruss Felix

Michaelh74 ·

Macina Searchbox ist wie der Name schon sagt nur eine Searchbox keine echte Suche. Dafür musst Du die indexed_search anschalten! Damit arbeitet diese nämlich zusammen. Die ist sowieso weitaus besser als die Standard Suche. Du kannst beides per HTML Template anpassen.

Damit Inhalte in die indexed_search aufgenommen werden, muss die jeweilige Seite min. einmal aufgerufen werden.

Gruß
Michael

SLAng ·

Den alten Code benötigst du nicht mehr...

Du kannst mittels

plugin {
	tx_macinasearchbox_pi1 {
		pidSearchpage = 
		templateFile = 
	}
}

Auf die Extension zugreifen und wie gezeigt zum Beispiel die Search PID definieren, oder das Template einbinden.

Auf nen Marker legst du die zum Beispiel so:

page.10.marks.SEARCH < plugin.tx_macinasearchbox_pi1

Das Template der Searchbox findest du hier:
/typo3/typo3conf/ext/macina_searchbox/pi1/template.htm
Das kopierst du dir nach fileadmin irgendwo und verweist mit oben gezeigten snippet darauf. Dann kannst du anpassen und stylen wie du willst.

Dann die Suche einbinden auf der Suchseite die du angelegt hast.
Dann configs für die Suche nicht vergessen:

page {
	config {
		index_enable = 1
		index_externals = 1
	}
}

(je nachdem was du benötigst)

Im deiner Vorlage für die Seite kannst du dann einen bestimmten Bereich definieren, der Durchsucht werden soll (z.B. nur der Inhalt). Diesen setz du dann in die Subparts

<!--TYPO3SEARCH_begin-->
<!--TYPO3SEARCH_end-->

Nun solltest du noch die Mat-Tags aus der Suche ausschließen... Dazu gehts in die Datei
typo3/typo3/sysext/indexed_seach/class.indexer.php

Dort findest du in der Funktion splitHTMLContent($content).
Hier kommentierst du die beiden Zeilen aus:

if(stristr($meta[$i]['name'],'keywords')) $contentArr['keywords'].=','.$meta[$i]['content'];
if(stristr($meta[$i]['name'],'description')) $contentArr['description'].=','.$meta[$i]['content'];

Der Index muss danach gelöscht werden, falls schon was indiziert wurde. (Im Info-Modul Indexed Search auswählen)

Nun kannst du noch die IndexedSearch konfigurieren per

plugin {
	tx_indexedsearch {
		templateFile = 
	}
}

usw...

P.S.
1. Bitte beim nächsten mal einen aussagekräftigen Titel verwenden
2. ich hab das Thema mal in die korrekte Kategorie verschoben