Index: branches/unlabeled/unlabeled-1.69.2/core/kernel/processors/main_processor.php =================================================================== diff -u -r8180 -r8248 --- branches/unlabeled/unlabeled-1.69.2/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 8180) +++ branches/unlabeled/unlabeled-1.69.2/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 8248) @@ -564,18 +564,23 @@ } $res = $BlockParser->ParseTemplate( $t, 1, $params, isset($params['is_silent']) ? 1 : 0 ); - + if ( !$BlockParser->DataExists && (isset($params['data_exists']) || isset($params['block_no_data'])) ) { if ($block_no_data = getArrayValue($params, 'block_no_data')) { - $res = $BlockParser->Parse( - $this->Application->TemplatesCache->GetTemplateBody($block_no_data, getArrayValue($params, 'is_silent') ), - $t - ); + if (isset($this->Application->PreParsedBlocks[$block_no_data]) ) { + // block_no_data is another block name + $res = $this->Application->ParseBlock(Array('name' => $block_no_data)); + } + else { + // block_no_data is template name (only looks through real templates) + $res = $BlockParser->ParseTemplate($block_no_data, 1, Array(), getArrayValue($params, 'is_silent')); + } } else { $res = ''; } } + $this->Application->Parser =& $parser; $this->Application->Parser->DataExists = $this->Application->Parser->DataExists || $BlockParser->DataExists; return $res;