Hash (#) drupal_goto yoluna nasıl eklenir?


12

Drupal_goto içine # eklemenin bir yolu var mı?

böyle bir şey istiyorum

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

Yanıtlar:


18

Drupal 6 için,

3. parametre olmalı

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

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

Drupal 7 için

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

D7 örneği için URL parametreleri gibi url () işlevinin desteklediği herhangi bir parametreyi kullanabilirsiniz.
AyeshK

7

Drupal 6'da drupal_goto parçalanma için üçüncü parametresini kullanır. Url benzeri ürünleri # 345 yapmak istiyorsanız, parçasını drupal_goto işlevinde üçüncü argüman olarak geçmelisiniz.

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

Drupal 7'de, parçayı drupal_goto işlevinin ikinci parametresinde dizinin anahtar değeri çifti olarak geçirmelisiniz.

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

Yukarıdakilerin her ikisi de 123 gibi bir url benzeri ürün üretecektir, burada 123 $ node-> nid değişkeninin değeridir.


2

Bu benim için de Drupal 7'de çalıştı

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

0

drupal_goto? destination = foobar # zzz varsa #zzz kaybeder, çünkü bu asla $ _SERVER tarafından döndürülmez, bu satırı, bir şeyleri kırmaktan başka bir şey yapmadan kaldırın:

//$options['fragment'] = $destination['fragment'];  // removed
is the same as 
$options['fragment']='';
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.