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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.