Thay đổi hook_field_formatter_view?


11

Cách tốt nhất để thay đổi đầu ra trường là gì? Tôi đã tìm thấy " hook_field_formatter_view " nhưng dường như không có gì giống như "hook_field_formatter_view_alter". Trong trường hợp của tôi, tôi có các trường địa chỉ (mô-đun Địa chỉ) được sử dụng trong bảng "Giao hàng" và "Thanh toán" trên trang thanh toán của DrupalC Commerce . Tôi muốn thêm một số js vào các trường này, tốt nhất là sử dụng API biểu mẫu của Drupal "#attached"


JS mà bạn muốn thêm vào các trường này là gì?
saadlulu

plugin tự động hoàn thành jquery
volocuga

Câu trả lời:


9

Bạn có thể muốn thử thay đổi nó bằng chức năng tiền xử lý:

function example_preprocess_field(&$variables) {  
  $field_name = $variables['element']['#field_name'];  
  if ($field_name == 'field_example_field') {
    // Your code here.
  }
}

Tôi đã chạy thử nghiệm để sửa đổi các biến $ ['phần tử'] ['# đính kèm'] ['js'] nhưng Drupal không nhận ra các thay đổi đối với phần tử. Không chắc chắn lý do tại sao. Vì vậy, bạn có thể phải sử dụng drupal_add_js.


5

Các hook_field_formatter_view()quy định bởi cấu hình hiển thị được gọi field_default_view(), mà là chính nó được gọi là (một hoặc hai lớp dưới nó) bởi field_attach_view().

Bạn có thể thấy từ liên kết thứ hai mà điều này gọi hook_field_attach_view_alter()sau khi kết thúc với các trình định dạng trường:

drupal_alter('field_attach_view', $output, $context);

vì vậy bạn sẽ có thể xác định móc đó.

Tuy nhiên, lưu ý rằng bạn sẽ phải tìm lại trường trên thực thể, vì nó chạy hook cho toàn bộ mảng kết xuất, không chỉ đơn giản là mảng kết xuất cho một trường. Nhưng móc ví dụ được liên kết ở trên đưa ra một ví dụ về cách làm điều đó.

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.