shopProduct

Класс используется для работы с отдельным товаром. Он позволяет получать информацию о товаре, модифицировать и сохранять товар в базу данных без обращения к отдельным классам моделей.

Array access

Работа с классом строится на основе обращения к объекту как к массиву. При первом чтении данных происходит обращение к БД и загрузка их в кеш. Последующее чтение берёт данные из кеша.

Array access работает и на чтение, и на запись данных. При записи в объект данные сохраняются во внутреннем кеше, а в БД попадаюттолько после вызова метода save().

Пример:

$product = new shopProduct(100500);
echo $product['name'];
$product['name'] = 'Супер товар';
$product->save();

Доступные поля

// Все поля таблицы shop_product доступны на чтение и запись.
int      $product['id']
string   $product['name']
string   $product['summary']
string   $product['meta_title']
string   $product['meta_keywords']
string   $product['meta_description']
string   $product['description']
int      $product['contact_id']
string   $product['create_datetime']
string   $product['edit_datetime']
int      $product['status']
int      $product['sku_id']
int      $product['sku_type']
string   $product['url']
int      $product['sort']
float    $product['price']
float    $product['compare_pricese']
float    $product['base_price_selectable']
float    $product['compare_price_selectable']
float    $product['purchase_price_selectable']
float    $product['min_price']
float    $product['max_price']
string   $product['currency']
int      $product['tax_id']
int|null $product['count']
int      $product['type_id']
int      $product['category_id']
read-only int $product['sku_count']

// Эти поля доступны только на чтение.
// Подробнее см. описание соответствующего метода.
read-only array     $product['type']                      // getType()
read-only string    $product['currency_html']            // getCurrencyHtml()
read-only waContact $product['contact']               // getContact()
read-only array     $product['images']                    // getImages()
read-only array     $product['pages']                     // getPages()
read-only array     $product['next_forecast']             // getNextForecast()
read-only array     $product['reviews']                   // getReviews()
read-only array     $product['sku_features']              // getSkuFeatures()

// Эти поля доступны на чтение и запись.
// Подробнее см. getData() и setData() в соответствующей модели.
array $product['params']                        // shopProductParamsModel
array $product['skus']                          // shopProductSkusModel
array $product['sets']                          // shopProductSetsModel
array $product['tags']                          // shopProductTagsModel
array $product['features']                      // shopProductFeaturesModel
array $product['features_selectable']           // shopProductFeaturesSelectableModel
array $product['categories']                    // shopProductCategoriesModel
array $product['og']                            // shopProductOgModel

public function __construct ($data = array(), $is_frontend=false)

Конструктор.

Параметры

  • $data

    Либо product_id, либо массив с данными из таблицы shop_product.

  • $is_frontend

    В режиме фронтэнда происходит округление всех цен, возвращаемых этим классом, если округление настроено для выбранной теукщим авторизованным пользователем валюты фронтэнда. Экземпляр shopProduct, созданный в режиме фронтэнда, доступен только для чтения.

Примеры

$product = new shopProduct(100500);
echo $product['name'];

public function isFrontend ()

Возвращает $is_frontend, переданный в конструктор. См. описание __construct

public function getId ()

Возвращает product_id. Эквивалентно $product['id']

public function getImages ($sizes = array(), $absolute = false)

Получает набор изображений товара. Возвращает массив image_id => массив с информацией об изображении из таблицы shop_product_images. Вызов без параметров эквивалентен значению $product['images']

Параметры

  • $sizes

    Указывает, для каких размеров изображений нужно подготовить URL.

    $sizes может иметь один из нескольких форматов.

    — Ассоциативный массив name => size_string
    Массив данных одного изображения будет содержать ключи url_%name%, значениями которых будут URL до картинок размера size_string.
    size_string может быть в одном из форматов:
      — WIDTHxHEIGHT: например, '400x300'. Уменьшит размер до нужного, сохраняя пропорции, и вырежет прямоугольник указанного размера по центру.   — WIDTHx0 и 0xHEIGHT: например, '400x0'. Уменьшит до размера по указанной стороне, сохраняя пропорции. Другая сторона окажется меньше или больше, в зависимости от пропорций изображения.   — MAXSIZE: например, '400'. Уменьшит до указанного размера по большей стороне, сохраняя пропорции. Другая сторона окажется меньше, чем указанный размер.

    — Строка или число: предустановленные значения big|default|thumb|crop|crop_small конвертируются в соответствующий размер, а всё остальное воспринимается так же, как $size = array($size => $size).

  • $absolute

    Возвращать ли абсолютные или относительные URL изображений.

