Оглавление
PrestaShop
Интернет-магазин с открытым кодом: модули, хуки, шаблоны Smarty, настройки и контроллеры.
1.Начало работы
- Что такое PrestaShopЧто это за движок интернет-магазина, что в нём есть сразу после установки и чем занимается программист.
- Установка и режим отладкиКак установить PrestaShop мастером или из консоли, где находится панель управления и как включить показ ошибок.
- Папки проектаЧто лежит в папках установленного магазина, какие из них ваши, а какие трогать нельзя.
- Основные понятияВитрина и панель управления, модули, хуки, темы, два ядра и объект Context — словарь, без которого не прочитать код PrestaShop.
2.Модуль
- Первый модульСоздаём модуль с нуля: папка, главный класс, поля конструктора по одному, методы install и uninstall, установка из консоли.
- Хуки выводаКак модуль добавляет блок на страницу витрины: подписка на хук display, метод-обработчик, параметры хука и список частых хуков.
- Хуки действияКак модуль реагирует на события магазина: заказ оформлен, покупатель зарегистрировался, товар удалён. Параметры и список частых хуков action.
- Шаблоны SmartyКак вынести HTML модуля в шаблон: папка views/templates, передача переменных, условия и циклы Smarty, экранирование.
- Стили и скриптыКак подключить CSS и JavaScript модуля на витрине и в панели: папки views/css и views/js, registerStylesheet, registerJavascript, передача данных в скрипт.
- ПереводыКак сделать строки модуля переводимыми: метод trans в PHP, функция l в шаблонах Smarty, домены перевода и страница переводов в панели.
3.Настройки и данные
- Хранилище ConfigurationГде модуль хранит свои настройки: класс Configuration, чтение, запись и удаление значений, значения по умолчанию при установке.
- Страница настроекКак дать модулю страницу настроек в панели: метод getContent, форма с одним полем, обработка отправки и сообщения об успехе и ошибке.
- Поля формы HelperFormВиды полей формы настроек: переключатель, список, многострочный текст. Подсказки, значения полей и проверка классом Validate.
- Таблицы модуляКак модуль создаёт свою таблицу при установке, удаляет её при удалении и меняет структуру скриптом обновления в папке upgrade.
- Запросы: Db и DbQueryКак читать и записывать данные в таблицу модуля: класс Db, построитель запросов DbQuery, вставка, обновление, удаление и защита значений.
- Модель ObjectModelКак описать строку таблицы классом: наследник ObjectModel, массив definition, создание, загрузка, изменение и удаление записей с проверкой полей.
- Объекты ядраКак читать данные магазина из модуля: товар, категория, покупатель, корзина и заказ, цены, картинки и ссылки на страницы.
4.Страницы и панель
- Страница модуля на витринеКак дать модулю собственную страницу: контроллер ModuleFrontController в папке controllers/front, шаблон страницы и ссылка через getModuleLink.
- Формы и AJAX на витринеКак принять форму в контроллере модуля: метод postProcess, проверка токена, сообщения об ошибке и успехе, ответ JSON для запросов AJAX.
- Страница панели: ModuleAdminControllerКак быстро сделать в панели список записей своей таблицы: старый контроллер ModuleAdminController, описание колонок и действия над строками.
- Пункты меню панелиКак добавить страницу модуля в меню панели управления: свойство tabs, родительские разделы, значки, скрытые вкладки и права доступа.
- Службы Symfony в модулеКак хранить классы модуля в папке src с пространством имён: автозагрузка Composer, файл config/services.yml и получение службы из контейнера.
- Страница панели на SymfonyСовременный способ сделать страницу в панели управления: маршрут в config/routes.yml, контроллер в src/Controller и шаблон Twig.
- Расширение таблиц и форм панелиКак добавить свою колонку в таблицу покупателей и своё поле в форму панели управления хуками, не меняя код ядра.
5.Магазин
- ПереопределенияЧто такое override в PrestaShop, как модуль подменяет метод класса ядра, почему это крайняя мера и чем его заменить.
- Платёжный модульОсновы модуля оплаты: класс PaymentModule, хук paymentOptions, контроллер подтверждения и метод validateOrder, который создаёт заказ.
- Модуль доставкиКоротко о модуле перевозчика: класс CarrierModule, создание перевозчика при установке и расчёт стоимости доставки своим кодом.
- Отправка писемКак модуль отправляет письмо: метод Mail::Send, шаблоны писем в папке mails, переменные в шаблоне и проверка отправки.
- Темы и дочерняя темаКак изменить внешний вид магазина и не потерять правки: дочерняя тема, файл theme.yml, подмена шаблонов темы и шаблонов модулей.
- Веб-сервисВстроенный API магазина: как включить веб-сервис, создать ключ с правами, читать товары и заказы и создавать записи запросами HTTP.
6.Запуск
- Консольные команды и cronКак добавить в модуль свою команду bin/console, зарегистрировать её службой и запускать по расписанию через cron.
- Производительность и запускНастройки кеша и производительности PrestaShop, очистка кеша и список проверок перед открытием магазина для покупателей.
- Выпуск и обновление модуляКак подготовить модуль к передаче в другой магазин: итоговая структура, номер версии, скрипты обновления, сборка архива и установка из панели.