Docs For Class Models_Product

Models_Product

Описание

Модель: Product

Класс Models_Product реализует логику взаимодействия с товарами магазина.

  • Добавляет товар в базу данных;
  • Изменяет данные о товаре;
  • Удаляет товар из базы данных;
  • Получает информацию о запрашиваемом товаре;
  • Получает продукт по его URL;
  • Получает цену запрашиваемого товара по его id.

Методы класса
string addMarginToProp() Формирует добавочную строку к названию характеристики, в зависимости от наличия наценки и стоимости.
int|bool addProduct() Добавляет товар в базу данных.
void calcPrice() Обновление состояния корзины.
bool cloneImagesProduct() Клонирует изображения продукта.
array cloneProduct() Клонирует товар.
void convertToIso() Конвертирование стоимости товаров по заданному курсу.
string createPropertyForm() Создает форму пользовательских характеристик для товара.
string createRelatedForm() Возвращает HTML блок связанных товаров.
void decreaseCountProduct() Обновляет остатки продукта, уменьшая их количество, при смене статуса заказа с "отменен" на любой другой.
bool deleteImageProduct() Удаляет все миниатюры и оригинал изображения товара из папки upload.
void deleteImagesFolder() Удаляет папки из структуры папок изображений относящиеся к заданному продукту.
void deleteImagesProduct() Удаляет все картинки привязанные к продукту.
bool deleteImagesVariant() Удаляет картинки вариантов товара.
bool deleteProduct() Удаляет товар, его свойства, варианты, локализации, оптовые цены из базы данных.
bool fastUpdateProduct() Обновление заданного поля продукта.
bool fastUpdateProductVariant() Обновляет поле в варианте и синхронизирует привязку первого варианта с продуктом.
string|array getBlocksVariantsToCatalog() Формирует массив блоков вариантов товаров на странице каталога.
string|array getBlockVariants() Формирует блок вариантов товара.
array getProduct() Получает информацию о запрашиваемом товаре по его ID.
array getProductByUrl() Получает продукт по его URL.
array getProductByUserFilter() Получает информацию о запрашиваемом товаре.
bool|float getProductPrice() Получает цену запрашиваемого товара по его id.
int getProductsCount() Возвращает общее количество продуктов каталога.
array getVariants() Возвращает набор вариантов товара.
array imagesConctruction() Создает массивы данных для картинок товара, возвращает три массива со ссылками, заголовками и альт, текстами.
bool importUpdateProductVariant() Аналогичная fastUpdateProductVariant функция, но с поправками для процесса импорта вариантов.
void increaseCountProduct() Обновляет остатки продукта, увеличивая их на заданное количество.
void movingProductImage() Копирует изображения товара в новую структуру хранения.
array noPrintProperty() Возвращает массив id характеристик товара, которые ненужно выводить в карточке.
array parseMarginToProp() Отделяет название характеристики от цены название_пункта#стоимость#.
array prepareImageName() Подготавливает названия изображений товара.
bool saveUserProperty() Сохраняет пользовательские характеристики для товара (внутренний метод, используется только при сохранении товара).
bool saveVariants() Сохраняет варианты товара.
void updatePriceCourse() Обновления цены выдранных товаров в соответствии с курсом валюты.
bool updateProduct() Изменяет данные о товаре.
Описание методов и примеры их использования

Метод

string addMarginToProp (float $margin, [float $rate = 1], [string $currency = false])

Параметры

  • $margin: наценка
  • $rate: множитель цены
  • $currency: валюта

Описание

Формирует добавочную строку к названию характеристики, в зависимости от наличия наценки и стоимости.

Пример использования

  1.  $model new Models_Product;
  2.  $result $model->addMarginToProp(250);
  3.  echo $result;

Метод

int|bool addProduct (array $array, [bool $clone = false])

Параметры

  • $array: массив с данными о товаре.
  • $clone: происходит ли клонирование или обычное добавление товара

Описание

Добавляет товар в базу данных.

