Indexed Search in TYPO3 einrichten

Basierend auf einen Älteren Beitrag (Eigene Suchbox mit Typoscript für Indexed Search) , habe ich mich entschlossen noch mal generell die Einrichtung von Indexed Search zu berichten.

Wichtig finde ich zu wissen, dass man zwar direkt loslegen kann, wenn man das Plugin aktiviert hat, aber die Seiten erst in den Index müssen. Am besten bietet sich dafür das interne Plugin “Scheduled” / “Taskplaner”. Dieser könnte entweder direkt oder mit einem weiteren Plugin “Crawler” die Seite 1:1 einmal abrufen und dann den Index aufbauen.

Alternative wäre vielleicht ein externer Site-Crawler / Sitemap-Generator, da diese einmal über die komplette Seite gehen.

In diesem Zuge kann ich auch mein TypoScript noch einmal erklären. Ich bin dies zwar immer als externe Datei ein, aber man kann es auch bequem in das Root-Template einbauen. Je nach belieben.

Constants-Config

baseDir = Verzeichnis wo meine Templates liegen
search_root = Start-Root-Knoten im Seitenbaum (in der Regel 1)
search_result = Zielseite, wo das IndexedSearch-Plugin für die Suchausgabe eingebunden ist.

# directories
###############################
baseDir             = fileadmin/templates/

# system (Knoten start, Suchergebnis)
###############################
search_root         = 1
search_result       = 18

Setup-Config

Hier werden die Variablen ausgelesen, die ich vorher defeniert habe. Dazu natürlich das Template. Wenn man dieses jedoch nicht braucht, kann man auch einfach das templateFile mit #templateFile schreiben. Dann wird das ursprüngliche Template gezogen.

plugin {
    tx_indexedsearch {
        # erweiterte Suche abschalten
        show.advancedSearchLink = 0

        search.rootPidList= {$search_root}
        searchUID = {$search_result}
        showAdvanced = 0

        templateFile = {$baseDir}/ext_templates/indexed_search.tmpl

        show {
            # Suchregeln
            rules = 0

            # Erstellungsinformationen des Hashes
            parsetimes=1

            # Zweite ebene im Bereichs-dropdown anzeigen
            L2sections=1

            # Erste ebene im Bereichs-dropdown anzeigen
            L1sections=1

            # Alle "nicht im menü" oder "im menü verstecken"
            #(aber nicht "versteckte" seiten) mit anzeigen in section?
            LxALLtypes=0

            # leeren des Suchfeldes nach suche
            clearSearchBox = 0

            # Aktuelles suchwort zu den bisherigen suchwörtern hinzufügen
            #  clearSearchBox.enableSubSearchCheckBox=0
        }

        _LOCAL_LANG.de {
            pi_list_browseresults_display =
            submit_button_label = Suche
            default_search_word_entry = Suche nach
            form_searchIn =
            form_searchFor =
            searchFor = gesucht nach:
        }
    }
}

Das komplette Template

Pfad: fileadmin/templates/ext_templates/indexed_search.tmpl

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>indexed_search template</title>
</head>

<body>

<h1>Indexed Search: Default template</h1>
###FORM_SUBMIT###

<h2>TEMPLATE_SEARCH_FORM</h2>
<p><em>Template for displaying the search form.</em></p>

