Joomla.it Forum
Non solo Joomla... => Sviluppo => : giancarlo75 03 Mar 2012, 10:21:03
-
Recentemente in un'altra sezione del forum ho cercato un modulo che permettesse di cambiare template da frontend senza modificare il database: mi è stato indicato template selector che funziona anche sulla 2.5.
Mi è però sorto un problema: io dovrei fare una pagina vetrina con esposte le thumbnail linkate dei template disponibili; mettiamo di avere a disposizione i template beez_20 e beez5.
Le thumbnail di beez_20 e beez5 sono linkate entrambe al sito demo che mostra anche il modulo template selector per i cambio diretto del template.
Ci deve essere qualcosa che distingua il link sulla thumbnail di beez_20 rispetto a quello sulla thumbnail di beez5, in modo che quando uno vi clicca sopra si apre la demo con il template scelto già attivo; quel qualcosa potrebbe essere una variabile get del tipo ....?template=4 oppure ....?template=6 [4 per beez_20 e 6 per beez5]. Il problema è come fare a dire a template selector che se è settata la variabile $_GET['template'] deve attivare quel tema.
Questa della variabile get è solo una mia idea e la soluzione potrebbe essere un'altra, comunque la necessità di avere un link diretto su ogni template credo sia chiara, non mi è chiaro invece come posso ottenere un simile risultato evitando di installare tanti siti demo quanti sono i template disponibili.
-
Allora finalmente ho risolto, posto la soluzione.
Ho fatto questo file js che viene incluso nella pagina che contiene i link alla demo:
function scriviCookie(nomeCookie,valoreCookie,durataCookie) {
var scadenza = new Date();
var adesso = new Date();
scadenza.setTime(adesso.getTime() + (parseInt(durataCookie) * 60000));
document.cookie = nomeCookie + '=' + escape(valoreCookie) + '; expires=' + scadenza.toGMTString() + '; path=/';
}
function settemplate(numerotemplate) {
scriviCookie('jTemplateSelector',numerotemplate,60);
}
Ogni link ha l'attributo onclick che richiama la funzione settemplate, per esempio onclick="settemplate(4);" dove il numero del template è il corrispondente id nel database.
Infine ho aperto il file plugins/system/templateselector/templateselector.php ed ho aggiunto la riga:
$template_style_id = $_COOKIE['jTemplateSelector']; //RIGA AGGIUNTA!!!!!
appena al di sotto della riga:
$template_style_id = $app->getUserStateFromRequest('templateSelector', 'templatedirectory', '', 'int');
in pratica la va a sovrascrivere ma non ho rimosso la parte codice originale.
Stessa cosa sul file modules/mod_templateselector/helper.php con la riga:
$selected = $_COOKIE['jTemplateSelector']; //RIGA AGGIUNTA!!!!!
messa subito sotto alla riga:
$selected = $app->getUserStateFromRequest('templateSelector', 'templatedirectory', 0, 'int');
Così facendo la demo si apre sempre con il template impostato dalla funzione settemplate, ma è ancora possibile usare il form di template selected per cambiare template dalla stessa demo senza dover cliccare su un altro link.
-
ciao, volevo domandare come modificare la funzione che hai inserito sopra in modo che sia già impostata...
ciao