chiedo scusa per il ridardo nella risposta.
McPuppa credo che tu sia riuscito a fare quello che volevi... potresti indicare come ci sei arrivato?
uhmm vediamo se riesco ad essere piu` dettagliato nella parte che riguarda la whole word.
Bisogna innanzitutto scriversi un plugin di ricerca personalizzato, per fare questo credo ci siano altre guide in giro per la rete; io ho copiato quello standard per le "
newsfeeds" e l'ho modificato come mi serviva aggiungendo di fatto una ricerca sulle mie tabelle sfruttando pero` il motore di joomla.
Per quanto riguarda la parte "whole word" ho aggiunto uno switch alla funzione "
plgSearchSchedelinks" che viene collegata dall'evento "
onSearch" tramite la chiamata
$mainframe->registerEvent('onSearch', 'plgSearchSchedelinks');che c'e` in testa al file.
Lo switch che ho aggiunto e` questo:
case 'whole':
$text = $db->Quote($db->getEscaped($text, true), false);
$fieldList =& $model->getSearchableFieldsList();
$where = 'MATCH('.$fieldList.') AGAINST ('.$text.' IN BOOLEAN MODE)';
break;La prima riga serve per formattare il testo da cercare con gli escape giusti e gli eventuali caratteri jolly.
La seconda riga chiama una funzione sul modello (che ho caricato prima) e che ritorna una stringa con i campi sui quali effettuare la ricerca separati da virgola.
La terza riga compone la where condition da usare per la ricerca. La sintassi l'ho scoperta spulciando i manuali di MySql o PHP non ricordo e serve esattamente per far fare al DB la ricerca per parole intere.
A questo punto il problema era (ed e` ancora perche` non ho piu` avuto tempo di cercare se c'e` una soluzione definitiva) di aggiungere l'opzione "whole world" alla pagina della ricerca di joomla senza doverla modificare fisicamente, perche` (come dicevo nel primo messaggio) un aggiornamento potrebbe sovrascrivere la pagina customizzata e farci perdere l'opzione.
Io l'ho risolto andando a modificare fisicamente il file e dicendo alla persona che segue il sito che quando fa gli aggiornamenti verifichi se la nuova opzione di ricerca esiste ancora, se non esiste si deve rimodificare il file nel modo seguente (fortunatamente e` una cosa semplice).
Il file da modificare e`
components\com_search\views\search\view.html.phpe precisamente bisogna cercare dove viene creato e riempito l'array delle opzioni
$searchphrases = array();
$searchphrases[] = JHTML::_('select.option', 'all', JText::_('All words'));
$searchphrases[] = JHTML::_('select.option', 'any', JText::_('Any words'));
$searchphrases[] = JHTML::_('select.option', 'exact', JText::_('Exact phrase'));ed aggiungere la riga
$searchphrases[] = JHTML::_('select.option', 'whole', JText::_( 'Whole word' ) );Fatto, a questo punto la nuova opzione viene aggiunta alla pagina di ricerca e viene gestita dal nostro plugin personalizzato, per gli altri plugin che non gestiscono l'opzione "whole" lo switch cade nell'opzione default che fa una ricerca normale.
Credo sia tutto se ci sono ancora dubbi fammi sapere che se posso li sbrogliamo.