Posted by babacar on June 19, 2013 at 3:48pm
Bonjour,
j'ai un type de contenu avec un champ email et un champ etape avec valeur multiple. Pour faire le theming j'ai du utiliser ce bout de code pour le champ email:
<div class="theme-email">
<label for="">Email:</label>
<input type="text" name="" value="<?php print $field_email_agent[0]['value']?>" readonly id=""/>
</div>et celui ci pour le champ etape
<div class="theme-etape>
<ol class="etapes">
<?php foreach ($field_etape as $etape) : ?>
<li><?php print $etape['safe_value'] ?></li>
<?php endforeach; ?>
</ol>
</div>tous les autres champs affichent des valeurs sauf ces deux champ.

Comments
Question ou astuce??
Bonjour Babacar, merci pour ce post. Je ne comprends toutefois pas: tu est en train de poser une question (laquelle?) ou veux juste partager une astuce avec le groupe?
Bonne continuation et bon theming...
Oui il me semble que mon
Oui il me semble que mon post est un peu incomplète. j'ai de graves blem de français.
En fait je pose une question :
j'ai un type de contenu agent avec plusieurs champ (Nom, prénom, email, telephone,etape etc.......) le cham etape est un champ à valeur multiple
j'ai décidé de faire le theming de ce type de contenu en créant un fichier node--agent.tpl.php.
Comme mentionné sur le post d'origine tous les champs s'affichent sauf ceux-ci(email et etapes)
Et je voudrai savoir quelle est l'origine de ce problème ?
The more we know about Drupal,The better !!!!!
Template suggestion fonctionnel??
Bonjour Babacar, j'interviens à ce niveau parce que je me demande si ton fichier template est pris en compte? Il existe dans Drupal 7 le mécanisme dit de temple suggestion. Automatique sous D6, il faut sur D7 mettre un petit bout de code dans ton fichier template.php pour le déclencher. Par exemple:
<?phpfunction kyziah_preprocess_node(&$node) {
if($vars['view_mode'] == 'teaser') {
$node['theme_hook_suggestions'][] = 'node__' . $node['node']->type . '<strong>teaser';
$node['theme_hook_suggestions'][] = 'node</strong>' . $node['node']->nid . '__teaser';
}
}
?>
Je te conseille aussi de voir ce commentaire pour plus d'information.
Use the render function
Bonjour Babacar,
dans ton fichier template, la valeur des fields est dans le tableau $content.
tu n'a pas besoin de construire une liste avec les elemnts html ol etc,
utilise plutot la fontion render et configure le display pour chaque field.
j'aurai écrit:
la fonction render() n'est
la fonction render() n'est elle pas souvent utilisée pour afficher des champs que l'on ne souhaite pas retravailler (en terme de css par exemple)
The more we know about Drupal,The better !!!!!
Hello
Hello babacar teste ca et tiens nous au courant
$node->field_nom_du_champ[$node->language][0]['value'];
Use the render function2
La fonction render to fabrique le HTML de ton field.
Tu peux manipuler les paramétres d'affichache de ton champ, pour qu'il te produise la structure HTML que tu souhaites.
Si tu n'est toujours pas satisfait du rendu HTML, tu dois écrire ta propre funtion theme:
tu a la docu nécessaire ici https://api.drupal.org/api/drupal/modules!field!field.module/function/theme_field/7
La fonction render utilisera alors ta fontion pour produire le HTML.
Ton css va dans les fichiers .css, en plaçant tes classes dans les templates tu pourra ainsi les ciblrer
@Tamsir : j'ai essayé ta
@Tamsir : j'ai essayé ta proposition mais j'ai le même résultat le champ email ne s'affiche toujours pas.
@basshiam : je vais explorer ta proposition et vous tiens au courant.
Merci les gars
The more we know about Drupal,The better !!!!!