Changer le label dans un formulaire du module Location en Drupal 6.x

Un de mes clients me demandait cette semaine de changer le label (ou le titre) d’un champ localisation dans un formulaire d’édition d’un node sur son site Drupal. Il voulait en particulier que les noms de champ 'Rue' et 'Additional' soient remplacés par 'Adresse 1' et 'Adresse 2' respectivement.

Comme vous le savez sans doute les module Location et Gmap de Drupal nous permettent de (géo) localiser des nodes avec de jolies cartes de Google Maps.

Nous allons donc, dans module propre, utiliser le hook_form_alter() mais avec deux manières distinctes si nous avons utilisé le sous module Location CCK ou le sous module Node Locations.

Dans les deux cas nous allons utiliser la fonction #after_build qui nous permet d’appeler une fonction une fois que notre formulaire a été construit mais avant qu’il soit renderisé (rendered). C'est là que nous allons changer nos labels ou titres de nos champs.

Node Locations

<?php
/**
   * Implementation of hook_form_alter().
   *
   * The function is named modulename_form_alter.
   */
function MYMODULE_form_alter(&$form, &$form_state, $form_id){
  switch (
$form_id){
    case
'MYNODE_node_form':
     
$form['#after_build'][] = 'change_location_label';
    break;
  }
}

function
change_location_label(&$form) {
 
$form['locations'][0]['street']['#title'] = t('Adress 1');
 
$form['locations'][0]['additional']['#title'] = t('Adress 2');

  return
$form;
}
?>

N'oubliez pas de changer MYMODULE par le nom de votre module et MYNODE par le nom du type de node que vous utilisez.

Location CCK

<?php
/**
   * Implementation of hook_form_alter().
   *
   * The function is named modulename_form_alter.
   */
function MYMODULE_form_alter(&$form, &$form_state, $form_id){
  switch (
$form_id){
    case
'MYNODE_node_form':
     
$form['#after_build'][] = 'change_location_label';
    break;
  }
}

function
change_location_label(&$form) {
 
$form['field_MYFIELD'][0]['street']['#title'] = t('Adress 1');
 
$form['field_MYFIELD'][0]['additional']['#title'] = t('Adress 2');

  return
$form;
}
?>

N'oubliez pas de changer MYMODULE par le nom de votre module, MYNODE par le nom du type de node que vous utilisez et MYFIELD par le nom du champ Location CCK qui vous est propre.

Références:
Module Location: http://drupal.org/project/location
Module Gmap: http://drupal.org/project/gmap
Le hook_form_alter(): http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hoo...
Forms API: http://api.drupal.org/api/drupal/developer--topics--forms_api_reference....

Si vous avez un commentaire, n'hésitez pas! Je suis là pour répondre à vos doutes ou vos questions. C'est ce qui fait le charme de la communauté Drupal.

Tags:

Commentaires

Merci c'est bien expliqué

Merci c'est bien expliqué

Merci

Heureux que cela te plaise. :)

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img>
  • Vous pouvez publier du code en utilisant les balises <code>...</code> (generic) ou bien <?php ... ?> (PHP colorié).
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plus d'informations sur les options de formatage

By submitting this form, you accept the Mollom privacy policy.

Toutes les langues

A propos

En savoir plus... Karim Boudjema. Un développeur belge dans les Andes boliviennes.

Voir mon profil sur LinkedInVoir mon profil sur Twitter

>> En savoir plus...

Commentaires récents