Как проверить, прикреплено ли к бандлу поле

Функция проверяет — прикреплено ли поле типа $field_type к бандлу $bundle сущности $entity (все аргументы — строки, не объекты).

function _mymodule_check_bundle_for_field($entity, $bundle, $field_type) {
  $instances = field_info_instances($entity);
  $fields = array_keys(field_read_fields(array('type' => $field_type)));
  foreach ($instances as $instance => $names) {
    $field_names = array_intersect(array_keys($names), $fields);
    if (!empty($field_names)) {
      $bundles[] = $instance;
    }
  }
  return in_array($bundle, $bundles);
}

Как заметили в комментах, более правильно после выхода версии 7.22 вызывать

field_info_instances($entity, $bundle);

Сохраню на память.

Комментарии