Back to top

Autore Topic: Doppio Template (due in uno)  (Letto 3224 volte)

Offline bigham

  • Global Moderator
  • Instancabile
  • *****
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Doppio Template (due in uno)
« il: 04 Feb 2008, 10:08:16 »
Ciao a tutti.
Prendo spunto da questo post per proporre una soluzione a chi, come me, avesse l'esigenza di visualizzare due (o più) template diversi in base a dove si trova il navigatore.
Nel mio caso specifico il problema nasce dal fatto che il template da visualizzare nella home page ha una certa conformazione, mentre per tutto il resto ne deve avere un'altra. I due template hanno in comune solo la posizione blocchi modulo nella quale visualizzare il mainmenu mentre le altre posizioni sono distribuite in maniera diversa.

La soluzione che ho trovato io è questa:
creare anzitutto due file distinti (li ho chiamati index_1.php e index_2.php) ognuno dei quali contiene tutto il codice del template racchiuso tra i tag <BODY> e </BODY></HTML>.
il file index.php contiene invece il seguente codice:
Citazione
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
$iso = split( '=', _ISO );
echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>'; ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php mosShowHead(); ?>
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
<link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template;?>/css/template_css.css" rel="stylesheet" type="text/css" />


<link rel="shortcut icon" href="<?php echo $mosConfig_live_site;?>/images/favicon.ico" />
<?php if ( $my->id ) { initEditor(); } ?>
</head>

<?php
//Decido quali template caricare
$option = strval( strtolower( mosGetParam( $_REQUEST, 'option' ) ) );
$Itemid = intval( mosGetParam( $_REQUEST, 'Itemid', null ) );

if (($option == 'com_frontpage') && ($Itemid = 1)) {
   include_once('index_1.php');
}else{
   include_once('index_2.php');
}
?>


Come vedete la parte iniziale è il classico codice presente in tutti i template di joomla (ver. 1.0.x)
L'ultima parte invece è quella che stabilisce quale dei due "corpi" del template (index_1.php o index_2.php) verranno caricati:
Citazione
<?php
$option = strval( strtolower( mosGetParam( $_REQUEST, 'option' ) ) );
$Itemid = intval( mosGetParam( $_REQUEST, 'Itemid', null ) );

if (($option == 'com_frontpage') && ($Itemid = 1)) {
   include_once('index_1.php');
}else{
   include_once('index_2.php');
}

la decisione si basa sui valori contenuti nelle variabili $option e $Itemid. Queste due variabili vengono riempite con ciò che viene passato al file index.php al momento del suo caricamento.
Se guardate l'indirizzo che compare nella barra degli indirizzi del browser vedrete una cosa simile:
Citazione
www.miosito.it/index.php?option=com_frontpage&Itemid=1
le due istruzioni php
Citazione
$option = strval( strtolower( mosGetParam( $_REQUEST, 'option' ) ) );
$Itemid = intval( mosGetParam( $_REQUEST, 'Itemid', null ) );
Non fanno altro che prelevare i valori contenuti nei parametri option e itemid passati al file index.php.
Solo quanto si clicca sulla voce di menu Home del menù principale option conterrà il valore "com_frontpage" e itemid il valore 1.

Adesso, se qualcuno avesse delle alternative a questa soluzione (ammetto la mia fallibilità ;)) è vivamente pregato di postarla. Alla fine faremo una bella miniguida per fare felice surfbit ;D ;D

Ciao
« Ultima modifica: 04 Feb 2008, 10:11:49 da bigham »
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline graduus

  • Esploratore
  • **
  • Post: 187
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #1 il: 04 Feb 2008, 16:36:53 »
ma per quanto riguarda la visualizzazione in base alla posizione del navigatore non basta la scelta da administrator in gestione sito, assegnando il template?

Offline bigham

  • Global Moderator
  • Instancabile
  • *****
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #2 il: 04 Feb 2008, 23:01:59 »
Ciao graduus

