Back to top

Autore Topic: Template codice php per non visualizzare colonna left o right in base a scelta  (Letto 1257 volte)

Offline daduzzo

  • Nuovo arrivato
  • *
  • Post: 30
    • Mostra profilo
Ciao,

sto cercando di implementare del codice php per visualizzare, in un mio template, le colonne left e right dei miei moduli in base alla pubblicazione dei moduli stessi.
In pratica se nella colonna di sinistra non è pubblicato nessun modulo, questa scompare e la colonna dei contenuti si allarga su tutta la pagina.

Con il codice postato qui sotto, funziona solo se imposto il template su due colonne(left+contenuti),
A me serve che funzioni con (left+contenuti+right).

Sicuramente sbaglio qualcosa sul codice php.

Il template:

// prima della chiusura </head> inserisco questo codice:

<?php
if ($this->countModules('left') == 0):?>
<?php $leftcolgrid  = "0";?>
<?php endif; ?>
<?php
if ($this->countModules('right') == 0):?>
<?php $rightcolgrid  = "0";?>
<?php endif; ?>
<?php if ($this->params->get('template-width') == 1):?>
<?php $template_width = "-fluid" ;?>
<?php else :?>
<?php $template_width = "" ;?>
<?php endif; ?>

// all'interno di body questo:

<div class="container-fluid<?php echo $template_width; ?>">
    <div class="row-fluid<?php echo $template_width; ?>">
   
    <?php if($this->countModules('left')) : ?>
            <div class="span3">
                  <div class="left">
                <jdoc:include type="modules" name="left" style="xhtml" />
                  </div><!--/.left-->
            </div><!--/span-->
    <?php endif; ?>
   
        <div class="span9<?php if ($this->countModules('right') == 0):?><?php $rightcolgrid  = "0";?><?php echo (12-$leftcolgrid-$rightcolgrid);?><?php endif; ?>">
            <jdoc:include type="component" />
        </div><!--/span9-->
       
     
       
        <?php if($this->countModules('right')) : ?>
            <div class="span3">
                  <jdoc:include type="modules" name="right" style="xhtml" />
              </div><!--/span-->
      <?php endif; ?>
     
    </div><!--/row-->
</div><!--/container-->

Dove sbaglio?

grazie

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
ciao, credo che stai usando twitter bootstrap: in questo caso il controllo lo devi fare sulla larghezza della griglia. Poiché la dimensione di ogni cella è data dalla classe span# dove # è il numero di colonne da occupare, tu devi impostare 3 diverse variabili. La logica è questa:


$largSx = 0;
$largDx = 0;


//se ci sono moduli a sinistra (lo calcoli con il countmodules)
$largSx = 3; // (ad esempio)



// se ci sono moduli a destra,
$largDx = 3; // (ad esempio)


$largCentro = 12 - $larghDx - $largSx;


poi quando vai a stampare i tuoi div semplicemente stamperai dx e sx solo se $larghSx/dx > 0.
Nell'intestazione di ogni div scriverai quindi:
Codice: [Seleziona]
<?php if ($larghSx>0): ?>
<div class="left span<?php echo $larghSx?>">bla bla bla</div>
<?php endif; ?>

Offline daduzzo

  • Nuovo arrivato
  • *
  • Post: 30
    • Mostra profilo
si utilizzo bootstrap,

ho fatto delle prove, ma non ci riesco, saresti cosi cortese da fornirmi ulteriori informazioni.

seguendo le tue direttive se non ci sono moduli di destra la colonna di centro scende giu

grazie x la pazienza

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
puoi postare un link al sito? altrimenti mi è difficile capire il problema

 



Web Design Bolzano Kreatif