Bagaimana memasukkan hash (#) di jalur drupal_goto?

12

Apakah ada cara untuk memasukkan # di drupal_goto?

Saya ingin sesuatu seperti ini

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

Jawaban:

18

Untuk Drupal 6,

Itu harus menjadi parameter ke-3

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

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

Untuk Drupal 7

drupal_goto($path = '', array $options = array(), $http_response_code = 302)
drupal_goto("products", array('fragment' => $node->nid));
Dinesh Kumar Sarangapani
sumber
untuk contoh D7, Anda dapat menggunakan parameter apa pun yang didukung fungsi url () ... seperti params URL.
AyeshK
7

Dalam Drupal 6 drupal_goto gunakan parameter ketiga untuk fragmentasi. Jika Anda ingin membuat url like products # 345, Anda harus memberikan fragmennya sebagai argumen ketiga dalam fungsi drupal_goto.

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

Dalam Drupal 7 Anda harus melewatkan fragmen sebagai pasangan nilai kunci array pada parameter kedua fungsi drupal_goto.

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

Kedua hal di atas akan menghasilkan url like products # 123, di mana 123 adalah nilai dari variabel $ node-> nid.

Nilesh Kumar Singh
sumber
2

Ini juga bekerja untuk saya di Drupal 7

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

drupal_goto kehilangan #zzz jika ada? destination = foobar # zzz, karena ini tidak pernah dikembalikan oleh $ _SERVER, hapus baris ini karena tidak melakukan apa pun selain memecahkan barang:

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