Пример использования

  1.  $array array(
  2.   'title' => 'title'// название товара
  3.   'url' => 'link'// последняя часть ссылки на товар
  4.   'code' => 'CN230'// артикул товара
  5.   'price' => 100// цена товара
  6.   'old_price' => 200// старая цена товара
  7.   'image_url' => 1434653074061713.jpg// последняя часть ссылки на изображение товара
  8.   'image_title' => ''// title изображения товара
  9.   'image_alt' => ''// alt изображения товара
  10.   'count' => 77// остаток товара
  11.   'weight' => 5// вес товара
  12.   'cat_id' => 4// ID основной категории товара
  13.   'inside_cat' => '1,2'// дополнительные категории товаров
  14.   'description' => 'descr'// описание товара
  15.   'short_description' => 'short descr'// краткое описание товара
  16.   'meta_title' => 'title'// seo название товара
  17.   'meta_keywords' => 'title купить, CN230, title'// seo ключевые слова
  18.   'meta_desc' => 'meta descr'// seo описание товара
  19.   'currency_iso' => 'RUR'// код валюты товара
  20.   'recommend' => 0// выводить товар в блоке рекомендуемых
  21.   'activity' => 1// выводить товар
  22.   'unit' => 'шт.'// единица измерения товара (если null, то используется единица измерения основной категории товара)
  23.   'new' => 0// выводить товар в блоке новинок
  24.   'userProperty' => Array// массив с характеристиками товара
  25.   'related' => 'В-500-1'// артикулы связанных товаров
  26.   'variants' => Array// массив с вариантами товаров
  27.   'related_cat' => null// ID связанных категорий
  28.   'lang' => 'default'// язык для сохранения
  29.   'landingTemplate' => 'noLandingTemplate'// шаблон для лэндинга товара
  30.   'ytp' => ''// строка с торговым предложением для лэндинга
  31.   'landingImage' => 'no-img.jpg'// изображение для лэндинга
  32.   'storage' => 'all' // склад товара
  33.  );
  34.  $model new Models_Product();
  35.  $id $model->addProduct($product);
  36.  echo $id;

Метод

void calcPrice ()

Описание

Обновление состояния корзины.

Используеться для пересчета корзины и обновления цены в карточке товара ajax'ом

Пример использования

  1.    $model new Models_Product;
  2.    $model->calcPrice();

Метод

bool cloneImagesProduct ([array $imagesArray = array()], [int $oldId = 0], [int $newId = 0])

Параметры

  • $imagesArray: массив url изображений, которые надо клонировать.
  • $oldId: старый ID товара.
  • $newId: новый ID товара.

Описание

Клонирует изображения продукта.

Пример использования

  1.    $imagesArray array(
  2.      '40Untitled-1.jpg',
  3.      '41Untitled-1.jpg',
  4.      '42Untitled-1.jpg'
  5.    );
  6.    $oldId 40;
  7.    $newId 130;
  8.    $model new Models_Product;
  9.    $model->deleteProduct($imagesArray$oldId$newId);

Метод

array cloneProduct (int $id)

Параметры

  • $id: id клонируемого товара.

Описание

Клонирует товар.

Пример использования

  1.  $productId 25;
  2.  $model new Models_Product;
  3.  $model->cloneProduct($productId);

Метод

void convertToIso (string $iso, [array $productsId = array()])

Параметры

  • $iso: валюта в которую будет производиться конвертация.
  • $productsId: массив с id продуктов.

Описание

Конвертирование стоимости товаров по заданному курсу.

Пример использования

  1.  $model new Models_Product;
  2.  $model->convertToIso('USD'array(234));

Метод

string createPropertyForm ([array $param = array( 'id' => null, 'maxCount' => null, 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => array(),'noneAmount'=>false,'titleBtn'=>"В корзину",'blockVariants'=>'','classForButton'=>'addToCart buy-product buy','noneButton'=>false,'addHtml'=>'','printStrProp'=>null,'printCompareButton'=>null,'buyButton'=>'','currency_iso'=>'','productData'=>null,'showCount'=>true,)], [string $adminOrder = 'nope'])

Параметры

  • $param: массив параметров.
  • $adminOrder: заказ для админки или нет (по умолчанию - нет).

Описание

Создает форму пользовательских характеристик для товара.

В качестве входящего параметра получает массив:

Пример использования

  1.  $param array(
  2.    'id' => null// id товара.
  3.    'maxCount' => null// максимальное количество товара на складе.
  4.    'productUserFields' => null// массив пользовательских полей для данного продукта.
  5.    'action' => "/catalog"// ссылка для метода формы.
  6.    'method' => "POST"// тип отправки данных на сервер.
  7.    'ajax' => true// использовать ajax для пересчета стоимости товаров.
  8.    'blockedProp' => array()// массив из ID свойств, которые ненужно выводить в форме.
  9.    'noneAmount' => false// не выводить  input для количества.
  10.    'titleBtn' => "В корзину"// название кнопки.
  11.    'blockVariants' => ''// блок вариантов.
  12.    'classForButton' => 'addToCart buy-product buy'// классы для кнопки.
  13.    'noneButton' => false// не выводить кнопку отправки.
  14.    'addHtml' => '' // добавить HTML в содержимое формы.
  15.    'currency_iso' => ''// обозначение валюты в которой сохранен товар
  16.    'printStrProp' => 'true'// выводить строковые характеристики
  17.    'printCompareButton' => 'true'// выводить кнопку сравнения
  18.    'buyButton' => 'true'// показывать кнопку 'купить' в миникарточках (если false - показывается кнопка 'подробнее')
  19.    'productData' => 'Array'// массив с данными о товаре
  20.    'showCount' => 'true' // показывать блок с количеством
  21.  );
  22.  $model new Models_Product;
  23.  $result $model->getProduct($param);
  24.  echo $result;

