web-dev-qa-db-fra.com

Définir la largeur de la colonne en fonction du nombre de modules en position

J'ai 4 positions de module, qui en fonction du nombre de modules, j'aimerais redimensionner la largeur de la colonne. J'ai écrit ce qui suit, mais il ne fait que les régler tous à col-md-12. Des idées où je vais mal?

<?php 

if($this->countModules('bottom-a'))
    {
        $bottom-col-width == "col-md-12";
    }
    elseif($this->countModules('bottom-a') && $this->countModules('bottom-b'))
        {
            $bottom-col-width == "col-md-6";
        }
    elseif($this->countModules('bottom-a') && $this->countModules('bottom-b') && $this->countModules('bottom-c'))
        {
            $bottom-col-width == "col-md-4";
        }
    elseif($this->countModules('bottom-a') && $this->countModules('bottom-b') && $this->countModules('bottom-c') && $this->countModules('bottom-d'))
        {
            $bottom-col-width == "col-md-3";
        }
?>
1
RustyJoomla

Ces instructions if ne fonctionneront pas. Imaginez s'il y a un module en position bottom-b et bottom-c. Même si vous inversiez les instructions if, aucune de celles-ci ne correspondra.

Pour réaliser ce que vous voulez, les instructions if seraient trop compliquées.

Fais-le plutôt comme ça:

<?php

// Default width - for one column
// This gets new value, if there is more than one active position
$bottomColWidth = "col-md-12";

// Number of positions, which have modules
$countOfActivePositions = 0;

// Positions to search modules in
$positions = array('bottom-a', 'bottom-b', 'bottom-c', 'bottom-d');

// Loop over every position
foreach ($positions as $position) {
  // If position has modules
  if($this->countModules($position)){
    // Increase active positions count
    $countOfActivePositions++;
  }
}

if($countOfActivePositions > 1){
  $bottomColWidth = "col-md-".(12 / $countOfActivePositions);
}

?>

Cela fonctionnerait dans toutes les combinaisons possibles.

2
Rene Korss