| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 3.1.3"
- New tags for inheritance parent and chilD
- {parent} == {$smarty.block.parent}
- {child} == {$smarty.block.child}
- Both tags support the assign attribute like
- {child assign=foo}
- 3.1.31
- New tags for inheritance parent and child
- {block_parent} == {$smarty.block.parent}
- {block_child} == {$smarty.block.child}
- Since 3.1.28 you can mix inheritance by extends resource with the {extends} tag.
- A template called by extends resource can extend a subtemplate or chain buy the {extends} tag.
- Since 3.1.31 this feature can be turned off by setting the new Smarty property Smarty::$extends_recursion to false.
- 3.1.28
- Starting with version 3.1.28 template inheritance is no longer a compile time process.
- All {block} tag parent/child relations are resolved at run time.
- This does resolve all known existing restrictions (see below).
- The $smarty::$inheritance_merge_compiled_includes property has been removed.
- Any access to it is ignored.
- New features:
- Any code outside root {block} tags in child templates is now executed but any output will be ignored.
- {extends 'foo.tpl'}
- {$bar = 'on'} // assigns variable $bar seen in parent templates
- {block 'buh'}{/block}
- {extends 'foo.tpl'}
- {$bar} // the output of variable bar is ignored
- {block 'buh'}{/block}
- {block} tags can be dynamically en/disabled by conditions.
- {block 'root'}
- {if $foo}
- {block 'v1'}
- ....
- {/block}
- {else}
- {block 'v1'}
- ....
- {/block}
- {/if}
- {/block}
- {block} tags can have variable names.
- {block $foo}
- ....
- {/block}
- Starting with 3.1.28 you can mix inheritance by extends resource with the {extends} tag.
- A template called by extends resource can extend a subtemplate or chain buy the {extends} tag.
- NOTE There is a BC break. If you used the extends resource {extends} tags have been ignored.
- THE FOLLOWING RESTRICTIONS ARE NO LONGER EXISTING:
- In Smarty 3.1 template inheritance is a compile time process. All the extending of {block} tags
- is done at compile time and the parent and child templates are compiled in a single compiled template.
- {include} subtemplate could also {block} tags. Such subtemplate could not compiled by it's own because
- it could be used in other context where the {block} extended with a different result. For that reasion
- the compiled code of {include} subtemplates gets also merged in compiled inheritance template.
- Merging the code into a single compile template has some drawbacks.
- 1. You could not use variable file names in {include} Smarty would use the {include} of compilation time.
- 2. You could not use individual compile_id in {include}
- 3. Separate caching of subtemplate was not possible
- 4. Any change of the template directory structure between calls was not necessarily seen.
- Starting with 3.1.15 some of the above conditions got checked and resulted in an exception. It turned out
- that a couple of users did use some of above and now got exceptions.
- To resolve this starting with 3.1.16 there is a new configuration parameter $inheritance_merge_compiled_includes.
- For most backward compatibility its default setting is true.
- With this setting all {include} subtemplate will be merge into the compiled inheritance template, but the above cases
- could be rejected by exception.
- If $smarty->inheritance_merge_compiled_includes = false; {include} subtemplate will not be merged.You must now manually merge all {include} subtemplate which do contain {block} tags. This is done by setting the "inline" option.
- {include file='foo.bar' inline}
- 1. In case of a variable file name like {include file=$foo inline} you must use the variable in a compile_id $smarty->compile_id = $foo;
- 2. If you use individual compile_id in {include file='foo.tpl' compile_id=$bar inline} it must be used in the global compile_id as well $smarty->compile_id = $bar;
- 3. If call templates with different template_dir configurations and a parent could same named child template from different folders
- you must make the folder name part of the compile_id.
|