Affichage des champs dans des onglets

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Toute nouvelle sur Drupal, j'espère ne pas poser une question dont la réponse est évidente, mais bon, ça fait 2 jours que je cherche...

Voilà, j'ai créé une node (fiche adhérent), qui contient un certains nombre de champs, dont certains sont regroupés (en groupes).

Je voudrais que ces groupes s'affichent sous forme d'onglets.

J'ai essayé d'agir sur les formats de mes groupes (vertical tab et horizontal tabs item), mais dans les 2 cas, ça met mes groupes les uns au dessus des autres, et pas en onglets (et d'ailleurs je ne vois pas la différence entre les 2).

J'ai aussi essayé Display suite, avec lequel j'ai réussi à regrouper mes champs en colonnes / haut et pied de page, mais toujours pas en onglets.

Est-ce quelqu'un pourrait m'indiquer comment faire ?

D'avance merci

Version de Drupal : 

Bonjour,

Je suis plus habitué à Drupal 6 mais je vais essayer de répondre.

Je pense que la meilleure solution est de passer par un template, qui va définir la façon dont vont s'afficher les nodes de type adhérent. Il suffit de copîer le fichier node.tpl.php et d'en faire une copie sous le nom node-nom_du_type_de_contenu.tpl.php.

Ensuite, dans ce fichier de template, propre à ce type de contenu, il va falloir enlever la ligne contenant

<?php
 
print $content;
?>

et la remplacer par le nom des variables relatives à ce type de contenu ce qui donnera

<?php
 
print $node->field_conservation_produit[0]['view']
?>

pour afficher le contenu d'une variable s'appelant field_conservation_produit par exemple. (le module http://drupal.org/project/contemplate est très pratique pour savoir ce qu'il faut mettre dans le fichier.

Ainsi de suite pour toutes les variables.

En ce qui concerne les onglets, il peuvent être codés dans le template directement, avec à la fois du css, du jquery pourquoi pas ...

<ul class="tab-produits clearfix">
               <li id="description"><a><span>Description</span></a></li>
                <li id="degustation"><a><span>Dégustation</span></a></li>        
           </ul>
           
           <div id="container-produits">

             <div id="description-produit" class="onglet-produit">
                    <h2>Découvrez notre <?php print $title; ?></h2>
                  <?php print $node->content['body']['#value']; ?>
              </div>
               <div id="degustation-produit" class="onglet-produit">
                    <h2>Découvrez nos suggestions de dégustation</h2>
                  <?php print $node->field_degustation_produit[0]['view'] ?>
              </div>
              
           </div>

et le jquery qui va avec :

$(".tab-produits li").click(function () {
  $(".tab-produits").find('li').removeClass('active');
$(this).addClass("active");
  var elId = $(this).attr("id");
   $("#container-produits").find('div.onglet-produit').hide();
    $("#"+elId+"-produit").css("display","block");
});

En espérant que ça va pouvoir t'aider à avancer ...

Cordialement.

Anthony