Tempo fa qualcuno accennò a questo plugin JQuery, mi ero creato un bookmark e ora ho avuto occasione di testarlo... che dire... eccezionale.
Joomla usa il grid, che per l'amordiddio ha anche il suo senso... ma non sempre.
Con qs plugin potete realizzare in 5 minuti e con poche righe di codice componenti e moduli per la visualizzazione di dati tabellari, inclusa l'impaginazione, la ricerca testuale, le righe visualizzate e molte altre opzioni che potete sperimentare leggendo il manualetto sul sito dello sviluppatore.
L'inserimento nell'mvc di joomla è banale per cui non sto quì a creare righe su righe... il controller gestisce la richiesta, il model fornisce il recupero dei dati e li unisce alla wiev, ed è di questa che ci occuperemo.
Innanzitutto il plugin si trova quì:
http://www.datatables.net/Già dall'home vi rendete conto la versatilità di qs strumento. Scaricatelo (zip vers 1.8.0) e decomprimetelo.
per semplicità rinominate la cartella "datatables" e infilatela nel vostro C/M all'interno di una cartella assets nella root del C o M.
le view stanno...nalla cartella view, per cui il nostro view.html.php della nostra view conterrà oltre all'altro codice che vi sarà necessario:
-L'inclusione degli script js (nell'esempio è su un componente di un gestionale lato pubblico)
$document->addScript(JURI::root(true).'/components/com_pippo/assets/jquery/dtables/media/js/jquery.js');
$document->addScript(JURI::root(true).'/components/com_pippo/assets/jquery/dtables/media/js/jquery.dataTables.js');
$document->addScript(JURI::root(true).'/components/com_pippo/assets/jquery/dtables/media/js/jquery.dataTables.min.js');
modificate le path col nome della vostra estensione, i files necessari sono solo quelli + i css
e l'aggiunta della dichiarazione js nella pagina (basterebbe quella che vedete a dx nell'homepage dello sviluppatore)
$document->addScriptDeclaration("$(document).ready(function() {
$('#example').dataTable( {
'aoColumnDefs': [
{
'fnRender': function ( oObj ) {
return oObj.aData[0] +' '+ oObj.aData[3];
},
'aTargets': [ 0 ]
},
]
} );
} ); ");
è solo un esempio dove ho provato un unione di 2 campi...
nel file default.php del template visualizzerete la tabella esattamente come negli esempi, magari copiate l'html di uno di quelli e poi dinamicizzatelo così:
esempio di intestazione della tabella (fissa)
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
<thead>
<tr class="gradeX">
<th>Cod Cliente</th>
<th>Denominazione</th>
<th>Indirizzo</th>
</tr>
</thead>
<tbody>
// a questo punto scorrete i risultati e create le righe della tabella
<?php
foreach($this->rowsdata as $row){
$link = JRoute::_( 'index.php?option=com_pippo&task=show&cid='.$row->id );
?>
...................html................
.......
<?php } ?>
etc etc....
i css? ...fatelo voi

ciao M.