th_specialelements: Inhalte werden nicht indexiert

  • 0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    03. 02. 2008, 17:18

    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


  • tb238 tb238
    T3PO
    0 x
    15 Beiträge
    0 Hilfreiche Beiträge
    13. 12. 2016, 11:07

    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.

    1. //////////////////////////////////////////////////////////
    2. //////////////////////////////////////////////////////////
    3. // indexed_search cache richtig setzen für specialelements
    4. //////////////////////////////////////////////////////////
    5. //////////////////////////////////////////////////////////
    6.  
    7. $pattern = '/uid:(.*)\/specialelements \[begin\] -->/';
    8. preg_match_all($pattern,$this->conf['content'],$matches);
    9. foreach($matches[1] as $content_id){
    10. $handle = opendir(PATH_site.'typo3temp');
    11. $cacheFile = false;
    12. while ($file = readdir ($handle)) {
    13. if($file != "." && $file != "..") {
    14. $pattern_file = '/thspecialele.*'.$content_id.'_.tmp/';
    15. preg_match($pattern_file,$file,$matches_file);
    16. if(!empty($matches_file)){
    17. $cacheFile = $file;
    18. }
    19. }
    20. }
    21. closedir($handle);
    22. if($cacheFile){
    23. $file_content = file(PATH_site.'typo3temp/'.$cacheFile);
    24. $pattern = '/<!-- CONTENT ELEMENT, uid:'.$content_id.'.*\n.*(<!--.*-->)/';
    25. preg_match($pattern,$this->conf['content'],$matches);
    26. $file_content[0] = preg_replace('/.*\|/','',$file_content[0]);
    27. $file_content = implode('',$file_content);
    28. $this->conf['content'] = str_replace($matches[1],$file_content,$this->conf['content']);
    29. }
    30. }
    31. //////////////////////////////////////////////////////////
    32. //////////////////////////////////////////////////////////
    33. // indexed_search cache richtig setzen für specialelements
    34. //////////////////////////////////////////////////////////
    35. //////////////////////////////////////////////////////////