Submitted by meybeck on
Bonjour,
Je cherche à placer un hook sur les formulaires de contact personnels des utilisateurs,
(de façon à envoyer un e-mail à l'administrateur du site en copie des messages envoyés, mais je n'en suis pas encore là !).
Malgré mes recherches, impossible que mon hook soit pris en compte !
Voici le code dans ma page template.php :
/implémentation d'un hook_theme
pour la création de fonctions de thèmes
pour le formulaire contact-personal-form/
function MONTHEME_theme() {
return array('contact_personal_form' => array('render element' => 'form'));
}
/* implémentation de la function hook de thème pour le formulaire */
function MONTHEME_contact_personal_form($variables){
$e = $variables['form']['mail']['default_value'];
$output = '<h3>Test de prise en compte du hook</h3>';
$output .= drupal_render_children($variables['form']);
return $output;
}
Naturellement "montheme" est remplacé par le nom de mon thème.
Je me suis basé entre autre sur ce bouquin, page 335.
Mais rien à faire, le site ne bronche pas.
Si quelqu'un aurait une idée...
A mon avis tu devrais
Permalien Soumis par Woprrr le 1 Mars, 2012 - 09:51
A mon avis tu devrais simplement crée un petit module et appliquer un form_alter tout con et ça marche extrêmement bien !
je te conseil cette méthode très bien expliqué ;) Bon tuto
http://www.webenstock.com/fr/blog/2011-04-03-video-utilisation-du-hookfo...
Merci de la réponse, je vais
Permalien Soumis par meybeck le 1 Mars, 2012 - 10:25
Merci de la réponse, je vais tester ça.
Toutefois je suis sous Drupal 7, donc je vais devoir adapter.
Je vous tiens au courant.
Tu n’aura pas de probléme sur
Permalien Soumis par Woprrr le 1 Mars, 2012 - 11:02
Tu n'aura pas de probléme sur le form alter entre DP6 et 7
http://api.drupal.org/api/drupal/modules!system!system.api.php/function/...
Super, ça marche ! (Désolé,
Permalien Soumis par meybeck le 5 Mars, 2012 - 17:14
Super, ça marche !
(Désolé, j'ai mis un peu de temps car je bosse sur plusieurs projet).
Pour info, voilà la tête de mon module : il permet d'envoyer aux administrateurs un copie de tous les mails envoyés via le formulaire de contact personnel.
<?php
// $Id;
/
* @file
* Module "custom_user_form" pour envoyer une copie aux administrateurs des mails envoyés par les formulaires de contact personnel (contact_personal_form)
*/
/
* Implementation of hook_form_alter()
*/
function custom_user_form_form_alter(&$form, &$form_state, $form_id){
switch($form_id){
case 'contact_personal_form' : //Si on est dans un formulaire de contact perso
//dsm($form);
//Récupération des emails des administrateurs
$users = entity_load('user');
$emails = '';
foreach($users as $user) {
if (array_key_exists(3, $user->roles)) {
if (strlen($emails) > 0) {
$emails .= ',' . $user->mail;
} else {
$emails = $user->mail;
}
}
}
//Application des e-mails
$form[recipient]['#value']->mail .= ','.$emails;
break;
}
}
Merci beaucoup pour ton aide !
Salut, merci pour le
Permalien Soumis par zorax le 27 Avril, 2012 - 19:03
Salut,
merci pour le code,
j'essaye de personnaliser le formulaire de contact, en remplaçant le login par le nom et prénom de l'utilisateur (fields dans user), mais je ne sais pas comment dans le code indiquer le remplacement de la valeur affichée.
voici mon code :
function contact_form_form_alter(&$form, &$form_state, $form_id){
switch($form_id){
case 'contact_personal_form' : //Si on est dans un formulaire de contact perso
dsm($form);
//Récupération des emails des administrateurs
$users = entity_load('user');
$nom = $form['recipient']['#value']->field_user_nom['und'][0]['value'];
$prenom = $form['recipient']['#value']->field_user_prenom['und'][0]['value'];
//voilà comment j'essaye de changer le login par les champs $nom/$prenom
$form['recipient']['#value']->name = $prenom ." ". $nom;
break;
}
}
merci pour le coup de main !