Seite 1 von 1

search_it highlighter killt body-tag [gelöst]

Verfasst: 16. Aug 2017, 20:10
von frood
Moin,

der Seach It-Highlighter killt den Body-Tag in der Ausgabe der gefundenen Seite (nicht im Suchergebnis!).

Lösung: Datei \redaxo\src\addons\search_it\functions\functions_search_it.php, Zeile 718:

Code: Alles auswählen

$body = search_it_search_highlighter_getHighlightedText($matches[1], $suchbegriffe, $tags);

ändern in

Code: Alles auswählen

$body = search_it_search_highlighter_getHighlightedText($matches[0], $suchbegriffe, $tags);

Vielleicht kann das in der nächsten Version gefixt werden ... ansonsten geiles Addon!

Gruss, Marc

Re: search_it highlighter killt body-tag [gelöst]

Verfasst: 17. Aug 2017, 10:37
von lus
neeee, so einfach ist es nicht... der <body> Tag soll ja gerade nicht von der Funktion bearbeitet werden.
Aber es ist definitiv ein Fehler, danke für den Hinweis.

Re: search_it highlighter killt body-tag [gelöst]

Verfasst: 17. Aug 2017, 11:17
von frood
Was soll denn bearbeitet werden, wenn nicht der body-Tag mit seinem Inhalt?
Bei $matches[1] wird nur alles innerhalb des body-Tags bearbeitet und wieder ausgegeben, aber ohne den body-Tag.

Meine Lösung funktioniert bei mir wunderbar .... wo siehst Du hier ein Problem?

Re: search_it highlighter killt body-tag [gelöst]

Verfasst: 17. Aug 2017, 11:50
von lus
so wird eventuell auch der body Tag selbst vom highlighter verändert.

Re: search_it highlighter killt body-tag [gelöst]

Verfasst: 17. Aug 2017, 13:42
von lus
oh, da hatte ich was falsches im Kopf (oder ein altes Problem).
Deine Lösung wird übernommen.

Re: search_it highlighter killt body-tag [gelöst]

Verfasst: 17. Aug 2017, 14:37
von frood
[EDIT] Oh, du hattest schon was geantwortet ... dann kannst Du meine Gewäsch unten ignorieren.
Habe auch gerade festgestellt, dass der Body-Tag gar nicht geändert wird bei meiner Lösung, auch, wenn man "body" sucht ... Blacklist ist also nicht nötig .

****

... und hier das Gewäsch:

Da hast Du natürlich recht, kann man aber verhindern, indem man "body" (und evtl. auch "class" und die css-Klassen des body-Tags) auf die Blacklist setzt.

Ich habe aber jetzt eine bessere Lösung:
Im Template Kommentare setzen:

Code: Alles auswählen

<html>
<head>...</head>
<body>
<!--contentStart-->
......
<!--contentEnd-->
</body>
</html>

... und dann die preg_replace-Anweisung entsprechend ändern:

Code: Alles auswählen

$subject = preg_replace('/<!--content-->*>(.*?)<!--contentEnd-->/is',$body,$subject);
Dann sind auch die Blacklisteinträge nicht mehr nötig.

Wie findest Du diese Lösung? [EDIT] Die alte ist schöner ;)

Re: search_it highlighter killt body-tag [gelöst]

Verfasst: 17. Aug 2017, 16:20
von lus
Ja, ich hatte es auch noch mal getestet, weil ich das irgendwie in Erinnerung hatte, dass mal der body Tag "gehighlightet" wurde, weil er ne Klasse hatte oder ein Attribut... Ist aber Quatsch die regex schließt das ja aus.


Ach so: und wenn du schon PHP kannst, darfst du auch auf github kommen! Da bekommen alle mehr mit als im Forum.