Index: trunk/core/kernel/db/db_tag_processor.php =================================================================== diff -u -N -r8369 -r8374 --- trunk/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 8369) +++ trunk/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 8374) @@ -874,7 +874,8 @@ $type = $params['type']; unset($params['type']); // remove parameters used only by current tag - + + $ret = ''; switch ($type) { case 'current': $ret = $object->Page; Index: trunk/core/kernel/parser/tags.php =================================================================== diff -u -N -r7635 -r8374 --- trunk/core/kernel/parser/tags.php (.../tags.php) (revision 7635) +++ trunk/core/kernel/parser/tags.php (.../tags.php) (revision 8374) @@ -333,22 +333,19 @@ $code[] = ' }'; } else { - - $check = $this->GetParam('check'); + $check = isset($pass_params['check']) && $pass_params['check'] ? $pass_params['check'] : false; // $this->GetParam('check'); if ($check) { if (strpos($check, '_') !== false) { list($prefix, $function) = explode('_', $check, 2); } else { $function = $check; - $prefix = '$PrefixSpecial'; - -// $prefix = $this->Parser->GetParam('PrefixSpecial'); + $prefix = '$PrefixSpecial'; // $this->Parser->GetParam('PrefixSpecial'); } } else { - $prefix = $this->GetParam('prefix'); - $function = $this->GetParam('function'); + $prefix = $pass_params['prefix']; // $this->GetParam('prefix'); + $function = $pass_params['function']; // $this->GetParam('function'); } $code[] = '$tmp = $application->processPrefix("'.$prefix.'");'."\n"; Index: trunk/core/kernel/processors/main_processor.php =================================================================== diff -u -N -r8358 -r8374 --- trunk/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 8358) +++ trunk/core/kernel/processors/main_processor.php (.../main_processor.php) (revision 8374) @@ -582,7 +582,7 @@ $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 (!$BlockParser->DataExists && ((isset($params['data_exists']) && $params['data_exists']) || isset($params['block_no_data']))) { if ($block_no_data = getArrayValue($params, 'block_no_data')) { if (isset($this->Application->PreParsedBlocks[$block_no_data]) ) { // block_no_data is another block name @@ -720,17 +720,21 @@ if (isset($params['design']) && $params['design']) { $block_name = $params['name']; if ($block_name != '__this__') { - $block_params['name'] = $block_name; - $block_params['content'] = $this->MyInclude( Array('template' => $params['name'], 'return_params' => 1, 'strip_nl' => 2) ); + // prepare content + $block_params = $params; + $block_params['template'] = $block_name; + $block_params['return_params'] = 1; + $block_params['strip_nl'] = 2; + $block_content = $this->MyInclude($block_params); - if ( !$this->Application->Parser->DataExists && (isset($params['data_exists']) || isset($params['block_no_data'])) ) { - if ($block_no_data = getArrayValue($params, 'block_no_data')) { - $block_params['content'] = $this->MyInclude(Array('template' => $block_no_data)); - } - else { - return ''; - } + if (isset($params['data_exists']) && $params['data_exists'] && !$block_content) { + return ''; } + + // prepare design + $block_params = Array ( + 'content' => $block_content, + ); } $block_params['name'] = $params['design'];