Scriptify.ru

Введение

Для детального изучения классов Shop-Script крайне рекомендую установить приложение "Разработка". Для этого:

  • Копируем папку wa-apps/developer в свою папку на хостинг или локальный сервер

  • Заходим в wa-config/apps.php и добавляем в массив
'developer' => true,
  • Заходим в "Инсталлер-Настройки" и включаем Режим отладки

  • Перезагружаем страницу и заходим в приложение

Приложение "Разработчик" для Webasyst Shop-Script

Весь приведенный код пишется в этом приложении

Класс shopProductsCollection предназначен для формирования списка, или коллекции товаров во фронтенде или бэкенде. Код класса находится в файле /wa-apps/shop/lib/classes/shopProductsCollection.class.php. Посмотрим, какие у него есть методы:

wa('shop'); // указывает, что используется приложение shop
$collection = new shopProductsCollection();
print_r(get_class_methods($collection));

/*
Array
(
    [0] => __construct
    [1] => setOptions
    [2] => filters
    [3] => parseConditions
    [4] => orderBy
    [5] => getOrderBy
    [6] => getSQL
    [7] => count
    [8] => getProducts
    [9] => getTitle
    [10] => getInfo
    [11] => addTitle
    [12] => groupBy
    [13] => addWhere
    [14] => addJoin
    [15] => getHash
    [16] => getFeatureValueIds
    [17] => getPriceRange
)
*/

Создание коллекции товаров

Коллекция товаров создается следующим образом:

$collection = new shopProductsCollection($hash);

в качестве аргумента $hash можно указывать следующие параметры:

  • array(12,23,34) или 'id/12,23,34' - список товаров по их id

  • 'related/cross_selling/12' - перекрестные товары

  • 'related/upselling/23' - схожие и альтернативные товары

  • 'category/208' - товары определенной категории

  • 'search/query=style', 'search/tag=style', tag/style', 'search/name=SuperProduct' - поиск по имени или тегу

  • 'search/type_id=1' - поиск по полю в таблице данных shop_product

  • 'type/2' - поиск по типу

  • 'search/color.value_id=6' - поиск по характеристике

Рассмотрим методы данного класса:

getProducts() - получение коллекции

Метод getProducts() позволяет получить массив, который содержит все данные о коллекции.

wa('shop');
$collection = new shopProductsCollection('id/1,2');
print_r($collection->getProducts());

/*
Array
(
    [2] => Array
        (
            [id] => 2
            [name] => Товар 2
            ...
        )

    [1] => Array
        (
            [id] => 1
            [name] => Товар 1
            ...
        )

)
*/

orderBy() - сортировка коллекции

Метод orderBy() позволяет сортировать коллекцию по указанному полю. Например, сделаем сортировку по id товара по возрастанию:

wa('shop');
$collection = new shopProductsCollection('id/1,2');
$collection->orderBy('id', 'ASC');
print_r($collection->getProducts());

/*
Array
(
    [1] => Array
        (
            [id] => 1
            ...
        )

    [2] => Array
        (
            [id] => 2
            ...
        )
*/

getOrderBy() - информация о сортировке коллекции

Метод getOrderBy() возвращает массив, в котором содержится информация по сортировке товара:

wa('shop');
$collection = new shopProductsCollection('id/1,2');
print_r($collection->getOrderBy());

/*
По умолчанию сортировка по времени создания товара

Array
(
    [0] => create_datetime
    [1] => desc
)
*/

$collection->orderBy('id', 'ASC');
print_r($collection->getOrderBy());

/*
Array
(
    [0] => id
    [1] => asc
)
*/      

getSQL() - получение информации об SQL-запросе

Метод getSQL() показывает выполненный SQL-запрос:

wa('shop');
$collection = new shopProductsCollection('id/1,2');
print_r($collection->getSQL());

// FROM shop_product p WHERE p.id IN (1,2)      

count() - количество товаров в коллекции

Метод count() показывает количество товаров в коллекции:

wa('shop');
$collection = new shopProductsCollection('id/1,2');
print_r($collection->count()); // 2

getFeatureValueIds() - характеристики товаров

Метод getFeatureValueIds() возвращает id характеристик товаров и их значения

wa('shop');
$collection = new shopProductsCollection('id/1,2');
print_r($collection->getFeatureValueIds());

/*
Array
(
    [1] => Array
        (
            [0] => 1
            [1] => 8
        )

    [3] => Array
        (
            [0] => 2
            [1] => 3
        )

)
*/

getPriceRange() - максимальная и минимальная цена товара в коллекции

Метод getPriceRange() возвращает массив, в котором указана минимальная и максимальная цена в коллекции:

wa('shop');
$collection = new shopProductsCollection('id/1,2');
print_r($collection->getPriceRange());

/*
Array
(
    [min] => 100
    [max] => 300
)
*/

Прочие методы

addWhere() - добавление SQL запроса WHERE

addJoin() - добавление SQL запроса JOIN

getInfo() - различная информация о коллекции

getHash() - преобразование хеша в массив

Содержание статьи