Inheritance algorithm ===================== Variant #1. Sunny. | level.2.tpl | b1 | add new block | `$tpl->block['b1'] = $content;` | level.2.tpl | b1 | rewrite block | `$tpl->block['b1'] = $content;` | level.1.tpl | b1 | skip because block exists | `if(!isset($tpl->block['b1'])) $tpl->block['b1'] = $content;` | use.tpl | b1 | skip because block exists | `if(!isset($tpl->block['b1'])) $tpl->block['b1'] = $content;` | use.tpl | b2 | add new block | `$tpl->block['b2'] = $content;` | level.1.tpl | b2 | rewrite block | `$tpl->block['b2'] = $content;` | parent.tpl | b1 | get block from stack | parent.tpl | b2 | get block from stack | parent.tpl | b3 | get own block ------Result-------- | level.2.tpl | b1 | | level.1.tpl | b2 | Variant #2. Сloudy. | level.2.tpl | b1 | add new block | level.1.tpl | b1 | skip because block exists | use.tpl | b1 | skip because block exists | use.tpl | b2 | add new block | level.1.tpl | b2 | rewrite block | $parent | b1 | dynamic extend ------Result-------- | level.2.tpl | b1 | | level.1.tpl | b2 | Variant #3. Rain. Variant #4. Tornado.