如何为特定字段调用主题预处理功能?

sib*_*est 8 drupal task-parallel-library drupal-7

我在Drupal 7上,我有一个内容field_image的非特定tpl.php文件:"field - field_image.tpl.php".我需要为这个字段和我的主题创建一个预处理函数.

假设我的主题名称是"我的主题"

应该是这样的

function my_theme_preprocess_field(&$variables, $hook) {
  $variables['classes_array'][] = 'aClassName';
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我错了.但是哪里?

谢谢

Cli*_*ive 17

您可以使用template_preprocess_field()(就像您在上面的代码中所做的那样)但只是测试特定字段是否适合您:

function my_theme_preprocess_field(&$variables, $hook) {
  $element = $variables['element'];
  if (isset($element['#field_name'])) {
    if ($element['#field_name'] == 'field_image') {
      $variables['classes_array'][] = 'aClassName';
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

一旦你实现了钩子,不要忘记清除你的缓存,钩子实现被缓存在Drupal 7中,所以在清除缓存之前不会被拾取.