Je souhaite utiliser 1 position de module (vitrine) mais que les modules en double définissent la largeur de la colonne bootstrap) en fonction du nombre de modules affectés à cette position.
J'ai écrit le code suivant:
<div class="row">
<?php if($this->countModules('showcase')) : ?>
<div class="col-md-<?php echo (12/$this->countModules('showcase'));?>">
<jdoc:include type="modules" name="showcase" />
</div>
<?php endif; ?>
</div>
mais ceci produit le code HTML suivant:
<div class="row">
<div class="col-md-6">
<div class="block">
<h2 class="header">Show Case 1</h1>
<div class="custom">
<p>This is a test</p>
</div>
</div>
<div class="custom">
<h2 class="header">Show Case 2</h1>
<p>This is a test</p>
</div>
</div>
</div>
plutôt que (comme je le veux):
<div class="row">
<div class="col-md-6">
<div class="block">
<h2 class="header">Show Case 1</h1>
<div class="custom">
<p>This is a test</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="block">
<h2 class="header">Show Case 2</h1>
<div class="custom">
<p>This is a test</p>
</div>
</div>
</div>
</div>
La raison en est que vous avez votre jdoc:include
à l'intérieur du wrapper suivant:
<div class="col-md-<?php echo (12/$this->countModules('showcase'));?>">
Tous les modules assignés à cette position seront donc affichés dans cette enveloppe.
Regardez le fichier suivant:
templates/YOUR_TEMPLATE/html/modules.php
Ici, vous verrez les variables et les balises HTML qui seront enroulées autour de votre module. Votre meilleur pari sera de faire ce qui suit:
index.php:
<?php if ($this->countModules('showcase')) : ?>
<div class="row">
<jdoc:include type="modules" name="showcase" style="mystyle" />
</div>
<?php endif; ?>
Ajoutez ensuite un nouveau mocChrome
au fichier mentionné ci-dessus:
function modChrome_mystyle($module, &$params, &$attribs)
{
$moduleTag = $params->get('module_tag', 'div');
$bootstrapSize = (int) $params->get('bootstrap_size', 0);
$moduleClass = $bootstrapSize != 0 ? ' col-md-' . $bootstrapSize : ' col-md-12';
$headerTag = htmlspecialchars($params->get('header_tag', 'h3'), ENT_COMPAT, 'UTF-8');
$headerClass = htmlspecialchars($params->get('header_class', 'page-header'), ENT_COMPAT, 'UTF-8');
if ($module->content)
{
echo '<' . $moduleTag . ' class="' . htmlspecialchars($params->get('moduleclass_sfx'), ENT_COMPAT, 'UTF-8') . $moduleClass . '">';
if ($module->showtitle)
{
echo '<' . $headerTag . ' class="' . $headerClass . '">' . $module->title . '</' . $headerTag . '>';
}
echo $module->content;
echo '</' . $moduleTag . '>';
}
}
Remarque j'ai utilisé style="mystyle"
(valeur par défaut) dans index.php et le nom de la fonction modChrome est modChrome_mystyle
.
Vous verrez également que la taille bootstrap sera par défaut à 12
n'est pas spécifié.
Une fois que tout cela est fait, assurez-vous d’affecter ce style aux modules de ce poste.
J'espère que cela t'aides