Joomlashow arrow Articoli arrow Template Joomla con colonne collassabili

Template Joomla con colonne collassabili

28-02-2008 18:00

Scritto da Bigham

Questo articolo è la traduzione dell'articolo "Collapse modules tutorial for joomla" pubblicato su You Joomla

Come per i moduli collassabili anche in questo caso vedremo quali sono i principi con i quali possiamo
far collassare, in un template a tre colonne, una o ambedue le colonne di destra e sinistra.

Le colonne di destra e sinistra altro non sono che due zone blocchi modulo. In genere sono indicate
con i nomi left e right.

Vediamo come realizzare il codice php del template.

Il principio che il codice php che andremo a scrivere segue questa logica:

"Se il modulo destro e il modulo sinistro sono pubblicati imposta la larghezza dei container al valore X,
altrimenti se solo il modulo destro è pubblicato imposta la larghezza del contenitore al valore Y,
altrimenti se nessuno dei moduli destro e sinistro sono pubblicati allarga la dimensione del contenitore
per i contenuti alla larghezza massima."

Inseriamo nel file index.php, prima di definire la struttura della pagina, il seguente codice:

//Inizio moduli collassabili
$left = mosCountModules( 'left' );  //Modulo di sinistra
$right = mosCountModules( 'right' );// Modulo di destra
if ( $left && $right ) {    // se tutti e due i moduli sono pubblicati
$maincontent = 'main-body';         // usa il  div main-body
$content = 'content';               // e usa il div content per i contenuti
} elseif ( $left ) {                // altrimenti se solo il modulo sinistro è pubblicato
$maincontent = 'main-body-left';  // usa il  div main-body-left
$content = 'content-left';        // e usa il div content-left per i contenuti
} elseif ( $right ) {             //altrimenti se solo il modulo destro è pubblicato
$maincontent = 'main-body-right'; // usa il  div main-body-right
$content = 'content-right';       // e usa il div content-right per i contenuti
} else {                          // altrimenti (non è pubblicato nessun modulo
$maincontent = 'main-body-full';  // usa il  div main-body-full
$content = 'content-full';        // e usa il div content-full
}// Fine Moduli Collassabili

Abbiamo così creato due variabili: la variabile $maincontent che conterrà il nome della classe del foglio di stile da utilizzare per dimensionare e formattare graficamente il container div usato per il main-body e la variabile $content che conterrà il nome della classe del foglio di stile che verrà utilizzata per il container div per i contenuti.

Adesso vediamo in che modo utilizzare queste due variabili

Il codice che segue è un esempio di come definire i container div utilizzando le due variabili create dal codice precedente all'interno del template di joomla

<div id="<? echo $maincontent; ?>">
    <div id="<? echo $content; ?>">
    <?php mosMainBody(); ?>
    <?php if (mosCountModules('left')) {?>
        <div id="modleft">
            <div class="inside">
                <?php mosLoadModules('left',-2);?>
            </div>
        </div>
    <?php } ?>
    </div>
    <?php if (mosCountModules('right')) { ?>
    <div id="modright">
        <div class="inside">
            <?php mosLoadModules('right',-2);?>
        </div>
    </div>
    <?php } ?>
</div>

Come vedete al posto di scrivere:

<div id="nome_classe">
    <div id="nome_classe">
        contenuto
    </div>
</div>

Abbiamo usato la variabile $maincontent in questo modo.

<div id="<? echo $maincontent; ?>">

 

Definiamo adesso il foglio di stile del template

