Joomla.it Forum
Non solo Joomla... => Sviluppo => : Val40 13 Apr 2011, 14:26:27
-
Ciao a tutti.. mi chiedevo come si può fare per rilevare la sezione visualizzata da joomla per effettuare delle modifiche in index.php al fine di selezionare le immagini da passare ad un jscript che le visualizza in sequenza..
L'idea sarebbe di personalizzare l'image rotator in uso in funzione delle sezioni...
Ho provato a vedere un po'se l'argomento è già stato trattato ma non ho trovato post che mi aiutano..
Qualche suggerimento ?
Grazie
-
Non so se ho fatto una domanda troppo semplice o troppo difficile.. comunque ho risolto con
questa funzione:
function MysectionID()
{
if (JRequest::getVar('view') == 'frontpage')
return 'home';
if (JRequest::getVar('view') == 'section')
return 'section';
if (JRequest::getVar('view') == 'category')
return 'category';
if (JRequest::getVar('view') == 'article')
return (JRequest::getVar('Itemid'));
}
Se sono in frontpage, in una sezione o una categoria restituisco delle stringhe standard, se sono
in un'articolo restituisco l'ID dell'articolo in formato stringa..
In index.php poi invoco la funzione e attuo la modifica delle immagini come segue:
<? if ($view->MysectionID()== 'home') { ?>
<img src="templates/<?php echo $this->template ?>/images/slidea.jpg" alt="image1" />
<img src="templates/<?php echo $this->template ?>/images/slideb.jpg" alt="image2" />
<img src="templates/<?php echo $this->template ?>/images/slidec.jpg" alt="image3" />
<?php } ?>
<? if ($view->MysectionID() == '30' ){ ?>
<img src="templates/<?php echo $this->template ?>/images/slideaa.jpg" alt="image1" />
<img src="templates/<?php echo $this->template ?>/images/slidebb.jpg" alt="image2" />
<img src="templates/<?php echo $this->template ?>/images/slidecc.jpg" alt="image3" />
<?php } ?>
Ovviamente basta inserire qualunque altra azione per utilizzare la funzione per altri scopi..
Ciao di nuovo a tutti
-
Non sai che problemone hai risolto anche a me con il tuo post. Qui (http://forum.joomla.it/index.php/topic,132608.0.html) e qui (http://forum.joomla.it/index.php/topic,132156.0.html) ma ancora non ne ero venuto a capo.
GRASSSSSSSSSSIIIEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEE
P.S.
Prima che te lo dica qualcuno "più in alto"... metti risolto al post. Grazie ancora
-
Bhe visto che qualcuno apprezza (poi gli invio un bonifico ;) ) pubblico la funzione definitiva che ho
adottato...
Questa funzione l'ho elaborata da un'altra pubblicata sul web che lavorava con le sezioni, questa invece
funziona con le categorie..
/*******************************************************************
* Funzione per rilevare ID della categoria visualizzata
* Se visualizzo una sezione ritorno null
* Se visualizzo una categoria ritorno ID categoria
* Se visualizzo un articolo ritorno ID categoria
* Se visualizzo altro ritorno null
******************************************************************/
function mycategory()
{
$db = &JFactory::getDBO();
$id = JRequest::getVar('id');
if ( $id ) {
if ( JRequest::getVar('view') == 'section' ) {
$sectionid = '';
} elseif ( JRequest::getVar('view') == 'category' ) {
$sectionid = $id;
} elseif ( JRequest::getVar('view') == 'article' ) {
$query = 'SELECT catid FROM #__content WHERE id = ' . (int) $id;
$db->setQuery($query, 0, 1);
$sectionid = $db->loadResult();
}
} else {
$sectionid = '';
}
return $sectionid;
}
In index PHP ho invece inserito la funzione di selezione delle immagini utilizzando un select case
di modo da avere sempre una selezione attiva per le categorie non definite..
<?php switch($view->mycategory()) {
case 5:
echo '<img src="templates/miotemplate/images/SlideG1.jpg" alt="image1" />
<img src="templates/miotemplate/images/SlideG2.jpg" alt="image2" />
<img src="templates/miotemplate/images/SlideG3.jpg" alt="image3" />' ;
break;
case 13:
echo '<img src="templates/miotemplate/images/SlideL1.jpg" alt="image1" />
<img src="templates/miotemplate/images/SlideL2.jpg" alt="image2" />
<img src="templates/miotemplate/images/SlideL3.jpg" alt="image3" />' ;
break;
case 8:
echo '<img src="templates/miotemplate/images/SlideP1.jpg" alt="image1" />
<img src="templates/miotemplate/images/SlideP2.jpg" alt="image2" />
<img src="templates/miotemplate/images/SlideP3.jpg" alt="image3" />' ;
break;
case 2:
echo '<img src="templates/miotemplate/images/SlideR1.jpg" alt="image1" />
<img src="templates/miotemplate/images/SlideR2.jpg" alt="image2" />
<img src="templates/miotemplate/images/SlideR3.jpg" alt="image3" />' ;
break;
default:
echo '<img src="templates/miotemplate/images/Slide1.jpg" alt="image1" />
<img src="templates/miotemplate/images/Slide2.jpg" alt="image2" />
<img src="templates/miotemplate/images/Slide3.jpg" alt="image3" />' ;
} ?>
I numeri 5,8,2 etc sono gli ID delle categorie con immagini dedicate, default sono le tre immagini
pubblicate in caso di null restituito dalla funzione precedente..
Ciao A tutti
-
VAl credo che il 90% di noialtri siamo (come me) semplici praticoni di joomla, ma se voialtri utenti avanzati voleste davvero usare questa sezione per questi ed altri dialoghi/problemi simili, almeno io sarei qui a lurkare per diverso tempo cercando di rubacchiare qualche nozione..
-
Volentieri (nessuno mi aveva mai dato dell' "avanzato"!! ;D ) ...
Comunque non ho particolari competenze in php, programmo tutt'altro e ogni tanto mi diletto con joomla
per fare qualche sito.. se c'è interesse ogni qualvolta mi imbatto in qualche problema 'posto', e se trovo
soluzioni 'posto' anche quelle..
Salutoni a tutti
-
$id = JRequest::getVar('id');
...quando fai queste cose fai sempre un casting ... arrivi a $sectionid senza un controllo...
M.
-
Bene, ti riferisci alla tipizzazione della variabile..
Perchè non posti un esempio riferito alla funzione.. così ne approfittiamo tutti della miglioria..
Ciao :)
-
già tutto fatto:
http://docs.joomla.org/Retrieving_data_from_GET_and_POST_requests
M.
-
Ok, visitato il link aggiorno la funzione come segue:
$id = JRequest::getVar('id','0','get','int');
Per evitare inconvenienti aggiungo alla richiesta il valore di default, il metodo e il tipo di dato da recuperare..
Dovrebbe essere tutto in ordine.. :)
Ciao
-
mooolto meglio di prima.
deve essere per forza un numero quindi escludi moltissimi tipi di iniezione
deve essere preso SOLO dalla get e ha un default che evita che se fosse null nel get io possa arbitrariamente passarlo dal post
ma più che per il caso specifico è un meccanismo da usare sempre, il 99% delle vulnerabilità sfruttate derivano da questa cosa le altre variabili sono abbastanza protette dall'incapsulazione del codice, sono quelle passate dall'esterno che fanno danni.
M.