Шаблонизатор в opencart не что иное как... да нет его здесь вовсе! Самый обычный php-код, вот и все. Никаких smarty, twig и прочего.
Вместо шаблонизатора здесь работает примерно следующий механизм:
В контроллере происходит вызов метода $this->render(), при этом название шаблона береться из приватного свойства $this->template
Затем происходит распаковка из контроллера массива $this->data (читайте документацию про функцию php extract()
Сразу после подключается файл, который был указан в $this->template, вот так: DIR_TEMPLATE . $this->template, где DIR_TEMPLATE - путь к папке с шаблонами.
Интерпретатор выполняет весь код, который был внутри и затем html-результат выводится на экран
В чем особенности?
Когда мы в нашем контроллере добавляем данные в массив данных (например:
$this->data['foo'] = 'какой-то текст';
), то в представлении обращение к этой-же самой переменной происходит обычным
< ?php echo $foo; ?>
Вторая особенность - влаживание страниц. Благодаря $this->children в контроллере мы можем влаживать страницы одну в одну.
Как это работает? в родительском контроллере перечисляется список маршрутов:
затем по всем этим маршрутам вызываются соответсвующие контроллеры. Их содержжимое компилируется в готовую страницу (html-код) и возвращается родительскому контроллеру. После всех этих махинаций мы можем спокойно выводить скомпилированый html-код дочерних контроллеров (таблица соответсвий):