Có thể định nghĩa hàm hook_pre process dựa trên loại thực thể như profile2 không?


8

Tôi đã đi qua các móc có thể bằng cách sử dụng chức năng hook_preprocess(&$vars, $hook)và chỉ có thực thể có sẵn để sử dụng. Có thể làm một cái gì đó như hook_preprocess_profile2_entity(), hoặc tôi phải viết một điều kiện if để kiểm tra loại thực thể trong hook_preprocess_entity()?

Câu trả lời:


15

Điều này điều chỉnh mẫu chủ đề Zen cho các chức năng tiền xử lý nút cho các thực thể:

<?php

/**
 * Implements template_preprocess_entity().
 *
 * Runs a entity specific preprocess function, if it exists.
 */
function MYTHEME_preprocess_entity(&$variables, $hook) {
  $function = __FUNCTION__ . '_' . $variables['entity_type'];
  if (function_exists($function)) {
    $function($variables, $hook);
  }
}

/**
 * Profile2 specific implementation of template_preprocess_entity().
 */
function MYTHEME_preprocess_entity_profile2(&$variables, $hook) {
}

/**
 * Field Collection specific implementation of template_preprocess_entity().
 */
function MYTHEME_preprocess_entity_field_collection_item(&$variables, $hook) {
}

Điều này thật tuyệt. Tôi luôn quên rằng PHP cho phép bạn làm những thứ như thế này.
mpdon Arena

Nếu bạn muốn làm điều đó trong một chủ đề chính và kế thừa / ghi đè, thì bạn sẽ phải tìm hiểu sâu hơn về hook_theme. Hook'theme của Zen là một ví dụ điển hình (mặc dù dài).
Capi Etheriel

Tôi sẽ biết ơn nếu ai đó chỉ cho tôi cách tôi có thể đạt được thứ gì đó tương tự bên ngoài lớp chủ đề! Lái xe cho tôi ...
NikLP
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.