• Super User

    [Virtuemart 1.1.9] Modulo Search: modificare query di ricerca

    Salve a tutti,
    ho la necessità di modificare la query di ricerca del modulo Search di Virtuemart.

    Vi spiego la mia esigenza: ho caricato dei prodotti come Prodotto 1, Prodotto 2, Prodotto 3, ecc...

    Nello stato attuale se faccio la ricerca di "Prodotto 1" lui mi trova si "Prodotto 1" che gli altri elementi che contengono il termini "Prodotto", invece io vorrei fare una ricerca mirata solo su quello che l'utente cerca.

    Sicuramente viene effettuato uno split del termine inserite, invece io dovrei effettuare un LIKE "%Prodotto 1%", ma come posso effettuare questa modifica?

    Grazie.


  • Super User

    Ho trovato il codice che mi interessa in
    \web\administrator\components\com_virtuemart\html\shop_browse_queries.php linea 85
    tramite il suggerimento di un utente di un altro forum.

    
    $keywordArr = vmGetCleanArrayFromKeyword( $keyword );
    
    

    la funzione vmGetCleanArrayFromKeyword serve proprio ad effettuare l'explode, così l'ho omessa e scritto

    
    $keywordArr = trim($keyword);
    $keywordArr = array($keyword);
    
    

    Sembra che funzioni!


  • Moderatore

    Ciao felino e grazie per la condivisione.

    Maurizio ZioPal


  • Super User

    Un piccolo contributo per i numerosi supporti ricevuti dal vostro Forum.


  • Super User

    Chiedo ancora un piccolo aiutino, pensavo di aver risolto ma non è stato così!

    Riepilogando ho modificato la funzione di ricerca così:

    $keywordArr = trim($keyword);
    $keywordArr = array($keyword);
    
    
    

    Il tutto riguarda http://www.centrosingercatania.it: se nel modulo di ricerca scrivo 'Singer 760' ho visto che lui restituisce il risultato solo se tale campo è presente nella colonna product_name di vm_product, a me interessa soprattutto il campo product_desc e nella query di default è presente:

    
            $sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
            $sq .= "\n `#__{vm}_product`.`product_sku` LIKE '%$searchstring%' OR ";
            $sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
            $sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%') ";
    
    
    

    Ad esempio questo prodotto, il quale ha nella descrizione il campo 'Singer 760' non appare, come mai?

    E' vero che è circondato da tag html cioè:
    <p style="line-height: normal;"><b><span style="font-size: 10pt; font-family: ">SINGER 760</span></b><span style="font-size: 12pt; font-family: " New="New"></span></p>

    Come mai non lo trova?
    Come dovrei cambiare la condizione di ricerca?

    Grazie.