Je souhaite générer une collection de champs à l'aide des balises dl
, dt
et dd
. La collection comprend deux champs - field_heading
et field_text
. Je veux que chaque champ_heading soit un dt, chaque field_text
pour être un dd
et pour envelopper l'ensemble dans un dl
.
J'ai atteint cet objectif en remplaçant field--my-collection--my-content-type.tpl.php
et le field--my-field.tpl.php
pour les champs d'en-tête et de texte.
Le problème est qu'un div
est généré sur chaque élément de la collection de champs (par le module de collecte de champs, je crois). (div class="field-collection-view clearfix view-mode-full"
) Cette div enveloppe les éléments d'en-tête et de texte ensemble. Le div est donc inséré à l'intérieur du dl
mais avant le dt
. Il s'agit d'un problème car le dt
doit être un enfant direct du dl
.
Existe-t-il un moyen de rendre la collection de champs sans cette div?
champ - ma-collection - mon-contenu-type.tpl.php
<dl class = 'accordion'>
<?php foreach ($items as $delta => $item){ ?>
<?php print render($item); ?>
<?php } ?>
</dl>
champ - champ-en-tête.tpl.php
<dt>
<?php foreach ($items as $delta => $item){
print render($item);
} ?>
</dt>
champ - champ-texte.tpl.php
<dd>
<?php foreach ($items as $delta => $item){
print render($item);
} ?>
</dd>
Vous devez remplacer theme_field_collection_view fonction de thème dans votre template.php.
Créez un fichier "field-collection-view.tpl.php" que vous mettez dans votre dossier de thème
Contenu du fichier: <?php print $element['#children']; ?>
Si vous souhaitez qu'il affiche exactement ce qu'il fait maintenant (je sais que vous ne le faites pas), vous auriez ce contenu:
<?php print '<div' . drupal_attributes($element['#attributes']) . '>' . $element['#children'] . '</div>'; ?>