Как и обещала публикую информацию по работе с классами в PrestaShop, которая будет полезна разработчикам интернет магазинов на данной CMS.
Эта часть является логическим продолжением статьи “PrestaShop инструкция для разработчиков“, опубликованной ранее на моём блоге – web-esse.ru
Сводная таблица наиболее часто изменяемых классов PrestaShop, которым соответствует отдельная таблица в БД.
| Название | Описание | Таблица в БД | В классе можно: |
|---|---|---|---|
| Address.php | Адреса покупателей, производителей и поставщиков | *_address | Убрать обязательные поля при регистрации / при заказе |
| Attachment.php | Класс отвечает за вложения добавляемые к продукции | *_attachment | |
| Attribute.php | Атрибуты продуктов | *_attribute | |
| Carrier.php | Методы доставки | *_carrier | |
| Cart.php | Корзина покупателя | *_cart | |
| Category.php | Категории продукции | *_category | Добавить поддержку HTML тегов в описание товара |
| CMS.php | Класс работает с статичными страницами магазина | *_cms | |
| Currency.php | Используемая валюта | *_currency | Метод getCurrencies понадобится для обновления курса с сайта ЦентраБанка |
| Customer.php | Зарегистрированные пользователи | *_currency | |
| Guest.php | Незарегистрированные пользователи | *_guest | |
| Hook.php | Управление хуками в PrestaShop | *_hook | Добавление нового хука |
| Meta.php | Управление мета информацией (title, keywords, description) | *_meta_lang | Разный title и заголовок на странице |
| Order.php | Класс пользовательской информации о заказе | *_orders |
Не забывайте что изменение кода базовых классов не допустимо, необходимо использовать механизм override.
Рассмотрим универсальные классы имеющие статичные методы, которые можно вызвать из любого класса.
Класс Configuration – Работает со всеми конфигурационными данными Prestashop, файл – Configuration.php
Основное назначение: получение конфигурационных данных, с помощью функции get($key, $id_lang = NULL)
Configuration::get('PS_SHOP_DOMAIN') // метод класса вернёт домен магазина
Configuration::get('PS_SHOP_EMAIL') //вернёт email владельца
Configuration::get('PS_SHOP_NAME') //вернёт название магазина
Configuration::get('PS_SHOP_PHONE') //вернёт телефон владельца
Configuration::updateValue('PS_LAYERED_SHARE', 0) //обновление значения полей - при установке модуля
Configuration::deleteByName('PS_LAYERED_SHARE') //удаление информации из БД, например, при удаление модуля
Класс Tools – полезные инструменты
displayPrice($price, $currency = NULL, $no_utf8 = false) – отображает стоимость в текущем формате
getMetaTags($id_lang, $page_name) – возвращает мета теги для указанной страницы
link_rewrite($str, $utf8_decode = false) – возвращает чпу из строки
addJS($js_uri) – добавляет скрипт в заголовок
addCSS($css_uri, $css_media_type = ‘all’) – добавляет стили в заголовок
setCurrency() – установка текущей валюты (решение проблемы разной валюты в импортируемом файле и витрине магазина)
getValue($key, $defaultValue = false) – возвращает значение из $_POST / $_GET, на входе принимает имя поле и дефолтное значение, которое возвращается если поле в массиве отсутствует
пример:
$qty = (int)(abs(Tools::getValue('qty', 1)));
$id_cms = (int)Tools::getValue('id_cms');
Класс Validate
isEmail($email) – валидация Email
isName($name) – должны отсутствовать символы 0-9!<>,;?=+()@#”°{}_$%:, т.е допустимы только буквы
isMessage($message) – должны отсутствовать символы ^<>{}
isAddress($address) – должны отсутствовать символы !<>?=+@{}_$%
isCleanHtml($html) убирает из кода скрипты
isPhoneNumber($phoneNumber) – цифры, скобки и тире
isPostCode($postcode) – можно использовать a-zA-Z 0-9-
isUrl($url) – валидный юрл
Validate::isLoadedObject($this->cms)
Есть и другие классы, но по ним у меня накопилось столько наработок и материала, что им будут посвящены отдельные посты:
Db.php – Класс по работе с БД
Link.php – подключаем отдельный хостинг для изображений
Mail.php – отправка почты
Module.php – незаменим при написании собственных модулей
PDF.php – генерация pdf с поддержкой кириллицы
Архитектура PredstaShop построена на системе классов, основные из них рассмотрены в этом посте, вся информация сведена в удобную таблицу.
14 replies on “PrestaShop для разработчиков: таблица классов.”
Спасибо за описания классов, очень полезные в работе. Не затягивайте с обещанными статьями о ПДФ и БД – жду с нетерпением!
Пожалуйста! Постараюсь выделить время.
Добрый день!
Скажите, пожалуйста, что такое функция link_rewrite и для чего она нужна? Спасибо
Добрый день.
Статичный метод link_rewrite класса Tools – подготавливает строку к использованию её в юрл – убирает из строки не дружественные для чпу символы – : и т.п, преобразует регистр, убирает пробелы.
Спасибо, Снегурка!
Здравствуйте!
Во-первых, спасибо за полезный сайт, уже несколько раз прибегала к его советам.
Теперь по существу. Где и что нужно поменять в файлах или БД, чтобы у страниц CMS Prestasop 1.5 выводились не названием страницы, а keywords-ом или description-ом? Подозреваю, нужно править public static function getCmsMetas($id_cms, $id_lang, $page_name) в /classes/Meta.php, но что именно?..
Разобралась. Если кому пригодится.
В упомянутой выше функции
$row[‘meta_title’] = $row[‘meta_title’].’ – ‘.Configuration::get(‘PS_SHOP_NAME’); return Meta::completeMetaTags($row, $row[‘meta_title’]);
заменить на
$row[‘meta_title’] = $row[‘meta_description’].’ – ‘.Configuration::get(‘PS_SHOP_NAME’);
return Meta::completeMetaTags($row, $row[‘meta_title’]);
Подскажите, пожалуйста, как вытащить информацию из таблицы _address из поля – “other”? Для того, чтобы добавить “Дополнительную информацию”, которую указывают клиенты при заказе в счет. Можно это сделать с помощью – Configuration::get? Если вставляю – Configuration::get(‘PS_SHOP_NAME’) в файл PDF.php – то в счете появляется название магазина.
Нет, через Configuration::get можно только константы магазина вывести, это поле через работу с классом адреса нужно вытаскивать. Преста какая?
1.4.4.0
Если добавить сточку – ‘.($addressInvoice->other).’ в файл – AdminOrders.php то добавляет еще одно поле с “Дополнительной информацией”.
Но я не очень силен в делах программирования)) Поэтому приходится делать все – методом научного тыка))
Вам нужно с классом PDF.php работать, в AdminOrders не нужно ничего делать. Как один из вариантов решения добавить нужное поле в шаблон $patternRules (примерно 351 строка)
В файле PDF.php прописал поле ‘other’,
$patternRules = array(
‘avoid’ => array(
‘address2’,
‘company’,
‘phone’,
‘other’,
‘phone_mobile’));
Ничего не изменилось))
Сори, если не туда пишу…
версия 1,6,0,9. Подскажите, пожалуйста, как можно изменить расположение полей Адреса (оформление заказа – 2 шаг). Нужно не просто порядок поменять в настройках страны, а расположить например двумя столбцами (блоками), чтобы слева расположить фамилия, имя, телефон, а справа уже адрес. Уже все перекопал! Вижу что вроде формируется массив, который потом просто списком выводится в порядке определенном в админке в настройках страны. Но где формируется этот массив и где выводится – не могу определить. Дошел до того что в order-address используется id=address_delivery…
Помогите найти края
Может не до конца поняла задачу…. но самое простое решение: в тпл сделать 2 блока и отверстать их как нужно.