Метод

string createRelatedForm (array $args, [string $title = 'С этим товаром покупают'], [string $layout = 'layout_related'])

Параметры

  • $args: массив с данными о товарах
  • $title: заголовок блока
  • $layout: используемый лэйаут

Описание

Возвращает HTML блок связанных товаров.

Пример использования

  1.  $args array(
  2.   'product' => 'CN182,В-500-1'// артикулы связанных товаров
  3.   'category' => '2,4' // ID связанных категорий
  4.  );
  5.  $model new Models_Product;
  6.  $result $model->createRelatedForm($args);
  7.  echo $result;

Метод

void decreaseCountProduct (int $id, string $code, int $count)

Параметры

  • $id: ID продукта.
  • $code: Артикул.
  • $count: Прибавляемое значение к остатку.

Описание

Обновляет остатки продукта, уменьшая их количество, при смене статуса заказа с "отменен" на любой другой.

Пример использования

  1.  Models_Product::decreaseCountProduct(37'SKU348'2);

Метод

bool deleteImageProduct (array $arrayDelImages)

Параметры

  • $arrayDelImages: массив с изображениями для удаления

Описание

Удаляет все миниатюры и оригинал изображения товара из папки upload.

  • deprecated:

Метод

void deleteImagesFolder (int $id)

Параметры

  • $id: id товара.

Описание

Удаляет папки из структуры папок изображений относящиеся к заданному продукту.

Пример использования

  1.  $productId 25;
  2.  $model new Models_Product;
  3.  $model->deleteImagesFolder($productId);

Метод

void deleteImagesProduct ([array $arrayImages = array()], [int $productId = false])

Параметры

  • $arrayImages: массив с названиями картинок
  • $productId: ID товара

Описание

Удаляет все картинки привязанные к продукту.

Пример использования

  1.    $array array(
  2.     'product/100/105/120.jpg',
  3.     'product/100/105/122.jpg',
  4.     'product/100/105/121.jpg'
  5.   );
  6.   $model new Models_Product();
  7.   $model->deleteImagesProduct($array);

Метод

bool deleteImagesVariant (int $productId)

Параметры

  • $productId: ID товара

Описание

Удаляет картинки вариантов товара.

Пример использования

  1.  $model new Models_Product;
  2.  $model->deleteImagesVariant(4);

Метод

bool deleteProduct (int $id)

Параметры

  • $id: id удаляемого товара

Описание

Удаляет товар, его свойства, варианты, локализации, оптовые цены из базы данных.

Пример использования

  1.  $productId 25;
  2.  $model new Models_Product;
  3.  $model->deleteProduct($productId);

Метод

bool fastUpdateProduct (int $id, array $array)

Параметры

  • $id: - id продукта.
  • $array: - параметры для обновления.

Описание

Обновление заданного поля продукта.

Пример использования

  1.  $array array(
  2.  'price' => 200// цена
  3.  'sort' => 5// номер сортировки
  4.  'count' => 50 // количество
  5.  );
  6.  $model new Models_Product();
  7.  $model->fastUpdateProduct(5$array);

Метод

bool fastUpdateProductVariant (int $id, array $array, int $product_id)

Параметры

  • $id: id варианта.
  • $array: ассоциативный массив поле=>значение.
  • $product_id: id продукта.

Описание

Обновляет поле в варианте и синхронизирует привязку первого варианта с продуктом.

Пример использования

  1.  $array array(
  2.  'price' => 200// цена
  3.  'count' => 50 // количество
  4.  );
  5.  $model new Models_Product();
  6.  $model->fastUpdateProductVariant(5$array2);

Метод

string|array getBlocksVariantsToCatalog (int $array, [array $returnArray = false], [bool $mgadmin = false])

Параметры

  • $array: массив id товаров
  • $returnArray: если true то вернет просто массив без html блоков
  • $mgadmin: если true то вернет данные для админки

Описание

Формирует массив блоков вариантов товаров на странице каталога.

Метод создан для сокращения количества запросов к БД.

