diff --git a/entityreference.module b/entityreference.module index bdcb562..3cf6488 100644 --- a/entityreference.module +++ b/entityreference.module @@ -1255,7 +1255,31 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in break; case 'entityreference_entity_view': + // Initialize circular rendering check + static $recursive = array(); + // Add current entity. + if (empty($recursive)) { + $wrapper = entity_metadata_wrapper($entity_type, $entity); + $recursive[] = array( + 'type' => $entity_type, + 'id' => $wrapper->getIdentifier(), + ); + unset ($wrapper); + } foreach ($items as $delta => $item) { + // Check circular rendering. + foreach ($recursive as $previous) { + // If found, don't add this item to the view. + if ($previous['type'] == $field['settings']['target_type'] && $previous['id'] == $item['target_id']) { + continue 2; + } + else { + $recursive[] = array( + 'type' => $field['settings']['target_type'], + 'id' => $item['target_id'], + ); + } + } // Protect ourselves from recursive rendering. static $depth = 0; $depth++;