Comment inclure le hachage (#) dans le chemin drupal_goto?

12

Existe-t-il un moyen d'inclure un # dans drupal_goto?

je veux quelque chose comme ça

function MYMODULE_preprocess_node(&$variables) {
  $node = $variables['node'];
  switch ($node->type) {
    case 'product':      
      drupal_goto("products#".$node->nid);
  }
}
Serjas
la source

Réponses:

18

Pour Drupal 6,

Ce devrait être le 3ème paramètre

drupal_goto($path = '', $query = NULL, $fragment = NULL, $http_response_code = 302)

drupal_goto("products", NULL, $node->nid);

Pour Drupal 7

drupal_goto($path = '', array $options = array(), $http_response_code = 302)
drupal_goto("products", array('fragment' => $node->nid));
Dinesh Kumar Sarangapani
la source
pour l'exemple D7, vous pouvez utiliser n'importe quel paramètre pris en charge par la fonction url () ... comme les paramètres d'URL.
AyeshK
7

Dans Drupal 6, drupal_goto utilise son troisième paramètre pour la fragmentation. Si vous voulez créer l'url comme des produits # 345, vous devez passer son fragment comme troisième argument dans la fonction drupal_goto.

drupal_goto("products", NULL, $node->nid); // where $node->nid is the fragment.

Dans Drupal 7, vous devez passer le fragment comme paire de valeurs clés du tableau sur le deuxième paramètre de la fonction drupal_goto.

drupal_goto('products', array('fragment' => $node->nid)) ; // where $node->nid is the fragment.

Les deux ci-dessus produiront une URL comme les produits # 123, où 123 est la valeur de la variable $ node-> nid.

Nilesh Kumar Singh
la source
2

Cela a également fonctionné pour moi dans Drupal 7

 drupal_goto( '/products/' . 'section', array( 'fragment' =>  'subsection', 'alias' => TRUE ) );
Yusef
la source
0

drupal_goto perd #zzz s'il y a un? destination = foobar # zzz, car cela n'est jamais retourné par $ _SERVER, supprimez cette ligne comme rien à part casser des choses:

//$options['fragment'] = $destination['fragment'];  // removed
is the same as 
$options['fragment']='';
Stephen Robinson
la source