salve a tutti, ho un problema con l'aggiornamento di un componente scritto da me, vorrei renderlo joomla 1.5 native ma ho un problema con il sistema di paginazione dei risultati di joomla 1.5. (<< Inizio < Prec. 1). Questo componente non fa altro che cercare degli articolo e stampare la lista dei risultati.
In particolare in joomla 1.0 aggiungevo le variabili extra che mi servivano tramite GET semplicemente aggiungendo il link nella funzione $pageNav->writePagesLinks( $link )
$link = "index.php?option=com_componente&Itemid=$Itemid&task=lista"&amsearchp;search=$stringa&cat=$cat"
echo $pageNav->writePagesLinks( $link );
in questo caso joomla integrava anche le variabili $cat e $stringa nei link della paginazione
mentre con joomla 1.5 queste variabili non vengono più passate e non capisco bene come si possa fare. Cercando un po di capire ho visto che si possono aggiungere delle variabili alla sessione dell'utente in joomla con le funzioni:
$mainframe->setUserState( "$option.cat", $cat );
e riaverle con :
$mainframe->getUserStateFromRequest( "$option.cat", 'cat', '0' );
con questo sistema potrei ovviare al problema anche se mi rimane il problema che se un utente sfoglia altre parti del sito e poi ritorna nel componente si ritrova l'ultima ricerca fatta.
esiste qualche altro sistema per passare le variabili nella paginazione integrata di joomla, usando il sistema stUserState si appesantische troppo il carico sul server (non sono un gran esperto di php)?
questo è il pezzo di codice al centro del problema:
<?php
$stringa = 'ciao';//stringa di ricerca presa da form
$limitstart = intval( JRequest::getVar('limitstart', 0 ) );
$limit = 50;
$database =& JFactory::getDBO();
//conta risultati
$query = "SELECT COUNT(*) AS Numitem FROM #__componente WHERE title LIKE '%$stringa%''";
$database->setQuery($query);
$conta = $database->loadObjectList();
$total = $conta[0]->Numitem;
jimport('joomla.html.pagination');
$pageNav = new JPagination( $total, $limitstart, $limit);
//lista risultati
$database->setQuery($query, $limitstart, $limit);
$rows = $database->loadObjectList();
if ($total > $limit){ //se non necessaria non mettere la barra navigazione
echo $pageNav->getPagesLinks( JURI::base() . "index.php?option=com_componente&Itemid=$Itemid&key=$stringa" );
//$key=$stringa non viene aggiunto
echo '<br />';
}
echo $pageNav->getPagesCounter();
?>
Con joomla 1.0 funzionava bene solamente aggiungendo &key=$stringa al link, ora questo viene troncato.
Guardando un po il nuovo joomla (sto passando ora a 1.5) ho notato che la paginazione della lista di articoli nelle categorie non memorizza l'ordine che si da alla lista, quindi quando si cambia pagine l'ordine ritorna quello di default (ordina per nome, articolo ecc), sembra un po strana la cosa.
grazie del vostro aiuto