[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Rexsearch mit 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/
Eruadan
Beiträge: 55
Registriert: 17. Jun 2010, 14:05

Rexsearch mit Htmlentities

23. Jul 2013, 11:49

Hallo,
Ich habe das Problem, das rexsearch Umlaute nicht richtig ausgibt. Ich weiss, dass es am Wysiwyg liegt und das ist auch bereits geändert. Dennoch ist die Seite sehr gross und ich kan die Einträge nicht alle nochmals manuel ändern. In der Datenbank will ich auch nicht "fummeln" gehen, da es sich mit meiner Kenntniss auch genau so anfühlt und das Endergebnis auch so sein könnte und zwar "gefummelt" :oops: £

Im Wiki steht:
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.
Wo genau muss ich das einsetzen?

Code: Alles auswählen

<form id="rexsearch_form" action="<?php echo rex_geturl(); ?>" method="post">
    <fieldset>
      <input type="hidden" name="article_id" value="REX_ARTICLE_ID" />
      <input type="hidden" name="clang" value="REX_CLANG_ID" />
      <input type="text" name="rexsearch" value="<?php if(!empty($_GET['rexsearch'])) echo htmlspecialchars($_GET['rexsearch']); ?>" />
<button type="submit">+++suche+++</button>    
</fieldset>
  </form>
Vielen Dank für eure Anregungen

Eric

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

Re: Rexsearch mit Htmlentities

23. Jul 2013, 14:07

Hi!
Eruadan hat geschrieben:Wo genau muss ich das einsetzen?
Im Suchmodul, wo die Sucheingabe an RexSearch übergeben wird, nicht im Suchformular. ;)
LG,
Xong

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

Eruadan
Beiträge: 55
Registriert: 17. Jun 2010, 14:05

Re: Rexsearch mit Htmlentities

23. Jul 2013, 14:24

Mein Modul ist ein bisschen spezieller. Habe mir das aus dem Forum zusammengeklaubt...
(Im Endeffekt wollte ich auch damit erreichen das der nur eine bestimmte Kategorie inkl. Unterkategorien durchsucht...)

Ich habe echt keine Idee wohin...

Code: Alles auswählen

    <?php
    define('SHOWMAX',10);

      if(!empty($_REQUEST['rexsearch']))
      {
        $rexsearch = new RexSearch(REX_CLANG_ID);
$cats = a587_getCategories(false, true, array(2));
$rexsearch->setWhere("
  (texttype = 'article' AND catid IN (".implode(',', $cats).")) OR
  (texttype = 'db_column' AND ftable = 'rex_article' AND catid IN (".implode(',', $cats).")) OR
  (texttype = 'file')
");
$rexsearch->setLimit(array($start = isset($_GET['start'])?intval($_GET['start']):0, SHOWMAX));

        $result = $rexsearch->search($_REQUEST['rexsearch']);

        if(count($result['simwords']) > 0)
        {
          $newsearchString = $result['simwordsnewsearch'];
          $result = $rexsearch->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'];
              if($hit['table'] == $REX['TABLE_PREFIX'].'article')
                $hit['fid'] = $hit['values']['id'];
            }
            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">
          <h4><a href="'.htmlspecialchars($pdf->getFullPath()).'">'.$pdf->getOrgFileName().'</a></h4>
          <p class="highlightedtext">'.$text.'</p>
          <p class="url">'.$REX['SERVER'].'files/'.$pdf->getOrgFileName().'</p>
        </li>';
            }
            else
            {
              // Artikel oder DB-Spalte aus der Artikel-Tabelle
              $article = OOArticle::getArticleById($hit['fid']);

              echo '    <li>
          <h4><a href="'.htmlspecialchars($article->getUrl()).'">'.$article->getName().'</a></h4>
          <p class="highlightedtext">'.$text.'</p>
          <p class="url">'.$REX['SERVER'].rex_getUrl($hit['fid'], $hit['clang']).'</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 '<li>'.($i+1).'</li>';
              else
                echo '<li><a href="'.$self->getUrl(array('rexsearch' => $_REQUEST['rexsearch'], 'start' => $i*SHOWMAX)).'">'.($i+1).'</a></li>';
            }
            echo '</ul>';
          }
        }
        else
        {
          echo '<em>Leider nichts gefunden.</em>';
        }
      }
    ?>     

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

Re: Rexsearch mit Htmlentities

23. Jul 2013, 15:35

Hi Eruadan,

der Suchbegriff wird über die Methode search an RexSearch übergeben:

Code: Alles auswählen

$result = $rexsearch->search($_REQUEST['rexsearch']); 
LG,
Xong

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

Eruadan
Beiträge: 55
Registriert: 17. Jun 2010, 14:05

Re: Rexsearch mit Htmlentities

23. Jul 2013, 16:31

Hi,

Danke für den Tipp.

Funktioniert auch soweit, aber jetzt gibt er mir nur die mit den entities aus :D

Code: Alles auswählen

    <?php
    define('SHOWMAX',10);

      if(!empty($_REQUEST['rexsearch']))
      {
        $rexsearch = new RexSearch(REX_CLANG_ID);
$cats = a587_getCategories(false, true, array(2));
$rexsearch->setWhere("
  (texttype = 'article' AND catid IN (".implode(',', $cats).")) OR
  (texttype = 'db_column' AND ftable = 'rex_article' AND catid IN (".implode(',', $cats).")) OR
  (texttype = 'file')
");
$rexsearch->setLimit(array($start = isset($_GET['start'])?intval($_GET['start']):0, SHOWMAX));

        $result = $rexsearch->search(htmlentities($_REQUEST['rexsearch']));

        if(count($result['simwords']) > 0)
        {
          $newsearchString = $result['simwordsnewsearch'];
          $result = $rexsearch->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'];
              if($hit['table'] == $REX['TABLE_PREFIX'].'article')
                $hit['fid'] = $hit['values']['id'];
            }
            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">
          <h4><a href="'.htmlspecialchars($pdf->getFullPath()).'">'.$pdf->getOrgFileName().'</a></h4>
          <p class="highlightedtext">'.$text.'</p>
          <p class="url">'.$REX['SERVER'].'files/'.$pdf->getOrgFileName().'</p>
        </li>';
            }
            else
            {
              // Artikel oder DB-Spalte aus der Artikel-Tabelle
              $article = OOArticle::getArticleById($hit['fid']);

              echo '    <li>
          <h4><a href="'.htmlspecialchars($article->getUrl()).'">'.$article->getName().'</a></h4>
          <p class="highlightedtext">'.$text.'</p>
          <p class="url">'.$REX['SERVER'].rex_getUrl($hit['fid'], $hit['clang']).'</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 '<li>'.($i+1).'</li>';
              else
                echo '<li><a href="'.$self->getUrl(array('rexsearch' => $_REQUEST['rexsearch'], 'start' => $i*SHOWMAX)).'">'.($i+1).'</a></li>';
            }
            echo '</ul>';
          }
        }
        else
        {
          echo '<em>Leider nichts gefunden.</em>';
        }
      }
    ?>     

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

Re: Rexsearch mit Htmlentities

23. Jul 2013, 17:06

Hi Eruadan!
Eruadan hat geschrieben:Funktioniert auch soweit, aber jetzt gibt er mir nur die mit den entities aus :D
Du musst natürlich beide Begriffe mit einem Leerzeichen getrennt übergeben.
LG,
Xong

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

Zurück zu „Allgemeines [R4]“