diff --git a/libs/sysplugins/smarty_internal_compile_include.php b/libs/sysplugins/smarty_internal_compile_include.php index 4a9cb451..5ffa8eda 100644 --- a/libs/sysplugins/smarty_internal_compile_include.php +++ b/libs/sysplugins/smarty_internal_compile_include.php @@ -110,7 +110,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase // must use individual cache file $_attr['caching'] = 1; } - if ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes && $_attr['inline'] !== true) { + if ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes && $_attr['inline'] !== true) { $compiler->trigger_template_error(' variable template file names not allow within {block} tags'); } } @@ -124,13 +124,12 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase // must use individual cache file $_attr['caching'] = 1; } - if ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes && $_attr['inline'] !== true) { + if ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes && $_attr['inline'] !== true) { $compiler->trigger_template_error(' variable compile_id not allow within {block} tags'); } } } - /* * if the {include} tag provides individual parameter for caching or compile_id * the subtemplate must not be included into the common cache file and is treated like @@ -197,9 +196,9 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase // make sure whole chain gets compiled $tpl->mustCompile = true; if (!($tpl->source->uncompiled) && $tpl->source->exists) { - + $tpl->compiler->suppressTemplatePropertyHeader = true; // get compiled code - $compiled_code = $tpl->compiler->compileTemplate($tpl, null, $compiler->parent_compiler); + $compiled_code = Smarty_Internal_Extension_CodeFrame::createFunctionFrame($tpl, $tpl->compiler->compileTemplate($tpl, null, $compiler->parent_compiler)); $compiler->parent_compiler->mergedSubTemplatesData[$tpl_name][$uid]['nocache_hash'] = $tpl->properties['nocache_hash']; unset($tpl->compiler); diff --git a/libs/sysplugins/smarty_internal_extension_codeframe.php b/libs/sysplugins/smarty_internal_extension_codeframe.php index 34d5df76..793c2fce 100644 --- a/libs/sysplugins/smarty_internal_extension_codeframe.php +++ b/libs/sysplugins/smarty_internal_extension_codeframe.php @@ -73,4 +73,19 @@ class Smarty_Internal_Extension_CodeFrame $output .= ""; return $output; } + + public static function createFunctionFrame(Smarty_Internal_Template $_template, $content = '') + { + if (!isset($_template->properties['unifunc'])) { + $_template->properties['unifunc'] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true)); + } + $output = "properties['nocache_hash']}%%*/\n"; + $output .= "function {$_template->properties['unifunc']} (\$_smarty_tpl) {\n"; + $output .= "?>\n" . $content; + $output .= "properties['nocache_hash']}%%*/\n"; + $output .= "}\n?>"; + return $output; + } } \ No newline at end of file