Ngăn Drupal viết lại # dưới dạng% 23 trong URL


7

Tôi có một lĩnh vực nơi tôi đang viết lại đầu ra, cắt xén nó và cung cấp một liên kết đọc thêm. Liên kết đọc thêm có chứa # bởi vì đó là một neo trang kích hoạt một hiệp ước lượt xem trên trang đích.

Lượt xem đang chuyển đổi ký tự # thành% 23 trong liên kết được hiển thị thực tế, đang phá vỡ liên kết.

Làm cách nào tôi có thể chuyển đổi lại thành ký tự # trong url?


Hơi liên quan: drupal.stackexchange.com/questions/21124/ . Tôi đã phải dùng đến tiền xử lý chế độ xem, tôi không thể làm cho nó hoạt động bằng UI
Clive

Câu trả lời:


3
function drupal_urlencode($text) {
  if (variable_get('clean_url', '0')) {
    return str_replace(array('%2F', '%3F', '%3D', '%26', '%2523'),
                       array('/', '?', '=', '&', '#'),
                       urlencode($text));
  }
  else {
    return str_replace('%2F', '/', urlencode($text));
  }
}

3

Vì vậy, đây là những gì chúng tôi thực sự đã làm, không cần tiền xử lý hoặc ghi đè. Cảm ơn Peter Bull tại Acquia vì sự giúp đỡ về điều này:

Chúng tôi đã xử lý việc này với một số trường Lượt xem bổ sung để viết lại HTML.

  1. Đã thêm một trường bổ sung cho mô tả thuật ngữ, giống hệt như cách bạn hiện có, ngoại trừ chọn "Loại trừ khỏi màn hình" và xóa "liên kết khác".

  2. Đã thay đổi thứ tự của các trường để trường mô tả thuật ngữ mới được tải trước trường hiện có.

  3. Đã chỉnh sửa trường mô tả thuật ngữ gốc. Kiểm tra "Viết lại đầu ra của trường này" và đặt mã thông báo cho trường mới vào vùng văn bản, sau đó nối thêm HTML cho liên kết của bạn. Vì vậy, bạn đang viết lại đầu ra HTML là:

[token-for-new-term-description-field] <a href="https://drupal.stackexchange.com/mypagewiththeview#training-block-[counter]" class="foo">more</a>

Sau đó, tôi loại bỏ các liên kết nhiều hơn như nó được bao gồm trong viết lại ở trên.

Cách giải quyết này sẽ duy trì đầu ra được cắt xén của trường mô tả và cho phép bạn hiển thị liên kết với ID bộ đếm thích hợp trong neo, mà không chạy đường dẫn đó qua l () và check_plain ().

Cũng cần thiết để thêm vào liên kết với / vì vậy nó là gốc liên quan. Vì nó không được thông qua mặc dù l () nó sẽ không tự động làm điều đó và nếu trang xem này có một đường dẫn không liên quan đến tài liệu bạn có thể nhận được các liên kết bị hỏng.

Wheeeee!


2
$url = l(t("title of your page"),"$link_url",array('fragment' => 'hash url without #'));

đối số đầu tiên là tiêu đề của trang của bạn

đối số thứ hai là $ link_url có nghĩa là ex. www.google.com.vn/link_url.

và cuối cùng là mảng phân đoạn trong mảng này, bạn có thể truyền liên kết bạn muốn vượt qua sau #

Ví dụ. http://domain.com/india#rajkot vì vậy bạn không cần phải sử dụng mã hóa hoặc giải mã bất kỳ chuyển đổi nào khác

cú pháp đầy đủ là

l(t('My Anchor Link'), '', array(
 'fragment' => ' ',
 'external' => TRUE,
 'attributes' => array(
 'title' => 'Title here.'
 ),
 ));
?>
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.