Hai perfettamente ragione.  ;)
Basta creare una copia del template e assegnarla alle varie voci di menù.

Ma... (c'è sempre un ma :D) Il mio punto di partenza è un altro. Il template che sto sviluppando ha come destinazione un sito per una galleria d'arte o fotografica o simile.
Il sito non avrà un'impostazione particolare. Solo la homepage sarà diversa da tutte le altre. Diversa non solo nella grafica ma nella distribuzione delle posizioni blocchi modulo ( le zone in cui pubblicare i moduli)
Quindi non mi sembrava logico creare un template unico ma un doppio template da usare in base a cià che il navigatore sta visualizzando.
Fra l'altro la home page ospita 6 zone modulo per visualizzare dei moduli particolari (quelli di Zoom media gallery) e una zona modulo per visualizzare un rotator di immagini (tipo flashrotator).

Insomma: un bagno di sangue!!!  ;D ;D

La soluzione che ho postato ha un unico difetto (e chiamalo difetto!) funziona solo se non si usa SEO  >:(

Ecco perchè cercavo un contraddittorio. Così potrebbe anche andare ma...
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline graduus

  • Esploratore
  • **
  • Post: 187
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #3 il: 04 Feb 2008, 23:08:27 »
e se tu carichi due template diversi?
uno per la prima pagina e uno per l'interno, il primo lo assegni alla home e il resto... al resto:
dopotutto non appesantisci troppo, visto che i template in genere sono leggeri...
o forse ho capito male e mi sto ripetendo

Offline bigham

  • Global Moderator
  • Instancabile
  • *****
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #4 il: 04 Feb 2008, 23:25:04 »
 ;D ;D
Si, ti stai ripetendo :D

Se io volessi distribuire il template dovrei precisare già in partenza che devono essere fatte due installazioni?
O dovrei preparare due template uguali con nomi diversi da installare in successione?

Il punto è questo: la distribuzione deve essere di un solo template. Non posso pretendere che chi lo vuole usare debba necessariamente conoscere il "trucco" della duplicazione del template dell'assegnazione a menù diversi.

A questo punto dubito io di essere stato chiaro :D
Difetto della comunicazione tramite forum.
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline graduus

  • Esploratore
  • **
  • Post: 187
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #5 il: 04 Feb 2008, 23:41:37 »
ho capito :) scusa se mi son ripetuto
cmq la mia soluzione al problema (la mia home è diversa dell'interno) è stata la seguente:

lo so è banale...

if (Itemid==1){primapagina}{etcetc}
:)
a me funzia...

ma forse non ho capito ancora e sproloquio....;D

Offline bigham

  • Global Moderator
  • Instancabile
  • *****
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #6 il: 05 Feb 2008, 00:28:45 »
Ma figurati!! di che ti scusi! ;D

In altri termini hai fatto la stessa cosa che ho fatto io, solo in modo più semplice :D
Il principio è quello.
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline giocoker

  • Esploratore
  • **
  • Post: 83
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #7 il: 02 Apr 2008, 13:39:27 »
Scusate.....
anche io dovrei utilizzare due template diversi (o meglio lo stesso ma con caratteristiche diverse - vorrei eliminare diciamo l'effetto frame con menù su alcune pagine) ma non ci riesco. potreste darmi due dritte in più.
grazie

gio

Offline = odino =

  • Instancabile
  • ******
  • Post: 5696
  • Sesso: Maschio
  • "In realtà li trasforma in menomati" Danzel
    • Mostra profilo
Re: Doppio Template (due in uno)
« Risposta #8 il: 02 Apr 2008, 13:46:13 »
prima di tutto modifica l'index.php del template che vuoi...rilsla tutto il pacchetto e caricalo via ftp moificandone il nome nell'XML...

poi tramit gestione template lo assegni ale voci menu che ti interessano

 



Web Design Bolzano Kreatif