Товары

11 мая 2020, 07:33

Товары (msProduct)

Поля экспорта

Поддерживаются все стандартные поля ресурса. И еще свои:

Поле Название
price Цена
old_price Старая цена
article Артикул
weight Вес
color Список цветов
size Список размеров
vendor Производитель (id)
made_in Страна
tags Список тегов
new Новый
favorite Особый
popular Популярный
categories Список категорий (id)
images Список картинок
option.название_опции Опции

Модификации полей

Поле Название
vendor_name Производитель (name)
categories_name Список категорий (name)

ms2Gallery

Поле Название
images список картинок

Все файлы картинок должны быть на сервере

Пример экспорта

Поля экспорта: id,article,pagetitle,template_name,price,color,size,vendor_name

Результат:

Системные события

Класс gsProduct генерирует следующие события:

<?php
switch($modx->event->name) {
    // получение списка товаров
    case 'gsOnBeforeGetProducts':
        // $query - запрос выборки
        // $range - название листа таблицы, куда будут экспортироваться данные
        break;
    case 'gsOnGetProducts':
        // $products - массив товаров со всеми полями
        // $range - название листа
        break;
}

Примеры

1.Выбираем продукты с определенным производителем

1.1 по id производителя:

<?php
if($modx->event->name == 'gsOnBeforeGetProducts') {
    $query->where(array('Data.vendor' => 8)); // id производителя
}

1.2 по названию производителя

<?php
if($modx->event->name == 'gsOnBeforeGetProducts') {
    $query->where(array('Vendor.name' => 'Samsung'));
}

2.Прибавляем 10% к цене, а текущую цену записываем в старую цену.

<?php
if($modx->event->name == 'gsOnGetProducts') {
    $modx->event->params['products'] = array_map(function($product){
        if(isset($product['old_price']) && !empty($product['price'])) {
            $product['old_price'] = $product['price'];
        }
        if(!empty($product['price'])) {
            $product['price'] = $product['price'] * 1.1;
        }
        return $product;
    },$products);
}


Следующий документ
Заказы minishop2