<!-- ###SEARCH_FORM### begin -->
<div class="tx-indexedsearch-searchbox">
<form action="###ACTION_URL###" method="post" id="tx_indexedsearch">
	<input type="hidden" name="tx_indexedsearch[_sections]" value="0" />
	<input type="hidden" name="tx_indexedsearch[_freeIndexUid]" id="tx_indexedsearch_freeIndexUid" value="_" />
	<input type="hidden" name="tx_indexedsearch[pointer]" id="tx_indexedsearch_pointer" value="0" />
	<!-- ###HIDDEN_FIELDS### begin -->
	<input type="hidden" name="###HIDDEN_FIELDNAME###" value="###HIDDEN_VALUE###" />
	<!-- ###HIDDEN_FIELDS### end -->

	<table cellpadding="0" cellspacing="0" border="0" summary="Search form">
		<tr>
			<td>###FORM_SEARCHFOR###</td>
			<td colspan="2">
                <div class="input-group">
                    <input type="text" class="form-control" placeholder="Ihr Suchwort" value="###SWORD_VALUE###" name="tx_indexedsearch[sword]">
                    <input type="hidden" value="Search" name="tx_indexedsearch[submit_button]">
                    <span class="input-group-btn">
                    <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
                    </span>
                </div>
            </td>
		</tr>

		<!-- ###ADDITONAL_KEYWORD### begin -->
		<tr>
			<td>&nbsp;</td>
			<td colspan="2"><input type="hidden" name="tx_indexedsearch[sword_prev]" value="###SWORD_PREV_VALUE###" /><input type="checkbox" name="tx_indexedsearch[sword_prev_include]" id="tx_indexedsearch_sword_prev_include" value="1" ###SWORD_PREV_INCLUDE_CHECKED### /> <label for="tx_indexedsearch_sword_prev_include">###ADD_TO_CURRENT_SEARCH###</label>.</td>
		</tr>
		<!-- ###ADDITONAL_KEYWORD### end -->

		<!-- ###SEARCH_FORM_EXTENDED### begin -->

		<!-- ###SELECT_SEARCH_FOR### begin -->
		<tr>
			<td>###FORM_MATCH###</td>
			<td>
				<!-- ###SELECT_SEARCH_TYPE### begin -->
				<select name="tx_indexedsearch[type]" class="tx-indexedsearch-selectbox-type type">
					###SELECTBOX_TYPE_VALUES###
				</select>
				<!-- ###SELECT_SEARCH_TYPE### end -->
			</td>
			<td>
				<!-- ###SELECT_SEARCH_DEFOP### begin -->
				<select name="tx_indexedsearch[defOp]" class="tx-indexedsearch-selectbox-defop defop">
					###SELECTBOX_DEFOP_VALUES###
				</select>
				<!-- ###SELECT_SEARCH_DEFOP### end -->
			</td>
		</tr>
		<!-- ###SELECT_SEARCH_FOR### end -->

		<!-- ###SELECT_SEARCH_IN### begin -->
		<tr>
			<td>###FORM_SEARCHIN###</td>
			<td>
				<!-- ###SELECT_SEARCH_MEDIA### begin -->
				<select name="tx_indexedsearch[media]" class="tx-indexedsearch-selectbox-media media">
					###SELECTBOX_MEDIA_VALUES###
				</select>
				<!-- ###SELECT_SEARCH_MEDIA### end -->
			</td>
			<td>
				<!-- ###SELECT_SEARCH_LANG### begin -->
				<select name="tx_indexedsearch[lang]" class="tx-indexedsearch-selectbox-lang lang">
					###SELECTBOX_LANG_VALUES###
				</select>
				<!-- ###SELECT_SEARCH_LANG### end -->
			</td>
		</tr>
		<!-- ###SELECT_SEARCH_IN### end -->

		<!-- ###SELECT_SECTION### begin -->
		<tr>
			<td>###FORM_FROMSECTION###</td>
			<td colspan="2">
				<select name="tx_indexedsearch[sections]" class="tx-indexedsearch-selectbox-sections sections">
					###SELECTBOX_SECTIONS_VALUES###
				</select>
			</td>
		</tr>
		<!-- ###SELECT_SECTION### end -->

		<!-- ###SELECT_FREEINDEXUID### begin -->
		<tr>
			<td valign="top">###FORM_FREEINDEXUID###</td>
			<td colspan="2">
				<select name="tx_indexedsearch[freeIndexUid]" class="tx-indexedsearch-selectbox-freeIndexUid freeIndexUid">
					###SELECTBOX_FREEINDEXUIDS_VALUES###
				</select>
			</td>
		</tr>
		<!-- ###SELECT_FREEINDEXUID### end -->

		<!-- ###SELECT_ORDER### begin -->
		<tr>
			<td valign="top">###FORM_ORDERBY###</td>
			<td colspan="2">
				<select name="tx_indexedsearch[order]" class="tx-indexedsearch-selectbox-order order">
					###SELECTBOX_ORDER_VALUES###
				</select>&nbsp;
				<select name="tx_indexedsearch[desc]" class="tx-indexedsearch-selectbox-desc desc">
					###SELECTBOX_DESC_VALUES###
				</select>
			</td>
		</tr>
		<!-- ###SELECT_ORDER### end -->

		<!-- ###SELECT_RESULTS### begin -->
		<tr>
			<td valign="top">###FORM_ATATIME###</td>
			<td colspan="2">
				<select name="tx_indexedsearch[results]" class="tx-indexedsearch-selectbox-results results">
					###SELECTBOX_RESULTS_VALUES###
				</select>
			</td>
		</tr>
		<!-- ###SELECT_RESULTS### end -->

		<!-- ###SELECT_GROUP### begin -->
		<tr>
			<td valign="top">###FORM_STYLE###</td>
			<td colspan="2">
				<select name="tx_indexedsearch[group]" class="tx-indexedsearch-selectbox-group group">
					###SELECTBOX_GROUP_VALUES###
				</select>&nbsp;&nbsp;

				<!-- ###SELECT_EXTRESUME### begin -->
				<br /><input type="hidden" name="tx_indexedsearch[extResume]" value="0" /><input type="checkbox" value="1" name="tx_indexedsearch[extResume]" id="tx_indexedsearch_extResume" ###EXT_RESUME_CHECKED### /> <label for="tx_indexedsearch_extResume">###FORM_EXTRESUME###</label>
				<!-- ###SELECT_EXTRESUME### end -->
			</td>
		</tr>
		<!-- ###SELECT_GROUP### end -->

		<!-- ###SEARCH_FORM_EXTENDED### end -->
	</table>
	<p>###LINKTOOTHERMODE###</p>
</form>
</div>
<!-- ###SEARCH_FORM### end -->
<br /><br />




