Back to top

Autore Topic: Modulo Search  (Letto 3727 volte)

Offline cicciolove

  • Nuovo arrivato
  • *
  • Post: 19
    • Mostra profilo
Modulo Search
« il: 14 Gen 2009, 19:39:08 »
Salve,
vorrei personalizzare il modulo Search....come posso fare?
Grazie
Davide

Offline McPuppa

  • Nuovo arrivato
  • *
  • Post: 25
  • Sesso: Maschio
    • Mostra profilo
Re: Modulo Search
« Risposta #1 il: 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
Codice: [Seleziona]
switch ($phrase)) ho modificato le righe

Codice: [Seleziona]
$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
Codice: [Seleziona]
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:
Codice: [Seleziona]
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 (
Codice: [Seleziona]
$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. :)

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: Modulo Search
« Risposta #2 il: 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/
Extensioni e Template per Joomla

Offline McPuppa

  • Nuovo arrivato
  • *
  • Post: 25
  • Sesso: Maschio
    • Mostra profilo
Re: Modulo Search
« Risposta #3 il: 17 Feb 2009, 11:08:29 »
Citazione da: copesc
Bella guida McPuppa  :)

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

Citazione da: 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.

Citazione da: 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.... :)

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: Modulo Search
« Risposta #4 il: 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/
Extensioni e Template per Joomla

Offline McPuppa

  • Nuovo arrivato
  • *
  • Post: 25
  • Sesso: Maschio
    • Mostra profilo
Re: Modulo Search
« Risposta #5 il: 17 Feb 2009, 17:02:47 »
Citazione da: 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

Offline AsConteR

  • Nuovo arrivato
  • *
  • Post: 6
  • Sesso: Maschio
  • Un vischio maschio senza fischio..
    • Mostra profilo
Re: Modulo Search
« Risposta #6 il: 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....


Offline McPuppa

  • Nuovo arrivato
  • *
  • Post: 25
  • Sesso: Maschio
    • Mostra profilo
Re: Modulo Search
« Risposta #7 il: 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.

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: Modulo Search
« Risposta #8 il: 27 Mar 2009, 11:49:01 »
Esatto, è per questo che si chiamano "Template override" :)
Extensioni e Template per Joomla

Offline AsConteR

  • Nuovo arrivato
  • *
  • Post: 6
  • Sesso: Maschio
  • Un vischio maschio senza fischio..
    • Mostra profilo
Re: Modulo Search
« Risposta #9 il: 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......
« Ultima modifica: 27 Mar 2009, 19:22:36 da AsConteR »

Offline McPuppa

  • Nuovo arrivato
  • *
  • Post: 25
  • Sesso: Maschio
    • Mostra profilo
Re: Modulo Search
« Risposta #10 il: 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

Offline Giaxx

  • Appassionato
  • ***
  • Post: 205
    • Mostra profilo
Re: Modulo Search
« Risposta #11 il: 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

Offline AsConteR

  • Nuovo arrivato
  • *
  • Post: 6
  • Sesso: Maschio
  • Un vischio maschio senza fischio..
    • Mostra profilo
Re: Modulo Search
« Risposta #12 il: 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....

 



Web Design Bolzano Kreatif