web-dev-qa-db-fra.com

Comment rendre une collection de champs sans div par défaut?

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>
5
naomi

Vous devez remplacer theme_field_collection_view fonction de thème dans votre template.php.

8
Anil Sagar

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

1
rosell.dk