
Товары (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
<?php
switch ($modx->event->name) {
// получение списка товаров
case 'gsOnBeforeGetProducts':
// $query - запрос выборки
// $range - название листа таблицы, куда будут экспортироваться данные
break;
case 'gsOnGetProducts':
// $products - массив товаров со всеми полями
// $range - название листа
break;
}Примеры
Выбираем продукты с определенным производителем
1.1 по id производителя:
php<?php if ($modx->event->name == 'gsOnBeforeGetProducts') { $query->where(array('Data.vendor' => 8)); // id производителя }1.2 по названию производителя
php<?php if ($modx->event->name == 'gsOnBeforeGetProducts') { $query->where(array('Vendor.name' => 'Samsung')); }Прибавляем 10% к цене, а текущую цену записываем в старую цену.
php<?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); }
