faire s'afficher le contenu d'un champ CCK entre 2 balises HTML choisies du type <h2>contenu</h2>

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,

J'ai un type de contenu pour lequel j'ai créé un champ CCK de type texte (imaginons qu'il s'agit d'un sous-titre pour un contenu de type article). Tout marche bien mais je voudrais, pour des raisons évidentes de sémantique XHTML, que le contenu saisi par l'utilisateur pour ce champ s'affiche, dans le rendu HTML final, entre des balises pertinentes, par exemple :

<h2>contenu saisi</h2>

au lieu de (c'est ce que j'ai pour l'instant) :

<div class="field-items">
  <div class="field-item odd">contenu saisi</div>
</div>

J'ai bien lu la doc et j'ai compris qu'il faut faire une supplantation ("override"). Sauf que je ne vois pas comment. J'imagine qu'une simple fonction à ajouter dans template.php devrait y parvenir, mais je pipe pas grand chose à PHP, je suis un designer, moua ;-)

Dommage d'ailleurs qu'on ne puisse décider cela dès la configuration d'un champ CCK, par exemple via une liste déroulante de balises HTML entre lesquelles on n'aurait plus qu'à choisir, ce serait trop beau...

Si vous avez une petite idée, merci d'avance !

On va faire propre (pour une fois)
Donc, dans ton template.php, tu peux rajouter (vérifie que ta fonction n'existe pas déjà, si oui, rajoute juste le contenu de la fonction ci-dessous)

<?php
function phptemplate_preprocess_node(&$vars, $hook) {
 
$vars['ma_var'] = $vars['node']->field_NOM_DU_FIELD_CCK[0]['safe'];
?>

Ensuite, dans le node.tpl.php, tu va pouvoir écrire <?php print $ma_var; ?> ce qui affichera le contenu "brut" (mais "safe", c'est a dire que du code potentiellement malicieux aura été supprimé) de ton champs.