Не понимаю я Даниеля, зачем он каждый раз высчитывает $layout_id, везде где только можно (catalog/controller/common/*), этим самым он делает кучу лишних, не нужных запросов MySQL.
Например...class ControllerCommonContentTop и т п
Ну неужели нельзя было один раз в самом начале высчитать layout_id, или он как-то измениться :)
Потом его $this->config->set('document_layout_id', $layout_id);
И всё, бери его в любом месте, без постоянного "высчитывания" и лишних запросов к БД.
И Layouts это основа и философия opencart.
Кто-то объяснит, что он замутил. Или это очередной "индийский код".
Склоняюсь к последнему.
P.S. Разработал я observer классов. В данном случаи разработка фитчи для для того чтобы можно было повесить например модуль на все layouts выбрав всего один layout (например All) или выбор "чекером"
Без vqmod, без изменения файлов opencart, причем не мешая работе vqmod, т.е. без замены стандартных классов, они свою работу выполняют.
Пример здесь