Joomla.it Forum

Non solo Joomla... => Sviluppo => : cicciolove 14 Jan 2009, 19:39:08

: Modulo Search
: cicciolove 14 Jan 2009, 19:39:08
Salve,
vorrei personalizzare il modulo Search....come posso fare?
Grazie
Davide
: Re: Modulo Search
: McPuppa 16 Feb 2009, 15:08:17
Ciao a tutti

io ne sto sviluppando uno per un componente (che e` anche questo in costruzione), ma non so se e` la procedura canonica oppure uno sgamuffo, devo ancora completare la costruzione del modulo con il suo xml di installazione ecc, pero` intanto ho composto la parte di ricerca; intanto te la spiego. :)

Il mio componente riguarda le schede degli organismi per il sito di una associazione acquariofila, quindi ci sono 2 tabelle una delle quali contiene tutte le informazioni sull'organismo.
La ricerca quindi doveva essere eseguita sulla tabella specifica del componente.

Ho preso i due file php e xml di una delle ricerche (mi pare fossero newsfeed) sotto plugins\search e li ho copiati con il nome che mi interessava (nel mio caso schede.xxx).

Poi ho fatto uno script sql (che sara` lo script di installazione) che inserisce una riga uguale a quella della search newsfeed (mi pare che a differenza dell'originale ho messo ad 1 il flag "core") nella tabella jos_plugin.

Se aggiungi la riga nella tabella jos_plugin e clicchi sul menu` cerca ti appare nella riga "Cerca solo in:" il check box per limitare la tua ricerca solo con il tuo plugin.
Se non ti da errori almeno inizialmente direi che ci siamo.

A questo punto devi modificare il php della ricerca.
Io in maniera molto grossolana andando piu` ad intuito che seguendo un protocollo, ho cominciato a sostituire "newsfeed" con "schede".
Dopodiche` nel blocco di tipo di ricerca (quello che inizia con
:
switch ($phrase)) ho modificato le righe

:
$wheres2[] = 'a.name LIKE '.$text;
$wheres2[] = 'a.link LIKE '.$text;

mettendo al posto di "name" e "link" i campi che mi interessavano. Nel mio caso i campi li ho inseriti in un array ed ho usato una foreach, ma in linea di massima queste righe compongono la where condition della query, quindi sono queste che ti selezionano i record giusti.

Analogamente anche il blocco
:
switch ($ordering) va modificato per ordinare le righe risultanti dalla select usando i campi opportuni.

Poi si modifica la query per selezionare i campi.
Come da intestazione della funzione dalla query devi tirarti fuori i campi che ti servono per ritornare almeno i seguenti dati:
:
href, title, section, created, text, browsernavche sono:
href: il link alla pagina quando ci clicchi sopra (vedi in seguito),
title: il titolo che appare nel risultato della ricerca,
section: corrisponde alla sezione se fosse un articolo come gli altri, nel mio caso l'ho customizzato con genere+specie;
created: data di creazione o modifica:
text: e` un testo introduttivo;
browsernav: indica se aprire una nuova pagina (1) o usare la stessa pagina (0) per visualizzare il link.

Questa query devi costruirtela un po' tu, devi tirarti fuori i campi per comporre la lista dei risultati. E` difficile dare una spiegazione generale piu` precisa.

Infine devi modificare il foreach finale (
:
$rows[$key]->href =) che e` il link che verra` seguito quando clicchi sulla riga del risultato.

Spero di essere riuscito a darti un'idea per lo meno. :)
: Re: Modulo Search
: copesc 17 Feb 2009, 10:08:04
Bella guida McPuppa  :)

In questo modo permetti a com_search di cercare i risultati anche nel tuo componente.

Davide, se vuoi solo personalizzare ad esempio la grafica, puoi modificare i file contenuti in components/com_search/views/search/

e modules/mod_search/tmpl/
: Re: Modulo Search
: McPuppa 17 Feb 2009, 11:08:29
: copesc
Bella guida McPuppa  :)

