Come includere l'hash (#) nel percorso drupal_goto?


12

C'è un modo per includere un # in drupal_goto?

voglio qualcosa del genere

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

Risposte:


18

Per Drupal 6,

Dovrebbe essere il 3o parametro

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

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

Per Drupal 7

drupal_goto($path = '', array $options = array(), $http_response_code = 302)
drupal_goto("products", array('fragment' => $node->nid));

per esempio D7, puoi usare qualsiasi parametro supportato dalla funzione url () ... come i parametri URL.
AyeshK,

7

In Drupal 6 drupal_goto usa il suo terzo parametro per la frammentazione. Se vuoi rendere l'URL simile ai prodotti # 345 dovresti passare il suo frammento come terzo argomento nella funzione drupal_goto.

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

In Drupal 7 dovresti passare il frammento come coppia chiave-valore dell'array sul secondo parametro della funzione drupal_goto.

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

Entrambi sopra produrranno un url come i prodotti # 123, dove 123 è il valore della variabile $ node-> nid.


2

Questo ha funzionato anche per me in Drupal 7

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

0

drupal_goto perde #zzz se c'è un? destination = foobar # zzz, dato che questo non è mai restituito da $ _SERVER, rimuovi questa riga perché non fa nulla a parte rompere le cose:

//$options['fragment'] = $destination['fragment'];  // removed
is the same as 
$options['fragment']='';
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.