Хранение информации о товаре в базе данных Shop-Script
-
shop_product
-
nameНазвание товара.
-
summaryКраткое описание для отображения в списках. Можно использовать HTML-теги, но они могут вырезаться темами дизайна.
-
meta_title
meta_keywords
meta_descriptionЭлемент<title>
и метатеги добавляются в секцию<head>
на странице товара. Спецсимволы HTML экранируются. -
descriptionПолное описание, отображается на странице товара. HTML-код разрешён.
-
contact_id
create_datetime
edit_datetimeИнформация о создании и редактировании товара. -
status1 — товар опубликован на сайте,
0 — товар скрыт с сайта: не отображается в списках, его нельзя добавить в корзину, но можно открыть страницу товара по прямой ссылке,
-1 — товар снят с публикации и недоступен на витрине. -
urlИдентификатор товара для использования в URL.
-
type_idТип товара из таблицы
shop_type
. -
tax_idНалог, применяемый к товару, из таблицы
shop_tax
. -
category_idОсновная категория товара.
-
image_id
image_filename
extИнформация об основном изображении товара. -
badgeИдентификатор наклейки для изображений товара, например:
'new'
,'bestseller'
и т. п.
Либо один из стандартных идентификаторов, перечисленных в методеshopProductModel::badges()
, либо HTML-код собственной наклейки. -
sku_idID основной модификации товара. Информация об этой модификации дополняет информацию о товаре при отображении в списках.
-
sku_countКоличество модификаций товара.
-
cross_selling
upsellingПерекрестные продажи (cross-selling) и схожие/альтернативные товары (upselling):
0 — отключены,
1 — автоматический подбор по настройкам типа товара,
2 — список указан вручную, связь по таблицеshop_product_related
. -
ratingРейтинг товара от 1 до 5.
-
rating_countКоличество голосов, учтённых в рейтинге.
-
total_salesОбщая сумма продаж в основной валюте магазина.
-
countКоличество всех модификаций товара на всех складах.
NULL — есть хотя бы одна модификация, которая всегда в наличии (с пустым, бесконечным значением остатка).
0 — товара нет на складе. -
price
compare_price
min_price
max_price
base_price_selectable
compare_price_selectable
purchase_price_selectable
currencyИнформация о ценах товара.
См. ниже описание структуры информации о ценах. -
shop_product_skus
-
skuТекстовый идентификатор артикула. Может использоваться при импорте, при поиске и отображаться на сайте для удобства покупателя.
-
sortАртикулы и модификации отображаются на витрине от меньшего значения к большему.
-
nameНазвание артикула.
-
available1 — доступен для заказа,
0 — недоступен. -
status1 — виден на витрине,
0 — скрыт. -
image_idID основного изображения модификации товара.
-
file_name
file_size
file_descriptionИнформация о файле, прикрепленном к модификации. Ссылка на этот файл отправляется покупателю после выполнения заказа.
Используется для продажи цифровых товаров. -
countКоличество модификации на всех складах.
NULL — всегда в наличии (бесконечный остаток).
0 — нет на складе. -
price
primary_price
purchase_price
compare_priceИнформация о цене.
См. ниже раздел о хранении информации о ценах. -
Цены
-
Магазин позволяет выбрать для каждого товара, в какой валюте сохранять цены всех его модификаций. 3-символьный ISO-код валюты товара хранится в поле
shop_product.currency
, а информация обо всех валютах магазина — в таблицеshop_currency
.Некоторые цены в таблицах
shop_product
иshop_product_skus
хранятся в основной валюте магазина, а не в валюте товара. Это нужно для оптимизации SQL-запросов, чтобы не использовать дополнительные таблицы для фильтрации товаров. Ниже описано, какая валюта используется для каждого из полей. -
shop_product
-
Цены, которые показываются в списках и используются фильтрами, хранятся в основной валюте магазина.
-
price
compare_price
min_price
max_priceосновная цена,
зачеркнутая цена,
от ...
до ... -
Базовые параметры, выраженные в валюте товара, используются для автоматического создания модификаций товара.
-
base_price_selectable
compare_price_selectable
purchase_price_selectableцена,
зачеркнутая цена,
закупочная цена. -
shop_product_skus
-
Цены отдельных модификаций, выраженные в валюте товара, отображаются на странице товара и учитываются при создании заказа.
-
price
compare_price
purchase_priceцена,
зачёркнутая цена,
закупочная цена учитывается для расчёта прибыли в отчётах. -
primary_priceЦена модификации, переведённая в основную валюту магазина. Используется при применении фильтров.
-
Складские остатки
-
Магазин поддерживает работу с несколькими складами. При создании заказа сотрудник магазина может выбрать, с какого склада списать остатки товара. Можно также настроить выбор склада при оформлении заказа на витрине.
Каждый товар может независимо от других товаров использовать или не использовать детализацию остатков по складам. Если в таблице
shop_product_stocks
есть хотя бы одна запись для товара, то товар использует детализацию по складам.В режиме детализации по складам остатки каждой модификации на каждом складе хранятся в таблице
shop_product_stocks
. ЗначениеNULL
в полеcount
значит, что количество товара не ограничено. 0 — товара на данном складе нет.В поле
shop_product_skus.count
в режиме детализации по складам хранится общее количество модификации на всех складах.NULL
— есть хотя бы один склад с неограниченным запасом товара. В полеshop_product.count
хранится общее количество на складе всех модификаций товара.NULL
— складской запас товара не ограничен.Без детализации по складам таблица
shop_product_stocks
не используется. Количество каждой модификации хранится напрямую в полеshop_product_skus.count
, и общее количество на складе всех модификаций — вshop_product.count
(с тем же смыслом значенияNULL
).В таблице
shop_product_stocks_log
хранится история изменения складских остатков, которая отображается в бекенде магазина.В Shop-Script есть методы, которые исправляют значения в полях
shop_product.count
иshop_product_skus.count
с учетом детализации по складам.// Исправить shop_product.count и shop_product_skus.count на базе shop_product_stocks, если товар находится в режиме детализации по складам; // либо исправить только shop_product.count на базе shop_product_skus.count, если товар в режиме без детализации. shopProductModel->correct(product_id); // Исправить shop_product.count на базе shop_product_skus.count для всех товаров одним запросом. // Может быть полезно после большого обновления каталога товаров, но не меняет shop_product_skus.count на основе shop_product_stocks. shopProductModel->correctCount();
-
Характеристики товаров
-
Характеристики хранятся особым образом, чтобы оптимизировать работу фильтров в списках товаров.
Таблица
shop_feature
описывает основные параметры характеристики: название и тип. В таблицахshop_feature_values_*
(для каждого типа характеристик отдельная таблица:varchar
,text
,double
,range
,color
иdimension
) хранятся все возможные значения характеристик для всех товаров. Таблицаshop_product_features
связывает конкретный товар и модификацию с конкретным значением характеристики.В таблице
shop_product_features_selectable
хранится информация о том, какие значения характеристик для каких товаров были выбраны для автоматической генерации модификаций. -
Другие таблицы, связанные с товарами
-
shop_product_imagesИзображения.
-
shop_product_ogМетаинформация Open Graph для интеграции с соцсетями.
-
shop_product_pagesПодстраницы.
-
shop_product_paramsДополнительные параметры для использования в шаблонах в виде
{$product.params.key}
. -
shop_product_reviewsОтзывы покупателей.
-
shop_product_servicesДетальные настройки услуг для товаров и отдельных модификаций, для которых недостаточно базовых настроек, выбранных для всего типа товара.
-
shop_product_tagsТеги товаров.
-
shop_product_relatedХранилище для рекомендуемых товаров upselling и cross-selling, если нужно указать список товаров вручную вместо использования автоматических настроек.