[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Rexsearch: Treffer mit Slice-ID für Accordion - 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/
Christoph Damm
Beiträge: 5
Registriert: 25. Jun 2012, 18:24
Kontaktdaten: Website

Rexsearch: Treffer mit Slice-ID für Accordion

27. Mai 2016, 15:55

Ich habe eine Seite angelegt, bei der die Slices eines Artikels ein Accordion ergeben:
http://mubikin.nuernberg.de/presse/meldungen.html

Wenn ein Treffer der Rexsearch-Suche auf diese Seite führt, würde ich das Accordion gerne an der Trefferstelle öffnen. Dazu benötige ich jedoch die Slice-ID des Treffers.

Beispiel:
Die Suche nach "Einweihung" liefert den Treffer-Link:
http://mubikin.nuernberg.de/presse/meldungen.html

Wenn ich an den Link die Slice-ID anhängen könnte, würde das Accordion an der Trefferstelle aufspringen:
http://mubikin.nuernberg.de/presse/meldungen.html#s486

FRAGE:
Wie ließe sich die Slice-ID eines Treffers ermitteln, um diese dann für den Treffer-Link zu "verwerten"?

Christoph Damm
Beiträge: 5
Registriert: 25. Jun 2012, 18:24
Kontaktdaten: Website

Re: Rexsearch: Treffer mit Slice-ID für Accordion

1. Jun 2016, 12:38

Hier meine „Ersatzlösung“, die eine Modifikation des RexSearch-AddOns umgeht:

1. Slice-ID unsichtbar in ALLE Accordion-Textelemente schreiben, damit später die Slice-ID im $hit['highlightedtext'] "mit gefunden" wird:
<span class="inv">REX_SLICE_ID## </span>
- im CSS: .inv {display:none}
- die Doppelraute dient als Trennzeichen für das Auslesen der ID im Suchmodul

Zusätzlich für den Header des Accordions die Slice-ID als Name-Attribut verwenden, damit später das Accordion an der „trefferstellt“ per Trefferlink geöffnet werden kann:
<a href="#sREX_SLICE_ID" name="sREX_SLICE_ID">Tabtext</a>

2. Im Suchmodul kann die ID nun wie folgt extrahiert und verwertet werden:
$teile = explode("##", $hit['highlightedtext']);
$slice = substr($teile[0], 0, 5);
$slice = str_replace("#", "", $slice);
$slice = str_replace(" ", "", $slice);
$slicelink = '#s'.$slice;
Da die „unsichtbare Slice-ID“ im $hit['highlightedtext'] (zum Glück!) sichtbar ist, muss diese per str_replace entfernt werden:
$text = str_replace($slice."##", "", $hit['highlightedtext']);

An die Links der Treffer wird nun der Verweis auf den Anker angehängt:
<h4><a href="'.($url = htmlspecialchars($article->getUrl())).$slicelink.'">'.$article->getName().'</a></h4>
<p><a href="'.($url = htmlspecialchars($article->getUrl())).$slicelink.'">'.$text.'</a></p>

Hinweis: Für "normale" Treffer, die außerhalb des Accordions liegen, wird das Suchmodul ohne Anker-Verweise verwendet. Dazu eine if-Abfrage machen: if($hit['fid']!==XX) wobei XX die Artikel-ID des Accordions ist.

3. In den Einstellungen für das RexSearch-AddOn ist bei Highlighttyp „Ab Anfang des Absatzes …“ einzustellen, damit <span class="inv">REX_SLICE_ID## </span> auf alle Fälle im $hit['highlightedtext'] erscheint.

Ist zwar umständlich, funktioniert aber prima! Anwendung: http://www.mubikin.de

Zurück zu „Allgemeines [R4]“