Index: branches/RC/core/kernel/db/db_tag_processor.php =================================================================== diff -u -N -r11685 -r11692 --- branches/RC/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 11685) +++ branches/RC/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 11692) @@ -2436,6 +2436,12 @@ { $check_field = $params['field']; $fields = $this->Application->getUnitOption($this->Prefix, 'Fields'); + + if (!array_key_exists($check_field, $fields)) { + // field not found in real fields array -> it's 100% virtual then + $fields = $this->Application->getUnitOption($this->Prefix, 'VirtualFields'); + } + $show_mode = array_key_exists('show_mode', $fields[$check_field]) ? $fields[$check_field]['show_mode'] : true; if ($show_mode === smDEBUG) { @@ -2457,12 +2463,20 @@ return true; } - $fields = $this->Application->getUnitOption($this->Prefix, 'Fields'); $check_fields = explode(',', $params['fields']); + $fields = $this->Application->getUnitOption($this->Prefix, 'Fields'); + $virtual_fields = $this->Application->getUnitOption($this->Prefix, 'VirtualFields'); foreach ($check_fields as $check_field) { // when at least one field in subsection is visible, then subsection is visible too - $show_mode = array_key_exists('show_mode', $fields[$check_field]) ? $fields[$check_field]['show_mode'] : true; + + if (array_key_exists($check_field, $fields)) { + $show_mode = array_key_exists('show_mode', $fields[$check_field]) ? $fields[$check_field]['show_mode'] : true; + } + else { + $show_mode = array_key_exists('show_mode', $virtual_fields[$check_field]) ? $virtual_fields[$check_field]['show_mode'] : true; + } + if (($show_mode === true) || (($show_mode === smDEBUG) && (defined('DEBUG_MODE') && DEBUG_MODE))) { // field is visible return true;