PrestaShop инструкция для разработчиков

Мне нравится работать с PrestaShop, т.к она имеет современную и логичную структуру. Достигается это за счёт использования Model-View-Controller (MVC), подхода столь популярного сегодня.
В рамках данной темы будет написано несколько инструкций. Конечно если Вы не знаете основ ООП, то лучше начать с изучения теории и для начала просто установить PrestaShop, по инструкции опубликованной на моём блоге wp.clean.
В PrestaShop файлы относящиеся модели (классы) расположены в папке /classes, представление в подпапке /themes, а контнроллеры в /controllers. Файлы в корневой директории необходимы для вызова одноимённого контроллера (это сделано для совместимости с версией 1.3).

В начале каждого файла класса или контроллера есть комментарий, в котором сообщается, что изменение этих файлов делает не возможным дальнейшее обновление системы. Но почему то многими разработчиками этот факт игнорируется (часто обращаются клиенты с просьбой доделать тот или иной функционал, т.к предыдущий «специалист» не справился, часто приходишь в ужас от того как в процессе изобретения велосипедов изощряются горе-разработчики). Чтобы изменить или дописать функционал PrestaShop необходимо использовать волшебную папочку /override, выполнив этот не сложный шаг вы оставляете клиенту возможность получать обновление системы без потери дополнительного функционала. Кстати в папку /modules, для системных модулей обновления вносить тоже нельзя, для этого следует скопировать шаблон модуля в свою тему, например, themes/myshop/modules/blockuserinfo/blockuserinfo.tpl. А не создавать в корневой /modules, новый модуль, например, modules/blockuserinfo2/blockuserinfo.tpl, как делают некоторые начинающие разработчики.
Отображение — Вид — Views
Эта наиболее часто меняемая часть, т.к ни один нормальный магазин не запускают на дефолтном шаблоне. Поэтому и вопросов больше всего возникает именно по тому как изменить отображение. От простых: «Как изменить логотип магазина на PrestaShop» до более сложных вопросов связанных с системой хуков и вёрсткой под Smarty.
Модель — Model
Каждый класс в папке /classes является потомком родительского класса ObjectModel и соответственно расширяет его CRUD (Create, Read, Update и Delete) функционал применительно к какой либо сущности и валидацию данных. Т.е каждый класс работает с отдельным объектом-сущностью БД (чаще всего каждому таком объекту соответствует отдельная таблица) и принимает на входе идентификатор по которому можно найти необходимую строку в таблице. Например, в классе Address: имя таблицы — address и идентификатор строки, принимаемый на входе — id_address.
Схема классов
Название класса совпадает с названием php файла и заканчивается на Core, таким образом они могут быть переопределены в папке /override/classes.
Сводная таблица классов PrestaShop, описание их основных функций.
Контроллеры- Controllers
Назначение контроллеров соответствует модели MVC и служит для связи логики системы, отражённой в системе классов и представления (шаблонов PrestaShop).
В первой части названия присутствует имя класса-модели с которым взаимодействует контроллер. Например, AddressController.php используется для редактирования адресной информации объекта модели /classes/address.php; ProductController.php работает с продукцией магазина (класс /classes/product.php) и т.п
Все контроллеры являются потомками базового класса FrontController, поэтому не зависимо от специфичности обрабатываемой информации у каждого есть общие функции.
Функции часто используемые в контроллерах PrestaShop. (готовится к публикации)