Пример

$product = new shopProduct(100500);
$images = $product->getImages('big');
wa_dump($images);

Результат

Array
(
  1066 => Array
  (
    id => '1066'
    product_id => '100500'
    upload_datetime => '2013-11-13 17:31:02'
    edit_datetime => NULL
    description => NULL
    sort => '16'
    width => '782'
    height => '1043'
    size => '318829'
    filename => 'foto_2.JPG'
    original_filename => 'фото 2.JPG'
    ext => 'JPG'
    badge_type => NULL
    badge_code => NULL
    edit_datetime_ts => NULL
    url_big => '/wa-data/public/shop/products/08/62/26208/images/1066/foto_2.JPG.970.JPG'
  )
)

public function getPages ()

Подстраницы товара. Список строк таблицы shop_product_pages. Вызов эквивалентен обращению к $product['pages']

Пример

$product = new shopProduct(100500);
$pages = $product->getPages();
wa_dump($pages);

Результат

Array
(
  1 => Array
  (
    id => '1'
    product_id => '100500'
    name => 'ку-ку'
    title => ''
    url => 'ku-ku'
    content => '

111123

' create_datetime => '2015-06-19 13:46:47' update_datetime => '2015-06-19 13:46:47' create_contact_id => '1' sort => '0' status => '1' keywords => '' description => '' ) )

public function getContact ()

waContact создавший товар. Вызов эквивалентен обращению $product['contact'].

public function getCurrencyHtml ()

Знак валюты товара. Эквивалентно обращению $product['currency_html']

public function save ($data = array())

Сохранить изменения, внесённые через array access и/или переданные в параметре $data.

Параметры

  • $data

    Массив key => value, в котором можно передать данные для сохранения. То же самое, что присвоить $product[key] = value в цикле, в потом вызвать ->save() без параметра.

Примеры

$product = new shopProduct(100500);
$product['name'] = 'Супер товар';
$product->save();

public function getData ($name = null)

Получить данные из внутреннего кеша shopProduct без обращения к БД. Если данных в кеше нет, вернёт null. Если данные в кеше есть, вернёт то же самое, что вернул бы $product[$name].

Параметры

  • $name

    Ключ для получения данных. Если не указан, метод getData() вернёт весь кеш.

public function setData ($name, $value)

То же самое, что $product[$name] = $value

public function getType ()

Информация о типе товара, строка из таблицы shop_type. В исключительной ситуации, когда тип товара отсутствует в БД или не задан для товара, метод вернёт null. Вызов эквивалентен обращению $product['type'].

Примеры

$product = new shopProduct(100500);
$type = $product->getType();
wa_dump($type);

Результат

Array
(
  id => '3'
  sort => '3'
  name => 'Самолёты'
  icon => 'ss pt rocket'
  cross_selling => 'alsobought'
  upselling => '1'
  count => '33'
)

public function upSelling ($limit = 5, $available_only = false)

Список "схожие и альтернативные товары" для текущего товара.

Параметры

  • $limit

    Вернуть не больше указанного количества товаров в списке.

  • $available_only

    Пропускать товары, отсутствующие на складе или недоступные для покупки.

Примеры

$product = new shopProduct(100500);
$upselling_products = $product->upSelling(2);
wa_dump($upselling_products);

Результат

Array
(
  26521 => Array
  (
    id => '26521'
    name => 'Боинг 747'
    summary => '...'
    ...
  )
  26456 => Array
  (
    ...
  )
)

public function crossSelling ($limit = 5, $available_only = false, $exclude = array())

Список "перекрёстные продажи" для текущего товара.

Параметры

  • $limit

    Вернуть не больше указанного количества товаров в списке.

  • $available_only

    Пропускать товары, отсутствующие на складе или недоступные для покупки.

  • $exclude

    Список product_id, которые нужно исключить из перекрёстных продаж.

Примеры

$product = new shopProduct(100500);
$crossselling_products = $product->crossSelling(2);
wa_dump($crossselling_products);

Результат

Array
(
  26468 => Array
  (
    id => '26468'
    name => 'Изделия из ротанга'
    summary => 'Шары, звезды, сердца, месяцы'
    ...
  )
  26475 => Array
  (
    ...
  )
)

public function getNextForecast ()

Информация о продажах товара за последние 90 дней и оценка продаж на будущее. Эквивалентно обращению $product['next_forecast'].

Примеры

$product = new shopProduct(100500);
$forecast = $product->getNextForecast();
wa_dump($forecast);

Результат

Array
(
  sold => 2                     // количество продаж в месяц на базе статистики за 90 дней
  sold_rounded => 2             // ...округлённое до целого
  sold_rounded_1 => 2           // ...округлённое до 1 знака
  sold_rounded_1_str => '2.0'   // ...округлённое и отформатированное в строку
  sales => 19980                // сумма продаж в основной валюте магазина
  profit => 19980               // прибыль в основной валюте магазина
  days => 150                   // количество дней, когда товар закончится на складе
  date => 1464444704            // timestamp, когда товар закончится на складе
  count => 10                   // количество товара на складе
)

public function getReviews ()

Отзывы покуаптелей о товаре. Эквивалентно обращению $product['reviews'].

Примеры

$product = new shopProduct(100500);
$reviews = $product->getReviews();
wa_dump($reviews);

Результат

Array
(
  257 => Array
  (
    id => '257'
    left_key => '513'
    right_key => '514'
    depth => '0'
    parent_id => '0'
    product_id => '100500'
    review_id => '0'
    datetime => '2015-07-13 14:13:51'
    status => 'approved'
    title => 'Супер!'
    text => 'Покупаю уже в сотый раз. Бескомпромиссно лучший товар на всём белом свете.'
    rate => '5.00'
    contact_id => '1'
    name => NULL
    email => NULL
    site => NULL
    auth_provider => 'user'
    ip => '2130706433'
    datetime_ts => 1436786031
    author => Array
    (
      name => 'Василий Пупкин'
      email => NULL
      site => NULL
      id => '1'
      is_user => '1'
      is_company => '0'
      photo => '1663851884'
      photo_url_50 => '/wa-data/public/contacts/photos/01/00/1/1663851884.50x50@2x.jpg'
      photo_url_20 => '/wa-data/public/contacts/photos/01/00/1/1663851884.20x20@2x.jpg'
    )
  )
)

public function getSkuFeatures ()

Для товара в режиме артикулов "выбор параметров" возвращает информацию о том, какие значения характеристик соответствуют каким артикулам. Эквивалентно обращению $product['sku_features'].

Примеры

$product = new shopProduct(100500);
$sku_features = $product->getSkuFeatures();
wa_dump($sku_features);

Результат

Array
(
  470 => Array
  (
    color => shopColorValue object
    {
      shopColorValuecode => '65280'
      shopColorValuevalue => 'зеленый'
      shopColorValueid => '6'
      shopColorValuesort => '6'
      shopColorValue_data => NULL
      feature_id => '20'
    }
  )
  471 => Array
  (
    color => shopColorValue object
    {
      shopColorValuecode => '9109759'
      shopColorValuevalue => 'фиолетовый'
      shopColorValueid => '7'
      shopColorValuesort => '7'
      shopColorValue_data => NULL
      feature_id => '20'
    }
  )
)

public function checkRights ()

Проверяет права достуа к товару текущего авторизованного пользователя бекенда. Возвращает true, если права есть, и false, если прав нет.

public function duplicate ()

Копирует товар. Возвращает новый объект shopProduct - копию текущего, сохранённую в БД с другим id.