2010-05-06 10 views
1

Si un utilisateur accède:Le paramètre de destination Drupal sur la page du compte utilisateur n'est pas permanent?

user/register?destination=node/add/listing 

Et ils puis cliquez sur « Connexion » ou « Demander un nouveau mot de passe » onglets, il garde WONT le paramètre de destination dans la barre d'adresse. C'est à dire. Après avoir cliqué sur « Connexion » et vous connecter, l'utilisateur ne se terminera pas réellement à:

node/add/listing 

Je pensais que d'éditer le module utilisateur de base, mais ne pouvait même pas trouver le bon endroit pour modifier, Je sais que c'est une très mauvaise solution.

Est-ce que quelqu'un sait comment je peux obtenir ce droit?

Répondre

0

Les liens dont vous parlez sont des liens statiques, tout comme votre navigation. Ils sont mis en cache, etc, et donc ce n'est pas quelque chose que vous pouvez changer facilement. Le comportement est perféré la plupart du temps. Vous ne voulez généralement pas transférer des chaînes de requête à d'autres liens.

Pour ce faire, je pense que votre meilleur pari n'est pas de le faire directement dans Drupal, mais plutôt de le faire avec JavaScript. Vous pouvez définir une variable js ou vérifier document.URL.

Vous pourriez probablement le faire dans Drupal, mais étant donné le cas spécifique, cela ne vaudrait pas le coup.

1

Je suis tombé sur ceci lors de la recherche du même problème (j'essayais de trouver un problème de base, mais je n'ai pas pu le faire). Quoi qu'il en soit, la solution que j'ai fini par mettre en place est plus impliquée qu'elle ne devrait l'être, mais fait le travail.

Tout d'abord, téléchargez et installez le url_alter module. Ensuite, dans un module personnalisé, implémentez hook_url_outbound_alter(). Voici le code que j'ai utilisé, mais de nombreuses variantes sont possibles.

/** 
* Implementation of hook_url_outbound_alter(). 
* 
* If the url_alter module is enabled, and email verification is disabled, 
* this will pass the destination parameter to the registration and login tabs. 
*/ 
function os_custom_url_outbound_alter(&$path, &$options, $original) { 
    if (user_is_anonymous() && in_array($original, array('user', 'user/register', 'user/login')) && empty($options['query']) && !variable_get('user_email_verification', TRUE)) { 
    $options['query'] = drupal_get_destination(); 
    } 
}