diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module index 7210a58..bdf58b9 100644 --- a/modules/product_reference/commerce_product_reference.module +++ b/modules/product_reference/commerce_product_reference.module @@ -60,9 +60,16 @@ function commerce_product_reference_field_extra_fields() { } } - // Do the same for fields on products that may be visible on the bundle. - foreach (field_info_instances('commerce_product') as $product_bundle_name => $product_fields) { - foreach ($product_fields as $product_field_name => $product_field) { + // Referenceable product types for the field instance + $field_instance = field_info_instance($entity_type, $field_name, $bundle_name); + $product_types = array_filter($field_instance['settings']['referenceable_types']); + if (empty($product_types)) { + // No product types specified to be referenced. Use all product types. + $product_types = array_keys($field_instance['settings']['referenceable_types']); + } + foreach ($product_types as $product_type) { + // Do the same for fields on products that may be visible on the bundle. + foreach (field_info_instances('commerce_product', $product_type) as $product_field_name => $product_field) { $extra[$entity_type][$bundle_name]['display']['product:' . $product_field_name] = array( 'label' => t('Product: @label', array('@label' => $product_field['label'])), 'description' => t('Field from a referenced product.'),