
Логика OpenCart Layouts
Что такое макеты OpenCart?
Макеты OpenCart — это динамический способ отображения расширений на OpenCart Frontend. Это очень гибкая функция и краеугольный камень OpenCart CMS, однако многие пользователи плохо понимают, как она работает.
Каждая страница, которую вы открываете в магазине OpenCart, привязана к макету. Каждый макет определяет 4 возможных положения, в которых вы можете разместить модуль. Это означает, что вы можете разместить модуль «Категории» только на макете категорий в позиции «левая колонка».
OpenCart имеет 2 типа страниц:
- Статические страницы (например, домашняя страница с маршрутом общий/домашний)
- Динамические страницы (например, страница категории с маршрутом продукта/категории)

Вы также можете определить собственный макет для динамической страницы через панель администратора. Разница между статическими и динамическими страницами заключается в том, что вы можете генерировать неограниченное количество динамических страниц и редактировать содержимое динамических страниц через панель администратора.
Что такое позиции OpenCart?
Прежде чем погрузиться в макеты, нам сначала нужно узнать о позициях.

OpenCart позволяет пользователям отображать модули в 4 жестко запрограммированных позициях: вверху содержимого, внизу содержимого, столбце слева и столбце справа.
Существуют сторонние расширения, которые позволят вам увеличить количество позиций, например Extra Positions Unlimited .
На эти позиции можно размещать только модули типа Extensions.
Как работают макеты OpenCart?
Итак, теперь вы знаете, что такое макеты и позиции OpenCart, и как они на самом деле работают.

Поскольку OpenCart представляет собой структуру шаблонов MVC, controllerдля каждой позиции существует файл. Вы можете найти эти файлы в папке catalog/controller/common. Каждый файл контроллера положения выполняет следующие действия:
- Он проверяет, на какой странице находится посетитель, и подтягивает подключенный макет к этой странице.
- Затем он вытягивает список всех модулей расширения, которые подключены к этой текущей раскладке, и отфильтровывает только те, которые подключены к текущей позиции.
- Получив список всех модулей, он сортирует их и отображает во внешнем интерфейсе.
Примерно такая идея лежит в основе макетов и позиций OpenCart. Если бы там не было раскладок, вы бы увидели одинаковые расширения на всех позициях. Например, в WordPress нет динамических макетов, и когда вы размещаете виджет в нужной позиции, он отображается на всех страницах. Чтобы решить эту проблему, WordPress позволяет разработчикам создавать отдельные файлы для поста или страницы и просто удалять или добавлять код для соответствующих позиций.
Код и логика OpenCart Layouts?
Хотите точно знать, как работает код макета OpenCart? Действительно? Вот оно.

- В файле контроллера положения (например
catalog/controller/common/column_left.php) - Далее
line 14 through 32мы сравниваем параметр маршрута, чтобы определить одну из трех динамических страниц. - Если к динамической странице не подключен макет, эта страница рассматривается как статическая страница, и
line 34параметр маршрута используется для поиска подключенного макета для этой статической страницы. - Если к этой статической странице не подключен макет,
line 38код возвращается к макету по умолчанию, который определен вsystem/settingsмагазине. (обычно "По умолчанию") - Теперь, когда макет определен, он используется для извлечения всех модулей, подключенных к этому макету, и в
line 46конечном итоге отображается во внешнем интерфейсе.