Submitted by chanac_hares on
Bonjour,
j'ai un petit soucis, je souhaiterai envoyer un message via drupal_set_message() dans la page d'après.
Je m'explique :
Je souhaiterai que lorsque l'utilisateur clique sur un lien donné .. il soit redirigé vers la page , jusqu’à normal .. mais je souhaiterai lui ajouter un petit message perso ...
voili - voilou
Bonjour,
Permalien Soumis par Damien LAGUERRE le 9 Avril, 2013 - 11:01
Bonjour,
Avez vous un exemple d'url à nous fournir ?
Si c'est l'ouverture d'un node : hook_node_view();
Sinon, une approche plus générique mais qui va générer un test à chaque page avec un hook_init(); http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_init/7
Il suffit de tester le retour de la fonction current_path();
Bonjour Damien,
Permalien Soumis par chanac_hares le 10 Avril, 2013 - 11:17
Bonjour Damien,
Pour être un peu plus précis ..
J'ai un site multi-langue (fr / en) avec du contenu qui peut être traduit ou non (cela dépend des contenus) , j'utilise le block language_switch_links distribué dans module/translation/translation.module (disponnible dans la version 7.17 de drupal) pour afficher en bas de mes pages un block avec dedans un drapeau fr et un drapeau en qui me permettent lorsque je suis sur mon contenu d'acceder à la version traduite du contenu.
Le module translation Implements hook_language_switch_links_alter(). de telle manière à ce que lorsqu'il n'y à pas de traduction disponible pour le contenu le drapeau (anglais) soit barré .. on ne peut donc pas y cliquer dessus
Ce que j'ai fait c'est que j'ai modifié cette fonction pour non pas affiché le drapeau barré , mais autorisé le Click dessus, et dans le cas ou il n'y à pas de contenu je redirige vers la page d'acceuil et je souhaite affiché un message du style 'This content has no translation ... sorry'
j'ai donc modifié la fonction précédente comme suit
Simplement lorsque j'ouvre ma page sur le contenu lui même le message s'affiche ..
Je souhaiterai qu'il s'affiche uniquement lorsque l'utilisateur clique sur le lien et qu'il est redirigé vers la page d'accueil.
Pour faire simple :
Permalien Soumis par Damien LAGUERRE le 10 Avril, 2013 - 14:20
Pour faire simple :
/
* Implements hook_menu();
*/
function hook_menu() {
$items = array();
$items['no-tranlation'] = array(
'title' => t('No translation'),
'page callback' => 'MON_MODULE_no_translation_callback',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
/
* Callback menu "no-translation"
*/
function MON_MODULE_no_translation_callback(){
drupal_set_message(t('This content has no translation ... sorry'),'warning');
drupal_goto('');
}
Ne pas oublier de modifier la variable $links[$langcode]['href'] = ''; en $links[$langcode]['href'] = 'no-translation';
Une solution parfaite ...
Permalien Soumis par chanac_hares le 10 Avril, 2013 - 12:57
Une solution parfaite ...
Un grand grand merci !
Ça marche au poil !