<h2>TEMPLATE_RULES</h2>
<p><em>Template for displaying the search rules.</em></p>

<!-- ###RULES### begin -->
	<div class="tx-indexedsearch-rules">
		<h2>###RULES_HEADER###</h2>
		<p>###RULES_TEXT###</p>
	</div>
<!-- ###RULES### end -->
<br /><br />




<h2>TEMPLATE_RESULT_SECTION_LINKS</h2>
<p><em>Template for the section links in section mode.</em></p>

<!-- ###RESULT_SECTION_LINKS### begin -->
	<div class="tx-indexedsearch-sec">
		<table cellpadding="0" cellspacing="0" border="0" summary="Result links">
			###LINKS###
		</table>
	</div>
<!-- ###RESULT_SECTION_LINKS### end -->

<!-- ###RESULT_SECTION_LINKS_LINK### begin -->
			<tr>
				<td width="100%">--&gt; ###LINK###</td>
			</tr>
<!-- ###RESULT_SECTION_LINKS_LINK### end -->
<br /><br />




<h2>TEMPLATE_SECTION_HEADER</h2>
<p><em>Template for the section title in section mode.</em></p>
<!-- ###SECTION_HEADER### begin -->
	<div class="tx-indexedsearch-secHead"><a name="###ANCHOR_URL###"></a>
		<table cellpadding="0" cellspacing="0" border="0" summary="Section header">
			<tr>
				<td class="tx-indexedsearch-title title" width="100%">###SECTION_TITLE###</td>
				<td class="tx-indexedsearch-result-count result-count" nowrap="nowrap">###RESULT_COUNT### ###RESULT_NAME###</td>
			</tr>
		</table>
	</div>

<!-- ###SECTION_HEADER### end -->
<br /><br />




<h2>TEMPLATE_RESULT_OUTPUT</h2>
<p><em>Template for the search result list.</em></p>

<!-- ###RESULT_OUTPUT### begin -->
	<div class="tx-indexedsearch-res">
		<table cellpadding="0" cellspacing="0" border="0" summary="Result row">
			<!-- ###HEADER_ROW### begin -->
			<tr>
				<td class="tx-indexedsearch-icon icon" nowrap="nowrap">###ICON###</td>
				<td class="tx-indexedsearch-result-number result-number" nowrap="nowrap">###RESULT_NUMBER###</td>
				<td class="tx-indexedsearch-title###CSSSUFFIX### title" width="100%">
				<hr/>
				###TITLE###
				</td>
				<td class="tx-indexedsearch-percent percent" nowrap="nowrap">###RATING###</td>
			</tr>
			<!-- ###HEADER_ROW### end -->

			<!-- ###ROW_LONG### begin -->
			<tr>
				<td>&nbsp;</td>
				<td class="tx-indexedsearch-descr descr" width="100%" colspan="3">###DESCRIPTION###</td>
			</tr>
			<!-- ###ROW_LONG### end -->

			<!-- ###ROW_SHORT### begin -->
			<tr>
				<td>&nbsp;</td>
				<td class="tx-indexedsearch-descr descr" width="100%" colspan="3">###DESCRIPTION###</td>
			</tr>
			<!-- ###ROW_SHORT### end -->

			<!-- ###ROW_SUB### begin -->
			<tr>
				<td>&nbsp;</td>
				<td class="tx-indexedsearch-list list" width="100%" colspan="3"><br />###TEXT_ROW_SUB###<br /><br /></td>
			</tr>
			<!-- ###ROW_SUB### end -->
		</table>
		<br />
	</div>
<!-- ###RESULT_OUTPUT### end -->
<br /><br />


</body>
</html>

Ein wenig Styling

/* suche */
.tx-indexedsearch-res {}
.tx-indexedsearch-res table {}
.tx-indexedsearch-res hr {display: none}
.tx-indexedsearch-res &amp;gt; div {border-bottom: 2px solid transparent;padding: 15px 15px 0 15px;margin-bottom: 20px;}
.tx-indexedsearch-res &amp;gt; div:hover {border-bottom: 2px solid #00AE51;}
.tx-indexedsearch-res .tx-indexedsearch-res,
.tx-indexedsearch-browsebox {background-color: rgb(255, 255, 255);}
.tx-indexedsearch-res .tx-indexedsearch-icon {display:none; visibility: hidden;}
.tx-indexedsearch-res .tx-indexedsearch-title a {color: #00AE51;text-decoration: none;font-family: 'proxima_nova_softbold', sans-serif;}
.tx-indexedsearch-res .tx-indexedsearch-descr {font-style: normal !important;}
.tx-indexedsearch-res .tx-indexedsearch-descr strong {color: #005699!important;}
.tx-indexedsearch-searchbox {height:200px; background-color: rgb(255, 255, 255);padding: 32px;margin-bottom: 30px; border-bottom: 1px solid rgb(0, 174, 81)}
.tx-indexedsearch-searchbox table {width:100%; margin-top: 5%;}
.tx-indexedsearch-searchbox .input-group {width:500px;margin: 0 auto;}
.tx-indexedsearch-percent {display:none;}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.