[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
XSearch und die htmlentities - 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/
teletubbie
Beiträge: 86
Registriert: 5. Aug 2008, 18:08

XSearch und die htmlentities

15. Jun 2010, 17:04

Hallo,

erst einmal Danke für das super AddOn "XSearch" und die geniale Installationsanleitung.

In der Hilfe zu XSearch wird beim Umlautproblem beschrieben, man könne die Sucheingabe per php verändern.

Nur wenn die erste Lösungsmethode absolut nicht eingesetzt werden kann, kann man die Sucheingabe im Suchmodul mit der PHP-Funktion htmlentities vorbehandeln, bevor sie an die search-Methode weitergereicht wird.

Da ich froh bin, dass die Seite läuft möchte ich im Moment keine Experimente mit den Daten machen. Das umcodieren der gespeicherten Daten ist zwar möglich, auch das anpassen von TinyMCE, aber das möchte ich dann in die 4.3 in Ruhe einbauen und nicht im laufenden Betrieb.

Hat irgendjemand einem Codeschnippsel wie in der Sucheingabe die htmlentities übergeben werden können. Meine Fähigkeiten diesbezüglich sind mager :oops: und die Zeit läuft mir etwas davon.

Ich sag schon mal Danke im voraus.

Daniel

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

15. Jun 2010, 17:26

Hi teletubbie!

Irgendwo übergibst du ja an XSearch den Suchbegriff.

Dieser muss dann einfach in die Funktion htmlentities() gekapselt werden:

Code: Alles auswählen

$xsearch->search(htmlentities($searchterm));
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

teletubbie
Beiträge: 86
Registriert: 5. Aug 2008, 18:08

15. Jun 2010, 21:08

Hallo,

ich verwende derzeit das Beispielmodul "Suche mit PDF-Dateien, Pagination und Ähnlichkeitssuche".
Egal ob ich den Code an zwei oder einer Stelle eingebe, es passiert nix. Die Suche hängt sich nicht auf, findet aber garnichts mehr . Ohne den Zusatzcode findet er wenigstens über die Ähnlichkeitssuche etwas.

$result = $xsearch->search(htmlentities($_REQUEST['xsearch']));
if(count($result['simwords']) > 0)
{
$newsearchString = $result['simwordsnewsearch'];
$result = $xsearch->search(htmlentities($newsearchString));
if($result['count'] > 0)
echo '<p>Meinten Sie <strong>'.$newsearchString.'</strong>?</p><br>';
}

Ich vermute, dass ich wieder an der falschen Stelle unterwegs bin.

Daniel

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

16. Jun 2010, 10:04

Hallo Daniel!

Es ist gut möglich, dass da noch ein Bug in XSearch vorhanden ist.

Kannst du mir folgende Daten posten:
  • Suchbegriff
  • Plaintext des zu findenden Ergebnisses
  • den kompletten Ausgabe-Code der Suche
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

teletubbie
Beiträge: 86
Registriert: 5. Aug 2008, 18:08

28. Jun 2010, 10:15

Mit Hilfe von Xong hat die Anpassung geklappt.

Es gab einige Kuriositäten die ich/wir nicht nachvollziehen konnten. So kam es Anfangs zu einen TimeOut-Fehler (500) und einige wenige male auch zu einem Problem mit dem Speicher. Beides ist inzwischen nicht mehr aufgetaucht.

Ich gebe hier einfach mal die Lösung wieder welche ins Rennen geschickt wurde:

XSearch 0.52 vorsorglich deinstalliert und erneut installiert.

Modulcode von Xong eingefügt:

Code: Alles auswählen

<?php

define('SHOWMAX',10);

if(!empty($_REQUEST['xsearch']))
{
$xsearch = new XSearch();
$xsearch->setLimit(array($start = isset($_GET['start'])?intval($_GET['start']):0, SHOWMAX));
$xsearch->searchEntities = true;

$result = $xsearch->search($_REQUEST['xsearch']);
if(count($result['simwords']) > 0)
{
$newsearchString = $result['simwordsnewsearch'];
$result = $xsearch->search($newsearchString);
if($result['count'] > 0)
echo '<p>Meinten Sie <strong>'.$newsearchString.'</strong>?</p>';
}

if($result['count'] > 0)
{
echo '<ul class="searchresults">';
foreach($result['hits'] as $hit)
{
if($hit['type'] == 'db_column')
$text = $hit['article_teaser'];
else
$text = $hit['highlightedtext'];

if($hit['type'] == 'file' AND $hit['fileext'] == 'pdf')
{
// PDF-Datei
$filename = explode('/', $hit['filename']);
$pdf = OOMedia::getMediaByFileName($filename[count($filename)-1]);

echo ' <li class="pdf">
<h7><a href="'.htmlspecialchars($pdf->getFullPath()).'">'.$pdf->getOrgFileName().'</a></h7>
<p class="highlightedtext">'.$text.'</p>

</li>';
}
else
{
// Artikel oder DB-Spalte aus der Artikel-Tabelle
$article = OOArticle::getArticleById($hit['fid']);

echo ' <li>
<a class="suchergebnis" href="'.htmlspecialchars($article->getUrl()).'">'.$article->getName().'</a>
<p class="highlightedtext">'.$text.'</p>

</li>';
}
}
echo '</ul>';

// Pagination
if($result['count'] > SHOWMAX)
{
$self = OOArticle::getArticleById(REX_ARTICLE_ID);
echo '<ul class="pagination">';
for($i = 0; ($i*SHOWMAX) < $result['count']; $i++)
{
if(($i*SHOWMAX) == $start)
echo '<a class="pagination">'.($i+1).'</a>';
else
echo '<a class="pagination_link" href="'.$self->getUrl(array('xsearch' => $_REQUEST['xsearch'], 'start' => $i*SHOWMAX)).'">'.($i+1).'</a>';
}
echo '</ul>';
}
}
else
{
echo '<em>Leider nichts gefunden.</em>';
}
}

?> 
Maximale Trefferzahl: 1
Max. Zeichenzahl für Teaser: 200
Max. Zeichenzahl um Suchbegriffe: 20
Darstellungsmodus "Als Teaser, in dem eventuell..."

erhöhe ich die "Max. Zeichenzahl um den Suchbegriff" über 20 so kommt es gelegentlich zu einem Timeout oder Scriptfehler (500).

Jetzt läuft es.
Vielen Dank an Xong der viel daran gearbeitet hat!

Zu sehen gibt es die Sache hier: http://www.bffk.de
Daniel

Zurück zu „Allgemeines [R4]“