web-dev-qa-db-ja.com

モジュール数に応じて幅を配分する方法は?

Joomlaテンプレートを作成しようとしています。また、bootstrap v2.3.2を使用しています。デザインを3/12-6/12-3/12ディストリビューションにしたいのです。モジュールが左右に配置されているかどうかを確認しています。コラム

$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; ?>

mod_articles_categoryモジュールを左に配置しましたが、空です。したがって、モジュールは表示されません。しかし、joomlaはその位置にモジュールがあり、コンテンツを縮小する必要があると考えています。

モジュールがページに表示されない場合、どうすればスペースを使用できますか?

1
zkanoca

私があなたを正しく理解していれば、このスニペットが役立つはずです(注、私はコードを実行していません)

<?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