it-swarm-vi.com

Làm thế nào để cung cấp mẫu cho chế độ xem cụ thể?

Tôi muốn chủ đề chế độ xem kết quả tìm kiếm với một mẫu.

Tôi đã nghĩ rằng việc đặt tên một nút tệp mẫu - bài viết - search-result.tpl.php sẽ thực hiện thủ thuật, nhưng rõ ràng là tôi đã sai về điều đó.

Tôi nhận ra rằng tôi có thể thực hiện nút - article.tpl.php và trong kiểm tra này $ view_mode, nhưng điều này thật khó xử với tất cả các chế độ xem khác mà tôi không muốn tạo mẫu.

Ý tưởng?

47
artfulrobot

Thêm đề xuất móc chủ đề trong chức năng tiền xử lý nút sẽ thực hiện thủ thuật:

function MYMODULE_preprocess_node(&$vars) {
  if ($vars['node']->type == 'article' && $vars['view_mode'] == 'search_result') {
    $vars['theme_hook_suggestions'][] = 'node__article__search_result';
  }
}

Sau khi xóa bộ nhớ cache, bạn sẽ có thể sử dụng nút - bài viết - search-result.tpl.php cho tên tệp mẫu của bạn.

Lưu ý Bạn cũng có thể làm điều này trong tệp template.php của chủ đề bằng cách gọi hàm MYTHEME_preprocess_node() thay vào đó.

46
Clive

Mô-đun Chế độ xem thực thể tự động thêm các đề xuất mẫu này

Drupal 7 kế tiếp Chế độ xây dựng sẽ cho phép quản trị viên xác định chế độ xem tùy chỉnh cho các thực thể. Các thực thể tùy chỉnh được thêm vào sổ đăng ký thực thể thông qua hook_entity_info_alter () có sẵn cho bất kỳ mã nào sử dụng entity_get_info () để cung cấp danh sách các chế độ xem cho một thực thể. Điều này bao gồm các trường tham chiếu nút và người dùng, Chế độ xem, v.v.

3
Bas

Đây là một chức năng cho phép bạn thêm những cái mới một cách linh hoạt. Nó cũng gọi hàm tiền xử lý tương ứng nếu bạn có một khai báo.

Sau đó gọi drush cache-clear theme-registry Để nó hoạt động.

Để sử dụng nó thay thế THEME bằng tên chủ đề của bạn và đặt nó trong tệp tin template.php của chủ đề.

ví dụ. Đối với một chủ đề có tên Droid, bạn sẽ gọi nó là droid_preprocess_node(&$variables, $hook) {...

function THEME_preprocess_node(&$variables, $hook) {
  $view_mode = $variables['view_mode'];
  $content_type = $variables['type'];
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode;
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode . '_' . $content_type;

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode . '_' . $content_type;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }
}
2
Elijah Lynn