Модель: Product
Класс Models_Product реализует логику взаимодействия с товарами магазина.
- Добавляет товар в базу данных;
- Изменяет данные о товаре;
- Удаляет товар из базы данных;
- Получает информацию о запрашиваемом товаре;
- Получает продукт по его URL;
- Получает цену запрашиваемого товара по его id.
Методы со знаком * содержат хуки
int|bool | addProduct() * |
Добавляет товар в базу данных.
$array = array( |
bool | updateProduct() * |
Изменяет данные о товаре.
$array = array( |
bool | fastUpdateProductVariant() |
Обновляет поле в варианте и синхронизирует привязку первого варианта с продуктом.
$array = array( |
bool | importUpdateProductVariant() |
Аналогичная fastUpdateProductVariant функция, но с поправками для процесса импорта вариантов.
$model = new Models_Product(); |
bool | fastUpdateProduct() * |
Обновление заданного поля продукта.
$array = array( |
bool | saveVariants() |
Сохраняет варианты товара.
$variants = Array( |
array | cloneProduct() * |
Клонирует товар.
$productId = 25; |
bool | cloneImagesProduct() |
Клонирует изображения продукта.
$imagesArray = array( |
bool | deleteProduct() * |
Удаляет товар, его свойства, варианты, локализации, оптовые цены из базы данных.
$productId = 25; |
void | deleteImagesFolder() |
Удаляет папки из структуры папок изображений относящиеся к заданному продукту.
$productId = 25; |
void | deleteImagesProduct() |
Удаляет все картинки привязанные к продукту.
$array = array( |
array | getProductByUserFilter() |
Получает информацию о запрашиваемом товаре.
$where = '`cat_id` IN (5,6)'; |
array | getProduct() * |
Получает информацию о запрашиваемом товаре по его ID.
$productId = 25; |
array | imagesConctruction() * |
Создает массивы данных для картинок товара, возвращает три массива со ссылками, заголовками и альт, текстами.
$model = new Models_Product(); |
void | increaseCountProduct() |
Обновляет остатки продукта, увеличивая их на заданное количество.
Models_Product::increaseCountProduct(37, 'SKU348', 2);
|
void | decreaseCountProduct() |
Обновляет остатки продукта, уменьшая их количество, при смене статуса заказа с "отменен" на любой другой.
Models_Product::decreaseCountProduct(37, 'SKU348', 2);
|
int | getProductsCount() |
Возвращает общее количество продуктов каталога.
$result = Models_Product::getProductsCount(); |
array | getProductByUrl() * |
Получает продукт по его URL.
$url = 'nike-air-versitile_102'; |
bool|float | getProductPrice() |
Получает цену запрашиваемого товара по его id.
$result = Models_Product::getProductPrice(5); |
string | createPropertyForm() * |
Создает форму пользовательских характеристик для товара. В качестве входящего параметра получает массив:
$param = array( |
string|array | getBlockVariants() |
Формирует блок вариантов товара.
$model = new Models_Product; |
string|array | getBlocksVariantsToCatalog() |
Формирует массив блоков вариантов товаров на странице каталога. Метод создан для сокращения количества запросов к БД.
$model = new Models_Product; |
string | addMarginToProp() |
Формирует добавочную строку к названию характеристики, в зависимости от наличия наценки и стоимости.
$model = new Models_Product; |
array | parseMarginToProp() |
Отделяет название характеристики от цены название_пункта#стоимость#. Пример входящей строки: "Красный#300#"
$model = new Models_Product; |
void | calcPrice() |
Обновление состояния корзины. Используеться для пересчета корзины и обновления цены в карточке товара ajax'ом
$model = new Models_Product; |
void | getVariantImages() |
Возвращает оригинал и все варианты миниатюр изображений варианта Используется Ajax'ом при изменении варианта в карточке и миникарточке товара |
array | getVariants() * |
Возвращает набор вариантов товара.
$productId = 25; |
array | noPrintProperty() |
Возвращает массив id характеристик товара, которые не нужно выводить в карточке.
$result = Models_Product::noPrintProperty($productId); |
string | createRelatedForm() * |
Возвращает HTML блок связанных товаров.
$args = array( |
void | convertToIso() |
Конвертирование стоимости товаров по заданному курсу.
$model = new Models_Product; |
void | updatePriceCourse() |
Обновления цены товаров в соответствии с курсом валюты.
$model = new Models_Product; |
bool | deleteImagesVariant() |
Удаляет картинки вариантов товара.
$model = new Models_Product; |
array | prepareImageName() |
Подготавливает названия изображений товара.
$model = new Models_Product; |
void | movingProductImage() |
Копирует изображения товара в новую структуру хранения. |
Метод
int|bool addProduct (array $array, bool $clone = false)
Параметры
Результат работы метода можно изменить хуком: Models_Product_addProduct
Описание
Добавляет товар в базу данных.
$array = array(
'title' => 'title', // название товара
'url' => 'link', // последняя часть ссылки на товар
'code' => 'CN230', // артикул товара
'price' => 100, // цена товара
'old_price' => 200, // старая цена товара
'image_url' => 1434653074061713.jpg, // последняя часть ссылки на изображение товара
'image_title' => '', // title изображения товара
'image_alt' => '', // alt изображения товара
'count' => 77, // остаток товара
'weight' => 5, // вес товара
'cat_id' => 4, // ID основной категории товара
'inside_cat' => '1,2', // дополнительные категории товаров
'description' => 'descr', // описание товара
'short_description' => 'short descr', // краткое описание товара
'meta_title' => 'title', // seo название товара
'meta_keywords' => 'title купить, CN230, title', // seo ключевые слова
'meta_desc' => 'meta descr', // seo описание товара
'currency_iso' => 'RUR', // код валюты товара
'recommend' => 0, // выводить товар в блоке рекомендуемых
'activity' => 1, // выводить товар
'unit' => 'шт.', // единица измерения товара (если null, то используется единица измерения основной категории товара)
'new' => 0, // выводить товар в блоке новинок
'userProperty' => Array, // массив с характеристиками товара
'related' => 'В-500-1', // артикулы связанных товаров
'variants' => Array, // массив с вариантами товаров
'related_cat' => null, // ID связанных категорий
'lang' => 'default', // язык для сохранения
'landingTemplate' => 'noLandingTemplate', // шаблон для лэндинга товара
'ytp' => '', // строка с торговым предложением для лэндинга
'landingImage' => 'no-img.jpg', // изображение для лэндинга
'storage' => 'all' // склад товара
);
$model = new Models_Product();
$id = $model->addProduct($product);
echo $id;
Метод
bool updateProduct (array $array)
Параметры
Результат работы метода можно изменить хуком: Models_Product_updateProduct
Описание
Изменяет данные о товаре.
$array = array(
'id' => 23, // ID товара
'title' => 'title', // название товара
'url' => 'link', // последняя часть ссылки на товар
'code' => 'CN230', // артикул товара
'price' => 100, // цена товара
'old_price' => 200, // старая цена товара
'image_url' => 1434653074061713.jpg, // последняя часть ссылки на изображение товара
'image_title' => '', // title изображения товара
'image_alt' => '', // alt изображения товара
'count' => 77, // остаток товара
'weight' => 5, // вес товара
'cat_id' => 4, // ID основной категории товара
'inside_cat' => '1,2', // дополнительные категории товаров
'description' => 'descr', // описание товара
'short_description' => 'short descr', // краткое описание товара
'meta_title' => 'title', // seo название товара
'meta_keywords' => 'title купить, CN230, title', // seo ключевые слова
'meta_desc' => 'meta descr', // seo описание товара
'currency_iso' => 'RUR', // код валюты товара
'recommend' => 0, // выводить товар в блоке рекомендуемых
'activity' => 1, // выводить товар
'unit' => 'шт.', // единица измерения товара (если null, то используется единица измерения основной категории товара)
'new' => 0, // выводить товар в блоке новинок
'userProperty' => Array, // массив с характеристиками товара
'related' => 'В-500-1', // артикулы связанных товаров
'variants' => Array, // массив с вариантами товаров
'related_cat' => null, // ID связанных категорий
'lang' => 'default', // язык для сохранения
'landingTemplate' => 'noLandingTemplate', // шаблон для лэндинга товара
'ytp' => '', // строка с торговым предложением для лэндинга
'landingImage' => 'no-img.jpg', // изображение для лэндинга
'storage' => 'all' // склад товара
);
$model = new Models_Product();
$model->updateProduct($array);
Метод
bool fastUpdateProductVariant (int $id, array $array, int $product_id)
Параметры
Описание
Обновляет поле в варианте и синхронизирует привязку первого варианта с продуктом.
$array = array(
'price' => 200, // цена
'count' => 50 // количество
);
$model = new Models_Product();
$model->fastUpdateProductVariant(5, $array, 2);
Метод
bool importUpdateProductVariant (int $id, array $array, int $product_id)
Параметры
Описание
Аналогичная fastUpdateProductVariant функция, но с поправками для
процесса импорта вариантов.
$model = new Models_Product();
$model->importUpdateProductVariant(5, $array, 2);
Метод
bool fastUpdateProduct (int $id, array $array)
Параметры
Результат работы метода можно изменить хуком: Models_Product_fastUpdateProduct
Описание
Обновление заданного поля продукта.
$array = array(
'price' => 200, // цена
'sort' => 5, // номер сортировки
'count' => 50 // количество
);
$model = new Models_Product();
$model->fastUpdateProduct(5, $array);
Метод
bool saveVariants (array $variants, int $id)
Параметры
Описание
Сохраняет варианты товара.
$variants = Array(
0 => Array(
'color' => 19, // id цвета варианта
'size' => 11, // id размера варианта
'title_variant' => '22 Голубой', // название
'code' => 'SKU241', // артикул
'price' => 2599, // цена
'old_price' => 3000, // старая цена
'weight' => 1, // вес
'count' => 50, // количество
'activity' => 1, // активность
'id' => 1249, // id варианта
'currency_iso' => 'RUR', // код валюты
'image' => '13140250299.jpg' // название картинки варианта
)
);
$model = new Models_Product();
$model->saveVariants($variants, 51);
Метод
array cloneProduct (int $id)
Параметры
Результат работы метода можно изменить хуком: Models_Product_cloneProduct
Описание
Клонирует товар.
$productId = 25;
$model = new Models_Product;
$model->cloneProduct($productId);
Метод
bool cloneImagesProduct (array $imagesArray, int $oldId, int $newId)
Параметры
Описание
Клонирует изображения продукта.
$imagesArray = array(
'40Untitled-1.jpg',
'41Untitled-1.jpg',
'42Untitled-1.jpg'
);
$oldId = 40;
$newId = 130;
$model = new Models_Product;
$model->deleteProduct($imagesArray, $oldId, $newId);
Метод
bool deleteProduct (int $id)
Параметры
Результат работы метода можно изменить хуком: Models_Product_deleteProduct
Описание
Удаляет товар, его свойства, варианты, локализации, оптовые цены из базы данных.
$productId = 25;
$model = new Models_Product;
$model->deleteProduct($productId);
Метод
deleteImagesFolder (int $id)
Параметры
Описание
Удаляет папки из структуры папок изображений относящиеся к заданному продукту.
$productId = 25;
$model = new Models_Product;
$model->deleteImagesFolder($productId);
Метод
deleteImagesProduct (array $arrayImages, int $productId = false)
Параметры
Описание
Удаляет все картинки привязанные к продукту.
$array = array(
'product/100/105/120.jpg',
'product/100/105/122.jpg',
'product/100/105/121.jpg'
);
$model = new Models_Product();
$model->deleteImagesProduct($array);
Метод
array getProductByUserFilter (string $where, $joinVariant = false)
Параметры
Описание
Получает информацию о запрашиваемом товаре.
$where = '`cat_id` IN (5,6)';
$model = new Models_Product;
$result = $model->deleteImagesFolder($where);
viewData($result);
Метод
array getProduct (int $id, bool $getProps = true, bool $disableCashe = false)
Параметры
Результат работы метода можно изменить хуком: Models_Product_getProduct
Описание
Получает информацию о запрашиваемом товаре по его ID.
$productId = 25;
$model = new Models_Product;
$product = $model->getProduct($productId);
viewData($product);
Метод
array imagesConctruction (string $imageUrl, string $imageTitle, string $imageAlt, string $id)
Параметры
Результат работы метода можно изменить хуком: Models_Product_imagesConctruction
Описание
Создает массивы данных для картинок товара, возвращает три массива со ссылками, заголовками и альт, текстами.
$model = new Models_Product();
$imageUrl = '120.jpg|121.jpg';
$imageTitle = 'Каритинка товара';
$imageAlt = 'Альтернативная подпись картинки';
$res = $model->imagesConctruction($imageUrl, $imageTitle, $imageAlt);
viewData($res);
Метод
increaseCountProduct (int $id, string $code, int $count)
Параметры
Описание
Обновляет остатки продукта, увеличивая их на заданное количество.
Models_Product::increaseCountProduct(37, 'SKU348', 2);
Метод
decreaseCountProduct (int $id, string $code, int $count)
Параметры
Описание
Обновляет остатки продукта, уменьшая их количество,
при смене статуса заказа с "отменен" на любой другой.
Models_Product::decreaseCountProduct(37, 'SKU348', 2);
Метод
int getProductsCount ($where)
Описание
Возвращает общее количество продуктов каталога.
$result = Models_Product::getProductsCount();
viewData($result);
Метод
array getProductByUrl (string $url, int $catId = false)
Параметры
Результат работы метода можно изменить хуком: Models_Product_getProductByUrl
Описание
Получает продукт по его URL.
$url = 'nike-air-versitile_102';
$result = Models_Product::getProductByUrl($url);
viewData($result);
Метод
bool|float getProductPrice (int $id)
Параметры
Описание
Получает цену запрашиваемого товара по его id.
$result = Models_Product::getProductPrice(5);
viewData($result);
Метод
string createPropertyForm (array $param = Array, string $adminOrder = nope, $returnArray = false)
Параметры
Результат работы метода можно изменить хуком: Models_Product_createPropertyForm
Описание
Создает форму пользовательских характеристик для товара.
В качестве входящего параметра получает массив:
$param = array(
'id' => null, // id товара.
'maxCount' => null, // максимальное количество товара на складе.
'productUserFields' => null, // массив пользовательских полей для данного продукта.
'action' => "/catalog", // ссылка для метода формы.
'method' => "POST", // тип отправки данных на сервер.
'ajax' => true, // использовать ajax для пересчета стоимости товаров.
'blockedProp' => array(), // массив из ID свойств, которые не нужно выводить в форме.
'noneAmount' => false, // не выводить input для количества.
'titleBtn' => "В корзину", // название кнопки.
'blockVariants' => '', // блок вариантов.
'classForButton' => 'addToCart buy-product buy', // классы для кнопки.
'noneButton' => false, // не выводить кнопку отправки.
'addHtml' => '' // добавить HTML в содержимое формы.
'currency_iso' => '', // обозначение валюты в которой сохранен товар
'printStrProp' => 'true', // выводить строковые характеристики
'printCompareButton' => 'true', // выводить кнопку сравнения
'buyButton' => 'true', // показывать кнопку 'купить' в миникарточках (если false - показывается кнопка 'подробнее')
'productData' => 'Array', // массив с данными о товаре
'showCount' => 'true' // показывать блок с количеством
);
$model = new Models_Product;
$result = $model->getProduct($param);
echo $result;
Метод
string|array getBlockVariants (int $id, int $cat_id, string $returnArray = false)
Параметры
Описание
Формирует блок вариантов товара.
$model = new Models_Product;
$result = $model->getBlockVariants(5);
echo $result;
Метод
string|array getBlocksVariantsToCatalog (int $array, array $returnArray = false, bool $mgadmin = false)
Параметры
Описание
Формирует массив блоков вариантов товаров на странице каталога.
Метод создан для сокращения количества запросов к БД.
$model = new Models_Product;
$result = $model->getBlocksVariantsToCatalog(array(2,3,4));
echo $result;
Метод
string addMarginToProp (float $margin, float $rate = 1, string $currency = false, string $productCurr)
Параметры
Описание
Формирует добавочную строку к названию характеристики,
в зависимости от наличия наценки и стоимости.
$model = new Models_Product;
$result = $model->addMarginToProp(250);
echo $result;
Метод
array parseMarginToProp (string $value)
Параметры
Описание
Отделяет название характеристики от цены название_пункта#стоимость#.
Пример входящей строки: "Красный#300#"
$model = new Models_Product;
$result = $model->parseMarginToProp('Красный#300#');
echo $result;
Метод
calcPrice ()
Описание
Обновление состояния корзины.
Используеться для пересчета корзины и обновления цены в карточке товара ajax'ом
$model = new Models_Product;
$model->calcPrice();
Метод
getVariantImages ()
Описание
Возвращает оригинал и все варианты миниатюр изображений варианта
Используется Ajax'ом при изменении варианта в карточке и миникарточке товара
Метод
array getVariants (int $id, string|bool $title_variants = false, bool $sort = false)
Параметры
Результат работы метода можно изменить хуком: Models_Product_getVariants
Описание
Возвращает набор вариантов товара.
$productId = 25;
$model = new Models_Product;
$variants = $model->getVariants($productId);
viewData($variants);
Метод
array noPrintProperty ()
Описание
Возвращает массив id характеристик товара, которые не нужно выводить в карточке.
$result = Models_Product::noPrintProperty($productId);
viewData($result);
Метод
string createRelatedForm (array $args, string $title = С этим товаром покупают, string $layout = layout_related)
Параметры
Результат работы метода можно изменить хуком: Models_Product_createRelatedForm
Описание
Возвращает HTML блок связанных товаров.
$args = array(
'product' => 'CN182,В-500-1', // артикулы связанных товаров
'category' => '2,4' // ID связанных категорий
);
$model = new Models_Product;
$result = $model->createRelatedForm($args);
echo $result;
Метод
convertToIso (string $iso, array $productsId)
Параметры
Описание
Конвертирование стоимости товаров по заданному курсу.
$model = new Models_Product;
$model->convertToIso('USD', array(2, 3, 4));
Метод
updatePriceCourse (string $iso, array $listId)
Параметры
Описание
Обновления цены товаров в соответствии с курсом валюты.
$model = new Models_Product;
$model->updatePriceCourse('USD', array(2, 3, 4));
Метод
bool deleteImagesVariant (int $productId)
Параметры
Описание
Удаляет картинки вариантов товара.
$model = new Models_Product;
$model->deleteImagesVariant(4);
Метод
array prepareImageName (array $product)
Параметры
Описание
Подготавливает названия изображений товара.
$model = new Models_Product;
$res = $model->prepareImageName($product);
viewData($res);
Метод
void movingProductImage (array $images, int $productId, string $path = uploads, bool $removeOld = true)
Параметры
Описание
Копирует изображения товара в новую структуру хранения.