Hallo zusammen,
ich benutze überall auf meiner Seite Inhaltselemente vom Typ "Special Element". Jetzt habe ich die Indexed-Search installiert und es werden leider keine Wörter indexiert, die in diesen Spezial-Inhaltselementen enthalten sind. In meinem Index stehen momentan also nur Seitenüberschriften.
Weiß jemand, wie man die Spezial-Inhalte auch indexieren kann?
Vielen Dank im Voraus,
Sabian
Ich habe genau dasselbe Problem mit th_specialelements.
@all: Hat jemand dazu einen Lösungsvorschlag?
Was ich rausgefunden habe:
Wenn ein Inhalt für ein specialelement angelegt wird, erzeugt es einen Eintrag in der Tabelle tt_content. Dabei wird in die Spalte Ctype der Wert "specialelements" geschrieben. Wenn man dies dann nachträglich ändert, z.B. in "text", dann haut zwar die Ausgabe im Front- und Backend nicht mehr hin, aber der Inhalt wird dann von Indexed Search indiziert.
@la_sabian: Vielleicht bist da ja schon ein bisschen weiter gekommen als ich und könntest mir mal deine Erkentnisse posten.
Für Antworten wäre ich sehr dankbar!
MfG Thomas
Für alle die noch Interesse an diesem Thema haben. Ich habe eine Lösung dafür gefunden. Das ganze liegt am Seitencache den indexed_search beim indizieren der Seiten generiert. Da steht dann an den Stellen wo eigentlich der Inhalt des Specialelemnts auftauchen soll nur ein Verweis nach der Art "<!--INT_SCRIPT.e1cd250c5ff6490322888ba5171d174c-->", das heißt das zu dieser Zeit der Inhalt von th_specialelments noch gar nicht bereitgestellt ist und somit auch nicht referenziert werden kann.
Mein Lösungsvorschlag setzt genau da an! Ich ersetzte also die Zeile "<!--INT_SCRIPT.e1cd250c5ff6490322888ba5171d174c-->" mit dem eigentlichen Specialelement, welches in Form einer .tmp Datei im Ordner typo3temp abgelegt ist. Das ganze sieht dann bei mir so aus:
Ich habe in die Datei "class.indexer.php" im Ordner "typo3\sysext\indexed_search" ab der Zeile 546 folgenden Code eingefügt.
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
// indexed_search cache richtig setzen für specialelements
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
$pattern = '/uid:(.*)\/specialelements \[begin\] -->/';
preg_match_all($pattern,$this->conf['content'],$matches);
foreach($matches[1] as $content_id){
$handle = opendir(PATH_site.'typo3temp');
$cacheFile = false;
while ($file = readdir ($handle)) {
if($file != "." && $file != "..") {
$pattern_file = '/thspecialele.*'.$content_id.'_.tmp/';
preg_match($pattern_file,$file,$matches_file);
if(!empty($matches_file)){
$cacheFile = $file;
}
}
}
closedir($handle);
if($cacheFile){
$file_content = file(PATH_site.'typo3temp/'.$cacheFile);
$pattern = '/<!-- CONTENT ELEMENT, uid:'.$content_id.'.*\n.*(<!--.*-->)/';
preg_match($pattern,$this->conf['content'],$matches);
$file_content[0] = preg_replace('/.*\|/','',$file_content[0]);
$file_content = implode('',$file_content);
$this->conf['content'] = str_replace($matches[1],$file_content,$this->conf['content']);
}
}
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
// indexed_search cache richtig setzen für specialelements
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////