Ergebnis 1 bis 12 von 12

Thema: Such-Filter - Suchergebnis hervorheben

  1. #1
    Contao-Nutzer
    Registriert seit
    15.05.2012.
    Beiträge
    171

    Standard Such-Filter - Suchergebnis hervorheben

    Ich möchte mit einem Such-Filter einen umfangreichen Text durchsuchen. Habe ich im Prinzip schon hinbekommen, doch wäre es nun sinnvoll, wenn das Suchergebnis innerhalb der langen Textpassagen hervorgehoben werden würde. Mit einer class oder einem <strong>-Element. Ist das möglich und wenn ja, wie?

    Vielen Dank!

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Mhh... ganz spontan:
    Den aktuellen Filterwert im catalog-liste Template über die Input-Klasse auslesen und dann, weiterhin im Template, bei der Ausgabe der Catalog-Felder nach diesem Wert in einem der Felder suchen und dem gefundenen Teil-String ein <span class="highlight">MEIN SUCHTEXT</span> verpassen.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Nutzer
    Registriert seit
    15.05.2012.
    Beiträge
    171

    Standard

    Hmm ... könntest Du das für Nicht-Programmierkundige "übersetzen"? Was müsste ich in welches Template hineinschreiben?

    Danke!

  4. #4
    Contao-Fan Avatar von Zero
    Registriert seit
    25.05.2010.
    Ort
    Korntal
    Beiträge
    520
    User beschenken
    Wunschliste

    Standard

    Tim G meint, dass standardmäßig beim verwenden des Suchmoduls Contao ein Span und die gefunden Wörter macht mit der css Klasse "highlight".

    Diese einfach mit CSS -> "font-weight:bold" setzen fertig.
    Mein Blog -> brothers-project.de

  5. #5
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Zero Beitrag anzeigen
    Tim G meint, dass standardmäßig beim verwenden des Suchmoduls Contao ein Span und die gefunden Wörter macht mit der css Klasse "highlight".

    Diese einfach mit CSS -> "font-weight:bold" setzen fertig.
    Leider nicht. Die contao-suche vielleicht. Der catalog-filter macht das leider nicht. Das müsste schon händisch im Template gemacht werden. Ist nicht so aufwendig. Ich probier das am WE mal in einem catalog-template und dann poste ich den code.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  6. #6
    Contao-Nutzer
    Registriert seit
    15.05.2012.
    Beiträge
    171

    Standard

    Ja, wenn die Suchergebnisse im Catalog mit einer class oder mit einem HTML-tag versehen wären (so wie in der Contao-Suchmaschine), dann wüsste ich schon, was zu tun wäre :-).

    @Tim G: Vielen Dank!

  7. #7
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Das sollte es tun.

    PHP-Code:
    <div class="field <?php echo $field?>">
        <div class="label"><?php echo $data['label']; ?></div>
        <div class="value"><?php echo $data['value']; ?></div>
    </div>
    ersetzen mit:

    PHP-Code:
    <div class="field <?php echo $field?>">
        <div class="label"><?php echo $data['label']; ?></div>
        <?php // wrap search text in span 
        
    if(strlen($this->Input->get('search')) > 0)
        {
            
    $data['value'] = str_replace($this->Input->get('search'), '<span class="highlight">'.$this->Input->get('search').'</span>'$data['value']);
        }
        
    ?>
        <div class="value"><?php echo $data['value']; ?></div>
    </div>
    Einfach in Dein catalog-liste Template einsetzen.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  8. #8
    Contao-Nutzer
    Registriert seit
    15.05.2012.
    Beiträge
    171

    Standard

    Sorry, dass ich mich erst jetzt zurückmelde.

    Ja, vielen, vielen Dank!! funktioniert, ist aber noch case-sensitive. Der Catalog-Filter findet die Begriffe richtig, unabhängig von Groß-/Kleinschreibung. Die class wird aber nur genau dem Wert im input-Feld vergeben, berücksichtigt also die Groß-/Kleinschreibung. Lässt sich das noch ergänzen/beheben?

  9. #9
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Mary Beitrag anzeigen
    Sorry, dass ich mich erst jetzt zurückmelde.

    Ja, vielen, vielen Dank!! funktioniert, ist aber noch case-sensitive. Der Catalog-Filter findet die Begriffe richtig, unabhängig von Groß-/Kleinschreibung. Die class wird aber nur genau dem Wert im input-Feld vergeben, berücksichtigt also die Groß-/Kleinschreibung. Lässt sich das noch ergänzen/beheben?
    Probiers mal damit.
    http://www.php.net/manual/de/function.str-ireplace.php
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  10. #10
    Contao-Nutzer
    Registriert seit
    15.05.2012.
    Beiträge
    171

    Standard

    Vielen Dank für Deine Hilfe!

    Ich hab' nun einfach

    PHP-Code:
    ... $data['value'] = str_replace($this->Input->get('search'), ... 
    durch

    PHP-Code:
    ... $data['value'] = str_ireplace($this->Input->get('search'),... 
    ersetzt, was zur Folge hat, dass die Suchergebnisse entsprechend dem eingegebenen Wert im input-Feld konvertiert werden. Wenn ich "apfel" ins Suchfeld eingebe, konvertiert er im Suchergebnis "Apfel" zu "apfel".
    Also noch nicht ganz das gewünschte Ergebnis ...

  11. #11
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Dann probier mal den:

    PHP-Code:
    <?php // wrap search text in span 
        
    if(strlen($this->Input->get('search')) > 0)
        {
            
    $preg preg_match('/'.$this->Input->get('search').'/i'$data['value'],$match);
            if(
    $preg)
            {
                
    $data['value'] = str_ireplace($this->Input->get('search'), '<span class="highlight">'.$match[0].'</span>'$data['value']);
            }
        }
        
    ?>
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  12. #12
    Contao-Nutzer
    Registriert seit
    15.05.2012.
    Beiträge
    171

    Standard

    Ja, juhuu, das klappt, großartig!
    Vielen, vielen Dank!!!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •