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

Catégories:

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.

#

Merci beaucoup pour ta réponse. Faut que j’aille tester.

#

Si tu redéfinis ton template (de type node-<tontype>.tpl.php), tu pourras aisément accéder à ton field CCK, et de là, le placer dans n’importe quelle balise HTML possible

#

Il y aussi le module contemplate qui peut dépanner, il sert exactement à ça :-)

#
Syndiquer le contenu