/*------------------------------------------------------------------------
# COLLAPSE MODULES TUTORIAL BY YOUJOOMLA.COM
 
# ------------------------------------------------------------------------
#Copyright (C) 2006-2007 Youjoomla.com, All Rights Reserved.
-------------------------------------------------------------------------*/
body {
text-align:center;
background:#999;
}
#topmenu{
margin:0 auto;
width:80%;
text-align: left;
}
#wrap{
text-align: left;
background:#CCCCCC;/*like already said,just to add some color*/
float:left;
padding: 20px 5px 20px 5px;
}
#container {
width:100%; /*center hack*//*THIS IS THE MAIN CONTAINER FOR ALL DIVS*/
margin:0 auto; /*center hack*/
text-align:left;
background: #cccccc;
}
#modright { /*THIS IS MODULE RIGHT*/
background:#800040;
color:#fff;
float:right;
width:17%;
overflow:hidden;
margin-left:-3px;
}
#modleft {  /*THIS IS MODULE LEFT*/
background:#0099FF;
color:#fff;
float:left;
width:19%;
overflow:hidden;
margin-right:-3px;
}
.inside {  /*THIS IS CLASS TO PUSH THE MODULE TABLE OF THE EDGES A BIT*/
padding:7px;
}
/*COLAPSE MODULES FUNCTIONS */
 
/*LEFT AND RIGHT MODULES VISIBLE */
#main-body { /*THIS IS MAIN DIV HOLDS THE CONTENT DIV*/
float:left;
width:83%;
}
#content { /*THIS IS CONTENT DIV AND YOUR MAINBODY IS INSIDE OF IT*/
text-align:left;
float:right;
width:80%;
}
/*COLAPSE  LEFT MODULE ONLY*/
#main-body-right {
float:left;
width:80%;
}
#content-right {
text-align:left;
float:left;
width:100%;
}
/*COLAPSE RIGHT MODULE ONLY*/
#main-body-left {
float:left;
width:100%;
padding-right:10px;
}
#content-left {
text-align:left;
float:right;
width:80%;
overflow:hidden;
}
/*COLAPSE RIGHT AND LEFT MODULE */
#main-body-full {
float:left;
width:100%;
}
#content-full {
margin:0 auto;
text-align:left;
width:90%;
}
/*END COLAPSE MODULES FUNCTIONS */

Ora non ci resta che giocare con i moduli provando a pubblicare/sospendere i moduli nelle posizioni "left" e "right" e vedendo cosa succede. Potete anche ad esempio fare in modo che i moduli di destra non vengano caricati in una certa pagina (funzionalità di assegnamento disponibili nella pagina di amministrazione dei singoli moduli sulla destra) facendo in modo che solo quella pagina abbia un'aspetto diverso dalle altre.

E questo è tutto.

Commenti utenti  

Visualizza 4 di 4 commenti

problemi con il tutorial

ciao, ho seguito alla lettera le informazioni riportate nell'articolo (tanto è vero che ho fatto copia e incolla ) ma nulla anzi poco. ese inserisco la colonna di sinistra tutto ok il corpo centrale si ridimensiona, ma andando ad inserire la colonna di destra la stessa mi si piazza sotto il mainbody conteggiano ugualmente lo spazio che in teoria dovrebbe ospitare la colonna di destra. 
grazie  
redpanda

Scritto da: redpanda (Guest) 25-04-2008 20:04

Mm..

scusa per il ritardo della risposta, potresti contattarci via mail a info [at] joomlashow [punto] it descrivendo più dettagliatamente il problema? 
Cercherò di risolverlo il prima possibile, purtroppo ci sono dei momenti in cui non riusciamo a stare dietro a tutto. 
 
Grazie

Scritto da: double_d (Membro) 12-05-2008 21:45

grazie

grazie per la diponibilità appena possibile vi contatterò 
 
ciao 
redpanda

Scritto da: redpanda (Membro) 14-05-2008 07:50

NON FUNZIONA

Ciao a tutti, 
ho provato a inserire i codici ma non mi funziona nulla!!!! 
Intanto volevo sapere il primo script dove va inserito perchè non lo so!!!! 
E poi se potete dirmi come procedere.... 
 
Grazie a tuti

Scritto da: YURI CRSTODARO (Guest) 15-11-2008 12:32

Aggiungi il tuo commento

Nome
E-mail
Titolo  
Commento
 

Caratteri rimasti: 1000

   
   
   
‹ Precedente   Successivo ›

Login

Hai dimenticato la password?

Registrati