Как и обещала публикую информацию по работе с классами в 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 ответов к “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 блока и отверстать их как нужно.