Пример использования

  1.  $model new Models_Product;
  2.  $result $model->getBlocksVariantsToCatalog(array(2,3,4));
  3.  echo $result;

Метод

string|array getBlockVariants (int $id, [int $cat_id = 0], [string $adminOrder = 'nope'])

Параметры

  • $id: id товара
  • $cat_id: id категории
  • $adminOrder: заказ из админки или нет (по умолчанию - нет)

Описание

Формирует блок вариантов товара.

Пример использования

  1.  $model new Models_Product;
  2.  $result $model->getBlockVariants(5);
  3.  echo $result;

Метод

array getProduct (int $id, [bool $getProps = true], [bool $disableCashe = false])

Параметры

  • $id: id запрашиваемого товара.
  • $getProps: возвращать ли характеристики.
  • $disableCashe: отключить ли кэш.

Описание

Получает информацию о запрашиваемом товаре по его ID.

Пример использования

  1.  $productId 25;
  2.  $model new Models_Product;
  3.  $product $model->getProduct($productId);
  4.  viewData($product);

Метод

array getProductByUrl (string $url, [int $catId = false])

Параметры

  • $url: запрашиваемого товара.
  • $catId: id-категории, т.к. в разных категориях могут быть одинаковые url.

Описание

Получает продукт по его URL.

Пример использования

  1.  $url 'nike-air-versitile_102';
  2.  $result Models_Product::getProductByUrl($url);
  3.  viewData($result);

Метод

array getProductByUserFilter ([string $where = ''])

Параметры

  • $where: необязательный параметр, формирующий условия поиска, например: id = 1

Описание

Получает информацию о запрашиваемом товаре.

Пример использования

  1.  $where '`cat_id` IN (5,6)';
  2.  $model new Models_Product;
  3.  $result $model->deleteImagesFolder($where);
  4.  viewData($result);

Метод

bool|float getProductPrice (int $id)

Параметры

  • $id: id изменяемого товара.

Описание

Получает цену запрашиваемого товара по его id.

Пример использования

  1.  $result Models_Product::getProductPrice(5);
  2.  viewData($result);

Метод

int getProductsCount ()

Описание

Возвращает общее количество продуктов каталога.

Пример использования

  1.  viewData($result);

Метод

array getVariants (int $id, [string|bool $title_variants = false], [bool $sort = false])

Параметры

  • $id: id продукта для поиска его вариантов
  • $title_variants: название варианта продукта для поиска его вариантов
  • $sort: использовать ли сортировку результатов (из настройки 'filterSortVariant')

Описание

Возвращает набор вариантов товара.

Пример использования

  1.  $productId 25;
  2.  $model new Models_Product;
  3.  $variants $model->getVariants($productId);
  4.  viewData($variants);

Метод

array imagesConctruction (string $imageUrl, string $imageTitle, string $imageAlt, [string $id = 0])

Параметры

  • $imageUrl: строка с разделителями | между ссылок.
  • $imageTitle: строка с разделителями | между заголовков.
  • $imageAlt: строка с разделителями | между тестов.
  • $id: ID товара.

Описание

Создает массивы данных для картинок товара, возвращает три массива со ссылками, заголовками и альт, текстами.

Пример использования

  1.    $model new Models_Product();
  2.    $imageUrl '120.jpg|121.jpg';
  3.    $imageTitle 'Каритинка товара';
  4.    $imageAlt 'Альтернативная подпись картинки';
  5.    $res $model->imagesConctruction($imageUrl$imageTitle$imageAlt);
  6.    viewData($res);

Метод

bool importUpdateProductVariant (int $id, array $array, int $product_id)

Параметры

  • $id: id варианта.
  • $array: массив поле = значение.
  • $product_id: id продукта.

Описание

Аналогичная fastUpdateProductVariant функция, но с поправками для процесса импорта вариантов.

Пример использования

  1.    $model new Models_Product();
  2.    $model->importUpdateProductVariant(5$array2);

Метод

void increaseCountProduct (int $id, string $code, int $count)

Параметры

  • $id: номер продукта.
  • $code: артикул.
  • $count: прибавляемое значение к остатку.

Описание

Обновляет остатки продукта, увеличивая их на заданное количество.

Пример использования

  1.  Models_Product::increaseCountProduct(37'SKU348'2);

Метод

void movingProductImage (array $images, int $productId, [string $path = 'uploads'], [bool $removeOld = true])

Параметры

  • $images: - массив изображений
  • $productId: - id товара
  • $path: - папка в которой лежат исходные изображения
  • $removeOld: - флаг удаления изображений из папки $path после копирования в новое место

Описание

Копирует изображения товара в новую структуру хранения.

Метод

