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.
![Smiley :)](https://forum.joomla.it/Smileys/default/smiley.gif)
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, browsernav
che 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.
![Smiley :)](https://forum.joomla.it/Smileys/default/smiley.gif)