Рубрики
PrestaShop

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

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

Обсуждение закрыто.