[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Suchwörter highlighten - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

Suchwörter highlighten

6. Aug 2007, 14:26

hi!

gibt es für Redaxo schon eine funktion, die Wörter im Text highlighten lässt?

also z.B.: wenn ich nach "PHP" suche, dann soll auf der Seite, wo "PHP" vorkommt, "PHP" immer gehighlightet sein.

ich nehme mal an, dass das per Url passieren soll (z.B. ?highlight=PHP)

aber der Punkt ist jetzt, ob Redaxo mit damit schon was anfangen kann, oder ob ich mir das erst programmieren soll?

lg. Franz

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

6. Aug 2007, 15:29

Hej,

das hat doch nix mit Redaxo zu tun sondern liegt an der Programmierung der Suchausgabe.

vg Thomas

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

7. Aug 2007, 16:56

naja...

ich will ja, wenn ich auf einen gefunden Atikel klicke, dass dort bei dem Artikel die Suchwörter gehighlighted werden.

also würde ich mir selber das so machen, dass ich per url das wort übergebe, dass gehighlighted wird, und dann würde ich im main Template oder so, den content-text einmal durchgehen, und bei allen wörtern, die stimmen, ein span drumherum setzen.

die frage ist, ob ich das selber proggen muss, oder ob es da schon was gibt.

danke
franz

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

7. Aug 2007, 17:35

Hej Franz,
SquirrelFrank hat geschrieben:die frage ist, ob ich das selber proggen muss, oder ob es da schon was gibt.
das ist doch schnell erledigt.

Code: Alles auswählen

$content = $this->getArticle();
if (isset($_REQUEST['q']) AND isset($_REQUEST['q'] != '') {
  $content = str_replace($_REQUEST['q'], '<span class="highlight">'.$_REQUEST['q'].'</span>'; $content);
}
einfach oben ins Template rein.

vg Thomas

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

8. Aug 2007, 09:56

k danke

ich wollte nur nicht, wenn es schon eine funktion gibt, das nochmal selber schreiben.

dankeschön, für die information!

wgmx
Beiträge: 79
Registriert: 25. Mai 2005, 21:03
Wohnort: México D.F.
Kontaktdaten: ICQ

10. Aug 2007, 17:57

Hallo Thomas,

Du schreibst:
das ist doch schnell erledigt.

Code:
$content = $this->getArticle();
if (isset($_REQUEST['q']) AND isset($_REQUEST['q'] != '') {
$content = str_replace($_REQUEST['q'], '<span class="highlight">'.$_REQUEST['q'].'</span>'; $content);
}

einfach oben ins Template rein.
Kannst Du das kurz genauer erläutern? Wo muß das ins Template? Und funktioniert das dann schon so, daß nach dem Klick auf einen gefundenen Artikel die gefunden Worte hervorgehoben sind? Ich seh da noch nicht durch.

Danke.
Gruß aus Mx
Wieland

Benutzeravatar
svenalbert
Beiträge: 1308
Registriert: 24. Nov 2005, 17:21
Wohnort: Clausthal-Zellerfeld / lower saxony
Kontaktdaten: ICQ Website

12. Aug 2007, 21:38

normalerweise gibst du mit

Code: Alles auswählen

$this->getArticle();
den inhalt des artikels aus.

wenn du das aber in der content-variable speicherst, kannst du dort alle vorkommen von deiner zeichenfolge

Code: Alles auswählen

$_REQUEST['q']
mit einem span umgeben lassen

Code: Alles auswählen

$content = str_replace($_REQUEST['q'], '<span class="highlight">'.$_REQUEST['q'].'</span>'; $content);

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

11. Nov 2007, 14:40

hmm... das ist wohl nicht ganz so einfach...

ich hab das gerade eingebaut, und bin grad draufgekommen, dass ja auch das suchwort, wenn es in einem link vorkommt, mit dem span umschlossen wird (was natürlich den link zerstört).

Wie kann ich jetzt herausfinden, ob das zu ersetzende Wort in einem string ist, ob es eine klasse oder eine id ist, oder ob es wirklich nur reiner text ist.

Ich seh da gerade keine möglichkeit.

danke
SquirrelFrank

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

11. Nov 2007, 15:25

SquirrelFrank hat geschrieben:Wie kann ich jetzt herausfinden, ob das zu ersetzende Wort in einem string ist, ob es eine klasse oder eine id ist, oder ob es wirklich nur reiner text ist.
Als gedanklichen Ansatz fällt mir auf die Schnelle nur ein Beitrag aus der PHP-FAQ ein:
8.11. Wie ersetze ich in einem Text, jedoch nicht innerhalb von HTML-Tags?
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

11. Nov 2007, 16:04

hi!
danke schön.

ich ab das jetzt mal versucht, aber jetzt werden gar keine Wörter mehr "gehighlightet".

Code: Alles auswählen

$content = $this->getArticle(0);
if (isset($_REQUEST['q']) != "") {
$s = $_REQUEST['q'];
$r = '<span class="highlight">'.$_REQUEST['q'].'</span>';
$content = preg_replace("/((<[^>]*)|$s)/e", '"\2"=="\1"? "\1":"$r"', $content);
}
ich hab das einfach übernommen, weil die Funktion mit der Suchmaske doch genau das macht, was ich brauche, oder?

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

11. Nov 2007, 17:20

Hej,

ich könnte mir das mal genauer ansehen. Benötige dazu aber einen Zugang um das alles zu testen.

Hatte da mal einen ähnlichen Fall. Habe ein Lexikon Addon, welches den kompletten Inhalt des Artikels durchsucht und dann den Begriff im Text mit einen Link zum Begriff im Lexikon verlinkt.

Und schreibe bitte noch einmla auf, was passieren soll.

vg Thomas

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

11. Nov 2007, 19:34

hmm...

es liegt definitiv an folgender Zeile:

Code: Alles auswählen

$content = preg_replace("/((<[^>]*)|$s)/e", '"\2"=="\1"? "\1":"$r"', $content);
} 
ich hatte, mit der hilfe weiter oben, das ganze ja schon so weit, dass alle Wörter (auch innerhalb der < > tags) mit einem Span umschlossen werden. Die einzige Änderung besteht jetzt in dieser Zeile, die ich nicht selber geschrieben habe.

lg. Franz

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

11. Nov 2007, 20:07

Hej,

wenn man mit Regex was aufbaut dann muss man das testen können.

vg Thomas

Zurück zu „Allgemeines [R3]“