cái móc để tiền xử lý một cái nhìn là gì?


7

Điều gì hoặc có một cái móc mà bạn có thể sử dụng ngay trước khi hiển thị kết quả cho mẫu php?

Ngoài ra, điều này có nghĩa là thay đổi kết quả xem thực hành xấu? Tôi đang cố gắng tránh sử dụng trường php xem.

Câu trả lời:


11

Bạn có thể sử dụng một cái gì đó dọc theo dòng này:

MYMODULE_views_pre_render(&$view) {

  if ($view->name=='NAMEOFTHEVIEW') {

    foreach($view->result as $r => $result) {
      // do whatever you want with each "row"
    }

  }

  // other views might go here

}

và điều này chắc chắn KHÔNG phải là một thực tiễn tồi, và, ít nhất là IMHO, vượt trội hơn nhiều so với các trường php trong chính khung nhìn.


Tôi đã thực hiện hook này và nó thực thi gọi hàm này và đi đến dòng khai báo hàm. Nhưng nó không đi vào bên trong chức năng. Điều gì có thể là vấn đề?
cissharp

1
Trong hook_views_pre_render()bạn không nhận được các hàng dưới dạng mảng kết xuất, trong nhiều trường hợp, điều này sẽ rất hữu ích.
CamilB

8

Vì vậy, theo thiết kế, mỗi hook chủ đề duy nhất được xác định bởi hook_themesẽ có một hàm tiền xử lý được gọi cho nó. Thủ thuật với Views là biết tất cả những thứ đó thực sự là gì.

Để có được định nghĩa về mọi móc chủ đề Lượt xem có sẵn cho trang web hiện tại của bạn, bạn sẽ cần phải say sưa, nhưng bạn có thể làm như sau:

drush @alias php-eval "var_dump(array_keys(views_theme()));"

Điều đó sẽ nhổ trở lại mọi móc chủ đề được xác định cho Lượt xem trên trang web hiện tại. Đối với tôi, nó trả lại như sau:

array(35) {
  [0] =>
  string(16) "views_mini_pager"
  [1] =>
  string(16) "views_view_field"
  [2] =>
  string(19) "views_view_grouping"
  [3] =>
  string(10) "views_view"
  [4] =>
  string(22) "views_view_unformatted"
  [5] =>
  string(17) "views_data_export"
  [6] =>
  string(28) "views_data_export_csv_header"
  [7] =>
  string(26) "views_data_export_csv_body"
  [8] =>
  string(28) "views_data_export_csv_footer"
  [9] =>
  string(28) "views_data_export_doc_header"
  [10] =>
  string(26) "views_data_export_doc_body"
  [11] =>
  string(28) "views_data_export_doc_footer"
  [12] =>
  string(28) "views_data_export_txt_header"
  [13] =>
  string(26) "views_data_export_txt_body"
  [14] =>
  string(28) "views_data_export_txt_footer"
  [15] =>
  string(28) "views_data_export_xls_header"
  [16] =>
  string(26) "views_data_export_xls_body"
  [17] =>
  string(28) "views_data_export_xls_footer"
  [18] =>
  string(28) "views_data_export_xml_header"
  [19] =>
  string(26) "views_data_export_xml_body"
  [20] =>
  string(28) "views_data_export_xml_footer"
  [21] =>
  string(14) "views_view_raw"
  [22] =>
  string(15) "views_view_list"
  [23] =>
  string(15) "views_view_grid"
  [24] =>
  string(16) "views_view_table"
  [25] =>
  string(18) "views_view_summary"
  [26] =>
  string(30) "views_view_summary_unformatted"
  [27] =>
  string(14) "views_view_rss"
  [28] =>
  string(28) "views_view_summary_jump_menu"
  [29] =>
  string(20) "views_view_jump_menu"
  [30] =>
  string(17) "views_view_fields"
  [31] =>
  string(18) "views_view_row_rss"
  [32] =>
  string(21) "views_form_views_form"
  [33] =>
  string(18) "views_exposed_form"
  [34] =>
  string(10) "views_more"
}

Vì vậy, trong trường hợp của tôi, tôi cần thêm một số dữ liệu hàng bổ sung vào view_data_export_xml_body. Vì vậy, tôi đã định nghĩa như sau trong mô-đun của mình:

function my_module_preprocess_views_data_export_xml_body(&$vars) {
  $vars['themed_rows'][0]['item_1'] = 'whatever';
}

Đây không phải là một ví dụ thực tế nhưng nó thể hiện cách khám phá, xác định và triển khai chức năng tiền xử lý cho bất kỳ hook chủ đề Lượt xem nào. Hi vọng điêu nay co ich.


6

Tôi thích trang này: Cuộc sống của một góc nhìn

Lượt xem là một mô-đun tuyệt vời không chỉ vì giao diện người dùng của nó để tạo truy vấn mà còn cung cấp các móc nối toàn diện.

Đôi khi những cái móc này gây nhầm lẫn cho người mới bắt đầu với trình tự của họ.

Dưới đây là trình tự xử lý của các móc này để thuận tiện cho bạn.


4

Nó phụ thuộc vào những gì bạn muốn làm. May mắn thay, tất cả các chức năng lượt xem hiện nằm trong Tài liệu tham khảo API Drupal .

Có hai nhóm mà bạn muốn xem xét. Có những cái móc xem . Chúng được sử dụng để gây rối với $viewđối tượng tại các điểm khác nhau trong quá trình xây dựng xem. Các tài liệu không phải là tuyệt vời. Đôi khi bạn có thể đoán từ tên về những gì bạn có thể làm, nhưng thông thường, bạn phải dpm($view), xem những gì ở đó và thử các công cụ trong các móc khác nhau. Nếu bạn muốn thay đổi cách một khung nhìn hoạt động, hãy sử dụng một cái móc.

Sau đó là các chức năng tiền xử lýquy trình . Giống như phần còn lại của Drupal, những cái này khớp với từng tệp một với các tệp mẫu xem. Nếu bạn muốn thay đổi cách hiển thị chế độ xem, thì hãy sử dụng một trong các chế độ xem này.

Tôi không nghĩ thay đổi hành vi xem bằng móc là một ý tưởng tồi cả. Nói chung, tôi cố gắng tránh mã PHP trong cấu hình UI bằng mọi giá.


1

Bạn đang tìm hook_view_pre numnder () . Tất cả các hook khung nhìn được xác định trong view.api.php và đáng để đọc qua nếu bạn có kế hoạch thay đổi bất cứ điều gì trong quá trình xây dựng truy vấn và / hoặc quá trình kết xuất.

Câu trả lời của Gregory cũng có một liên kết tốt phác thảo thứ tự của các cuộc gọi hook.

Tuy nhiên, hãy chắc chắn rằng bất cứ điều gì bạn cần làm thực sự cần phải được xử lý thông qua hook hook với Lượt xem 3.x, hầu hết những gì tôi cần làm, đánh dấu khôn ngoan, có thể dễ dàng đạt được thông qua Giao diện người dùng.

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.