Déplacer la description au-dessus du champ de saisie

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,

Je voudrais déplacer le texte de description (div.description) d'un champ de formulaire. Par défaut, ce texte d'aide se trouve en-dessous du champ, mais j'aimerais qu'il soit au-dessus, donc entre le texte label et le champ. On verrait ainsi l'aide avant le champ à saisir.

J'ai fait une recherche et j'ai trouvé cette page: Move the help/description text

Malheureusement, le code est pour Drupal 4.7.x alors que j'utilise Drupal 5.x. J'ai quand même essayé, mais ça ne fonctionne pas. J'ai plusieurs erreurs de ce type:

warning: htmlspecialchars() expects parameter 1 to be string, array given in /.../includes/bootstrap.inc on line 588.

et le texte label et de description n'apparaît plus. Comment pourrais-je adapter ce code pour Drupal 5.x?

Je vous remercie beaucoup,

Bonne journée.

Version de Drupal : 

En effet le code est pour la 4.7 et en plus il est pas tres joli je trouve, appeller _phptemplate_callback c'est un peu violent alors que tu peux tout simplement surcharger ta fonction de theme.

Pour ca rien de plus simple, tu crees une fonction qui s'appelle ce_que_tu_veux_form_element et tu mets la partie description avant ton champ.

ex:

<?php
function phptemplate_form_element($element, $value) {
 
$output  = '<div class="form-item">'."\n";
 
$required = !empty($element['#required']) ? '<span class="form-required" title="'. t('This field is required.') .'">*</span>' : '';

  if (!empty(
$element['#title'])) {
   
$title = $element['#title'];
     
     if (!empty(
$element['#description'])) {
       
$output .= ' <div class="description">'. $element['#description'] ."</div>\n";
   }

    if (!empty(
$element['#id'])) {
     
$output .= ' <label for="'. $element['#id'] .'">'. t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) ."</label>\n";
    }
    else {
     
$output .= ' <label>'. t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) ."</label>\n";
    }
  }

 
$output .= " $value\n";

 
$output .= "</div>\n";

  return
$output;
}
?>

Jette un coup d'oeil a la doc: http://api.drupal.org/api/function/theme_form_element/5
Et pour la surcharge: http://drupal.org/node/55126