array noPrintProperty ()

Описание

Возвращает массив id характеристик товара, которые ненужно выводить в карточке.

Пример использования

  1.  $result Models_Product::noPrintProperty($productId);
  2.  viewData($result);

Метод

array parseMarginToProp (string $value)

Параметры

  • $value: строка, которую надо распарсить

Описание

Отделяет название характеристики от цены название_пункта#стоимость#.

Пример входящей строки: "Красный#300#"

Пример использования

  1.  $model new Models_Product;
  2.  $result $model->parseMarginToProp('Красный#300#');
  3.  echo $result;

Метод

array prepareImageName (array $product)

Параметры

  • $product: массив с товаром

Описание

Подготавливает названия изображений товара.

Пример использования

  1.    $model new Models_Product;
  2.    $res $model->prepareImageName($product);
  3.    viewData($res);

Метод

bool saveUserProperty (array $userProperty, int $id)

Параметры

  • $userProperty: набор характеристик.
  • $id: - id товара.

Описание

Сохраняет пользовательские характеристики для товара (внутренний метод, используется только при сохранении товара).

Метод

bool saveVariants ([array $variants = array()], int $id)

Параметры

  • $variants: набор вариантов
  • $id: id товара

Описание

Сохраняет варианты товара.

Пример использования

  1.  $variants Array(
  2.   => Array(
  3.      'color' => 19// id цвета варианта
  4.      'size' => 11// id размера варианта
  5.      'title_variant' => '22 Голубой'// название
  6.      'code' => 'SKU241'// артикул
  7.      'price' => 2599// цена
  8.      'old_price' => 3000// старая цена
  9.      'weight' => 1// вес
  10.      'count' => 50// количество
  11.      'activity' => 1// активность
  12.      'id' => 1249// id варианта
  13.      'currency_iso' => 'RUR'// код валюты
  14.      'image' => '13140250299.jpg' // название картинки варианта
  15.   )
  16.  );
  17.  $model new Models_Product();
  18.  $model->saveVariants($variants51);

Метод

void updatePriceCourse (string $iso, [array $listId = array()])

Параметры

  • $iso: валюта в которую будет производиться конвертация.
  • $listId: массив с id продуктов.

Описание

Обновления цены выдранных товаров в соответствии с курсом валюты.

Пример использования

  1.  $model new Models_Product;
  2.  $model->updatePriceCourse('USD'array(234));

Метод

bool updateProduct (array $array)

Параметры

  • $array: массив с данными о товаре.

Описание

Изменяет данные о товаре.

Пример использования

  1.  $array array(
  2.   'id' => 23// ID товара
  3.   'title' => 'title'// название товара
  4.   'url' => 'link'// последняя часть ссылки на товар
  5.   'code' => 'CN230'// артикул товара
  6.   'price' => 100// цена товара
  7.   'old_price' => 200// старая цена товара
  8.   'image_url' => 1434653074061713.jpg// последняя часть ссылки на изображение товара
  9.   'image_title' => ''// title изображения товара
  10.   'image_alt' => ''// alt изображения товара
  11.   'count' => 77// остаток товара
  12.   'weight' => 5// вес товара
  13.   'cat_id' => 4// ID основной категории товара
  14.   'inside_cat' => '1,2'// дополнительные категории товаров
  15.   'description' => 'descr'// описание товара
  16.   'short_description' => 'short descr'// краткое описание товара
  17.   'meta_title' => 'title'// seo название товара
  18.   'meta_keywords' => 'title купить, CN230, title'// seo ключевые слова
  19.   'meta_desc' => 'meta descr'// seo описание товара
  20.   'currency_iso' => 'RUR'// код валюты товара
  21.   'recommend' => 0// выводить товар в блоке рекомендуемых
  22.   'activity' => 1// выводить товар
  23.   'unit' => 'шт.'// единица измерения товара (если null, то используется единица измерения основной категории товара)
  24.   'new' => 0// выводить товар в блоке новинок
  25.   'userProperty' => Array// массив с характеристиками товара
  26.   'related' => 'В-500-1'// артикулы связанных товаров
  27.   'variants' => Array// массив с вариантами товаров
  28.   'related_cat' => null// ID связанных категорий
  29.   'lang' => 'default'// язык для сохранения
  30.   'landingTemplate' => 'noLandingTemplate'// шаблон для лэндинга товара
  31.   'ytp' => ''// строка с торговым предложением для лэндинга
  32.   'landingImage' => 'no-img.jpg'// изображение для лэндинга
  33.   'storage' => 'all' // склад товара
  34.  );
  35.  $model new Models_Product();
  36.  $model->updateProduct($array);