Message d'avertissement

The subscription service is currently unavailable. Please try again later.

Personnalisation Node

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 à tous !

Voilà je suis un petit nouveau sur cette communauté et je me permet de venir solliciter votre aide.

De base je suis développeur web et d'habitude, je n'utilise pas les CMS. Quoi qu'il en soit pour un projet personnel je me suis mi à Drupal 7. J'essai de comprendre un petit peu la philosophie de fonctionnement et ma première mission est de créer un template de news postées pour la page d'accueil.

J'ai donc créer un nouveau type de contenu que j'ai appelé "News Légion".
Maintenant au lieu de le gérer via l'interface, je voudrais développer un code générant un affichage plus précis que celui proposé via le pannel admin.

J'ai donc créer un template "node--newslegion.tpl.php".

Le code que j'insère dedans est bien pris en compte et je peux afficher tout ce que je veux. En revanche, là où je rencontre un problème c'est sur la mise en page pure et dure.

Par exemple, dans le type de contenu j'ai ajouté différents champs comme par exemple un champ "image" avec une image par défaut si aucune n'est uploadée. Cela fonctionne parfaitement. Mon seul soucis c'est qu'en utilisant l'objet $node je peux afficher l'image mais celle ci est automatiquement contenue dans une div qui prend toute la ligne sur laquelle elle est affichée.

De ce fait j'aimerais obtenir des informations sur la bonne manière pour intégrer des éléments mais que ceux ci soit indépendant à savoir par exemple récupérer juste l'image affin de générer une div moi même pour la positionner où je veux.

Autre question (qui est liée à celle ci dessus) pour l'intégration de css, quelle est la bonne manière ? Créer un nouveau fichier CSS ? Ajouter des classes dans le fichier CSS principal ?

Merci pour votre aide et pour vos réponses !

Forum : 
Version de Drupal : 

Bonjour,

Alors, Je vais vous donner des pistes à creuser, mais je pense que ça va vous aider.

Avant toute chose il faut installer Devel. Ce module va vous aider à analyser les tableaux et objets de Drupal.
Il apporte tout un tas d'outils très utile quand on développe sur Drupal.

Le module Examples est un très bon point de départ. C'est un modules qui n'est pas fait pour être installé, mais pour être lu. Il regorge d'exemple de code.

Première chose : Pour printer un champ seul dans un template :

   print render($content['field_image']); ?>

Si le champ est multivalué il est possible d'afficher une des valeurs :

   print render($content['field_image'][0]); ?>

Pour printer quoi que ce soit, on passer par la fonction render(). C'est fonction analyse le tableau de rendu qui lui est passé pour appeler les thèmes et passer à ceux-ci les variables.

voir hook_theme()

Pour bien comprendre le principe de tableau de rendu :

<?php dsm($content); ?>

Va vous afficher le contenu de votre node.
La variables $content contient la totalité des champs sous forme de tableau de rendu.

Pour modifier le code html d'un champ le plus propre est de passer par un formateur de champ.
voir hook_field_formatter()

Voilà bon courage.

Liens :

Devel : https://drupal.org/project/devel
Examples : https://drupal.org/project/examples

J'ai tendance à inviter les gens à utiliser le module display suite qui permet de configurer l'affichage de ses contenus plus finement et sans avoir à modifier du code de template ce qui est assez peu maintenable.

Concernant les div et les class, celles fournies pas Drupal on été réflechies et permettent normalement de réaliser le styling nécessaire sans soucis. Donc normalement dans le cas général pas besoin de les modifier / supprimer pour rajouter les siennes à la place.

Le module Display suite permet de plus de choisir des layouts ce qui permet de faire facilement des système à 2 ou 3 colonnes pour le contenu d'un noeud ainsi que de rajouter ou choisir le markup que l'on souhaite en wrapper de champs (remplacer les div par des span ou des hX par exemple)

Bonjour,

C'est surtout une question de niveau d'intégration.
Si un seul HTML pouvait tout faire je pense que les intégrateurs serait en voie d'extinction.

Il ne faut pas oublier que tout le monde n'utilise pas Drupal comme un CMS.
La force de Drupal c'est justement sa souplesse et sa capacité d'adaptation.

Après le module DS est un module que j'utilise sur tous mes projets mais surtout pour ajouter des view_mode sur les entités.

Et pour l'argument maintenable, il faut voir comment DS va passer le cap des nouveaux layout de Drupal 8...

Pour avoir passé par mal de site D6 vers D7, pas mal d'élément que l'on pensait maintenable / migrable facilement ont été de toute façon à reprendre.

Et pour finir sur le HTML de Drupal, il est plutôt complet, mais justement souvent bien trop.
Si on s'en tient au référencement d'un site, une analyse rapide d'une page printé via un

<?php
 render
($content);
?>

contient 70% de balise pour 30% de contenu en moyenne...

Ce qui n'est pas vraiment glop.