web-dev-qa-db-fra.com

Comment répartir la largeur en fonction du nombre de modules?

J'essaie de faire un modèle joomla. J'utilise également bootstrap v2.3.2. Je souhaite créer une distribution de conception 3/12-6/12-3/12. Je vérifie si des modules sont positionnés à gauche et à droite des colonnes

$span = 12;

if ($this->countModules('right')) $span -= 3;
if ($this->countModules('left'))  $span -= 3;

<?php if ($this->countModules('left')): ?>
    <div id="sidebarleft" class="span3">
        <jdoc:include type="modules" name="left" style="well" />
    </div>
<?php endif; ?>

<div id="content" class="<?php echo $span; ?>">
    <jdoc:include type="message" />
    <jdoc:include type="component" />
</div>

<?php if ($this->countModules('right')) : ?>
    <div id="sidebarright" class="span3">
        <jdoc:include type="modules" name="right" style="none" />
    </div>
<?php endif; ?>

J'ai assigné un mod_articles_category module en position gauche mais vide. Donc, le module n'est pas montré. Mais joomla pense qu’il existe un module dans cette position et qu’il doit en réduire le contenu.

Comment puis-je utiliser l'espace si le module n'est pas affiché sur une page?

1
zkanoca

Si je vous ai bien compris, cet extrait devrait vous aider (note, je n'ai pas exécuté le code)

<?php
if ($this->countModules('left')) {
   $modules = JModuleHelper::getModules('left');
   $modulesContent  = array();
   foreach ($modules as $module) {
      $content = JModuleHelper::renderModule($module, array('style' => 'well'));
      if(!empty($content)) {
         $modulesContent[] = $content;
      }
   }
}
?>
<?php if(!empty($modulesContent)) : ?>
   <div id="sidebarleft" class="span3">
      <?php foreach ($modulesContent as $content) : ?>
        <?php echo $content; ?>
      <?php endforeach; ?>
   </div>
<?php endif; ?>
1
Marko D