TYPO3 8: indexedsearch Suchfeld auf jeder Seite einbinden

Ab Version 8 kommt die Systemextension indexedsearch nur noch in der Extbase & Fluid based Variante daher. Möchte man auf der Website ein Suchfeld auf jeder Unterseite einbinden so kann man das am einfachsten machen, indem man die Extension per TypoScript einbindet – das hat auch den Vorteil, dass es selbst dann funktioniert, wenn man (beispielsweise bei einem Updateprojekt) für die eigenen Templates kein Fluid verwendet.

Hier das benötigte TypoScript:

lib.searchfield = USER
lib.searchfield {
	userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
	vendorName = TYPO3\CMS
	extensionName = IndexedSearch
	pluginName = Pi2
	switchableControllerActions {
		Search {
			1 = form
			2 = search
		}
	}
        features.requireCHashArgumentForActionArguments = 0
	view =< plugin.tx_indexedsearch.view
	view.partialRootPaths.10 = fileadmin/templates/html/fluidtemplates/indexed_search/Partials/
        view.templateRootPaths.10 = fileadmin/templates/html/fluidtemplates/indexed_search/Templates/
	settings =< plugin.tx_indexedsearch.settings
	settings.targetPid = 123
}

settings.targetPid ist die id der Seite, auf der das Plugin eingebunden ist.
Man benötigt nun aus der Indexed Search Extension die drei Dateien aus Resources/Private/Partials, also Form.html, Rules.html, Searchresult.html.
Über view.partialRootPaths.10 holt man sie in den fileadmin Ordner (oder wohin auch immer) und bearbeitet sie dort. Form.html ist obligatorisch. Rules.html benötigt man nur, wenn man die Regeln nicht eh per Typoscript ausblendet und Searchresult.html nur dann, wenn man das Suchfeld auf der Seite, auf der die Suchergebnisse angezeigt werden, nicht ohnehin deaktiviert (s.u.). Beide Dateien müssen dann vollständig leer sein.
Das, was in der Datei Resources/Private/Partials/Form.html benötigt wird, sieht etwa so aus:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
    <f:form action="search" method="post" id="tx_indexedsearch" pageUid="{settings.targetPid}">
	<div class="tx-indexedsearch-hidden-fields">
	<f:form.hidden name="search[_sections]" value="0" />
	<f:form.hidden name="search[_freeIndexUid]" id="tx_indexedsearch_freeIndexUid" value="_" />
	<f:form.hidden name="search[pointer]" id="tx_indexedsearch_pointer" value="0" />
	<f:form.hidden name="search[ext]" value="{searchParams.ext}" />
	<f:form.hidden name="search[searchType]" value="{searchParams.searchType}" />
	<f:form.hidden name="search[defaultOperand]" value="{searchParams.defaultOperand}" />
	<f:form.hidden name="search[mediaType]" value="{searchParams.mediaType}" />
	<f:form.hidden name="search[sortOrder]" value="{searchParams.sortOrder}" />
	<f:form.hidden name="search[group]" value="{searchParams.group}" />
	<f:form.hidden name="search[languageUid]" value="{searchParams.languageUid}" />
	<f:form.hidden name="search[desc]" value="{searchParams.desc}" />
	<f:form.hidden name="search[numberOfResults]" value="{searchParams.numberOfResults}" />
	<f:form.hidden name="search[extendedSearch]" value="{searchParams.extendedSearch}" />
	</div>
 
	<f:form.textfield name="search[sword]" value="{sword}" id="tx-indexedsearch-searchbox-sword" placeholder="Suche" class="form-control" />
	<button name="search[submitButton]" id="tx-indexedsearch-searchbox-button-submit" class="btn btn-primary" type="submit"><i class="glyphicon glyphicon-search"></i></button>
 
	</f:form>
</html>

Wenn man das Suchfeld (gemeint ist das, das auf jeder Seite erscheint), auf der Suchergebnisseite nicht ausblendet, benötigt man noch eine weitere Datei und zwar diese Resources/Private/Templates/Search/Search.html. Hier löscht man alles bis auf den Anfang:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:is="http://typo3.org/ns/TYPO3/CMS/IndexedSearch/ViewHelpers" data-namespace-typo3-fluid="true">
<f:alias map="{sword: searchParams.sword}">
	<f:render partial="Form" arguments="{_all}" />
</f:alias>
</html>

Wie gesagt, auf letzteres kann man verzichten, wenn auf der Seite mit dem Plugin, also hier auf Seite 123, das Suchfeld ausgeschaltet wird, z.B. so:

lib.searchfield >

Dann ist auch diese Zeile im Typoscript nicht nötig:

lib.searchfield = USER
lib.searchfield {
	...
        view.templateRootPaths.10 = fileadmin/templates/html/fluidtemplates/indexed_search/Templates/
        ...
}

Hat man eine mehrsprachige Website, beachte man diesen Link.