Beh, ti ringrazio ma bisognerebbe scriverla meglio e soprattutto sapere se e` la procedura corretta o uno "sfrugno". :)

: copesc
In questo modo permetti a com_search di cercare i risultati anche nel tuo componente.

In parole povere si, perche` la ricerca viene attaccata alla lista dei ricercatori gia` presenti.

: copesc
Davide, se vuoi solo personalizzare ad esempio la grafica, puoi modificare i file contenuti in components/com_search/views/search/

e modules/mod_search/tmpl/

Si, pero` come dicevo nell'altro messaggio questa personalizzazione rischia di essere sovrascritta da un eventuale aggiornamento...
Vediamo se qualcuno ha un'idea.... :)
: Re: Modulo Search
: copesc 17 Feb 2009, 14:02:19
Si mi sono spiegato male, puoi usare la funzione di template override per modificare i file contenuti in components/com_search/views/search/ e modules/mod_search/tmpl/
: Re: Modulo Search
: McPuppa 17 Feb 2009, 17:02:47
: copesc
Si mi sono spiegato male, puoi usare la funzione di template override per modificare i file contenuti in components/com_search/views/search/ e modules/mod_search/tmpl/

Ho scoperto grazie a te il template override :) mi puo` tornare utile, sicuramente lo puo` usare Davide. :D
: Re: Modulo Search
: AsConteR 26 Mar 2009, 22:58:58
Ciao a tutti,
innanzitutto grazie in anticipo per quello che avete scritto per il com_search, mi è di grande aiuto, ma se è possibile mi servirebbero ulteriori chiarimenti, poichè ho un problema in tal senso.
Sono nuovo del forum, come lo sono per quanto riguarda Joomla.
Ho iniziato a lavorarci da qualche settimana, e al momento ho il problema di modificare l'output dei risultati di ricerca. Dico l'output poichè le query implementate di default mi sembrano più che ottime. Il punto è che dovrei visualizzare i risultati raggruppati per categorie omogenee, e quindi leggendo i messagi mi è venuto il dubbio che potrei anche intervenire sul tempale override.
Non sò se sono stato chiaro....

Grazie in anticipo....

: Re: Modulo Search
: McPuppa 27 Mar 2009, 11:17:09
Il punto è che dovrei visualizzare i risultati raggruppati per categorie omogenee, e quindi leggendo i messagi mi è venuto il dubbio che potrei anche intervenire sul tempale override.

Da quello che ho capito (perche` non l'ho studiato a fondo) il template override serve solo per cambiare l'estetica della pagina, se tu hai bisogno di raggruppare la ricerca (in sqllese :D usi "group by") allora devi agire sulla query che non e` overridabile.

Questo sempre se ho capito giusto il template override.
: Re: Modulo Search
: copesc 27 Mar 2009, 11:49:01
Esatto, è per questo che si chiamano "Template override" :)
: Re: Modulo Search
: AsConteR 27 Mar 2009, 19:20:37
Ciao McPuppa,
e grazie per l'interessamento, hai capito bene, e allo stesso tempo mi hai data la certezza di agire sulla query. A primo acchitto ho pensato che tutto fosse molto semplice per raggruppare i risulati usando la clausola "GROUP BY", ma tra tutte le query presenti nei files .php all'interno della directory plugin, non riesco a capire quale possa essere quella che può sortire questo effetto......

Grazie a tutti......
: Re: Modulo Search
: McPuppa 27 Mar 2009, 19:31:21
A primo acchitto ho pensato che tutto fosse molto semplice per raggruppare i risulati usando la clausola "GROUP BY", ma tra tutte le query presenti nei files .php all'interno della directory plugin, non riesco a capire quale possa essere quella che può sortire questo effetto......

Scusa mi sa che ho cannato, la clausola e` "ORDER BY campo1, campo2, ...", la "GROUP BY" serve per raggruppare ad esempio una "select count(*)" mi ha mandato in confusione la tua "i risultati raggruppati". :D
: Re: Modulo Search
: Giaxx 30 Mar 2009, 14:13:26
molto interessantr ma servirebbe una guida più dettagliata per chi come me non è molto pratico....io vorrei fare un modulo cerca in cui poter scegliere solo alcune sezioni in cui cercare, questa scelta dovrebbe essere fatta nel lato admin
: Re: Modulo Search
: AsConteR 31 Mar 2009, 20:34:45
Ciao McPuppa,
con raggruppati, intendevo dire che i risultati della ricerca dovevano apparire in categorie omogenee. Nel senso ke se la chiave di ricerca era "teatro", dovevo visualizzare tutti gli spettacoli teatrali di un tale posto. Non sò se sono stato più chiaro, ma tanto ha poca importanza dal momento che mi hanno cambiato nuovamente le specifiche....

Cmq grazie mille a te e tutti quanti voi....