diff --git a/field_collection.module b/field_collection.module index fe9911c..a283169 100644 --- a/field_collection.module +++ b/field_collection.module @@ -581,6 +581,8 @@ function field_collection_field_info() { // Add entity property info. 'property_type' => 'field_collection_item', 'property_callbacks' => array('field_collection_entity_metadata_property_callback'), + // Enable microdata output. + 'microdata' => TRUE, ), ); } @@ -849,6 +851,15 @@ function field_collection_field_formatter_view($entity_type, $entity, $field, $i case 'field_collection_view': + $add_microdata = module_exists('microdata'); + if ($add_microdata) { + // Get the itemprop that would be placed on the field wrapper and + // instead place it using the formatter. It is required that all the + // microdata attributes for the item be placed in the same tag. + $field_itemprop = $entity->microdata[$field['field_name']]['#attributes']; + $entity->microdata[$field['field_name']]['#attributes'] = array(); + } + $element['#attached']['css'][] = drupal_get_path('module', 'field_collection') . '/field_collection.theme.css'; $view_mode = !empty($display['settings']['view_mode']) ? $display['settings']['view_mode'] : 'full'; foreach ($items as $delta => $item) { @@ -858,6 +869,9 @@ function field_collection_field_formatter_view($entity_type, $entity, $field, $i $element[$delta]['#attributes']['class'][] = 'field-collection-view'; $element[$delta]['#attributes']['class'][] = 'clearfix'; $element[$delta]['#attributes']['class'][] = drupal_clean_css_identifier('view-mode-' . $view_mode); + if ($add_microdata) { + $element[$delta]['#attributes'] = array_merge($element[$delta]['#attributes'], $field_itemprop, $field_collection->microdata['#attributes']); + } $links = array( '#theme' => 'links__field_collection_view',