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);
  }
}

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));

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.


2

Cela a également fonctionné pour moi dans Drupal 7

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

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']='';
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.