if ($count == 0) {
$result[] = array(
'name' => $tag[1][0],
+ 'block_start' => $tag[0][1],
'start' => $tag[1][1] + strlen($tag[1][0]) + 1,
);
}
} elseif (substr($text, 0, 7) === '{/block') {
$count--;
if ($count == 0) {
+ $result[count($result)-1]['block_finish'] = $tag[0][1] + strlen($text);
$result[count($result)-1]['finish'] = $tag[0][1];
}
}
$this->compileBlocks(); //It will recurse to the base template.
} else {
// Replace the current blocks by a place holder
- if ($cnt) {
- $this->templateContent = preg_replace("!{block\s(\S+?)}(.*?){/block}!s", "{block $1}", $tplcontent, -1);
+ $start = 0;
+ $content = '';
+ foreach ($blocks as $block) {
+ $content .= substr($this->templateContent, $start, $block['block_start'] - $start);
+ $start = $block['block_finish'];
+
+ $blockName = $block['name'];
+ $content .= "{block $blockName}";
}
+ $content .= substr($this->templateContent, $start);
+
+ $this->templateContent = $content;
}
}