Làm thế nào để bao gồm hàm băm (#) trong đường dẫn drupal_goto?


12

Có cách nào để đưa # vào drupal_goto không?

tôi muốn một cái gì đó như thế này

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

Câu trả lời:


18

Đối với Drupal 6,

Nó phải là tham số thứ 3

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

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

Đối với Drupal 7

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

đối với ví dụ D7, bạn có thể sử dụng bất kỳ tham số nào mà hàm url () hỗ trợ ... chẳng hạn như thông số URL.
— AyeshK

7

Trong Drupal 6 drupal_goto sử dụng tham số thứ ba của nó để phân mảnh. Nếu bạn muốn tạo url như các sản phẩm # 345, bạn nên chuyển đoạn đó làm đối số thứ ba trong hàm drupal_goto.

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

Trong Drupal 7, bạn nên chuyển đoạn dưới dạng cặp giá trị chính của mảng trên tham số thứ hai của hàm drupal_goto.

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

Cả hai điều trên sẽ tạo ra một url như các sản phẩm # 123, trong đó 123 là giá trị của biến $ node-> nid.


2

Điều này cũng làm việc cho tôi trong Drupal 7

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

0

drupal_goto mất #zzz nếu có? Destination = foobar # zzz, vì điều này không bao giờ được trả lại bởi $ _SERVER, hãy xóa dòng này vì không có gì ngoài việc phá vỡ nội dung:

//$options['fragment'] = $destination['fragment'];  // removed
is the same as 
$options['fragment']='';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.