Записи с меткой "Товар"
SQL запросы для товаров
UPDATE `polyankake_hs`.`shop_items` SET `shop_currency_id` = '1' WHERE `shop_id` = 123; // вместо 123 указать ID магазина
UPDATE `shop_items` SET `type` = '2'
// Удаляем товары, которых нет на всех складах
UPDATE `shop_items` SET `deleted` = (
SELECT IF(SUM(`shop_warehouse_items`.`count`) = 0, 0, 0)
FROM `shop_warehouse_items` WHERE `shop_warehouse_items`.`shop_item_id` = `shop_items`.`id`
)
WHERE `shop_items`.`shop_id` = 1; // номер магазина заменить
// Удаляем все товары из указанного магазина
UPDATE `shop_items` SET `deleted` = 1 WHERE `shop_id` = 123 // вместо 123 указать ID магазина
// Удаляем товары у которых отключена активность
UPDATE `shop_items` SET `deleted` = 1 WHERE `shop_items`.`active` = 0
UPDATE `shop_items` SET `deleted` = 1 WHERE `deleted` = 1
// Удаляем товары у которых отключена индексация
UPDATE `shop_items` SET `deleted` = 1 WHERE `shop_items`.`indexing` = 0
TRUNCATE TABLE `shop_item_associated`;
UPDATE `shop_warehouse_items` SET `count` = 1 WHERE `shop_warehouse_id` = 55;
UPDATE `shop_warehouse_items` SET `count` = '100'
UPDATE `shop_warehouse_items` SET `count` = '999' WHERE `count` = 0;
UPDATE `shop_items` SET `shop_items`.`indexing` = (
SELECT IF(SUM(`shop_warehouse_items`.`count`) > 0, 1, 0)
FROM `shop_warehouse_items` WHERE `shop_warehouse_items`.`shop_item_id` = `shop_items`.`id`
)
WHERE `shop_items`.`shop_id` = 123; // вместо 123 указать ID магазина
UPDATE `shop_items` SET `shop_items`.`indexing` = 0 WHERE `shop_items`.`active` = 0
Удалить артикул у всех товаров с Артикулом
UPDATE `shop_items` SET `marking` = '' WHERE `marking` != '' AND `shop_id` = 123; // вместо 123 указать ID магазина
Добавить к названию товара какое-то слово (символ) в определённой группе
update shop_items set name = concat('Пицца ', name) where shop_group_id = 746
Добавить к названию товара какое-то слово (символ) в нескольких группах
update shop_items set name = concat('Пицца ', name) where shop_group_id IN (746, 747, 748)
Добавить к названию товара артикул в определённых группах
update shop_items set name = concat(name, ' ', marking) where shop_group_id IN (746, 747, 748)
Удалить определённый символ из названия товара
UPDATE `shop_items` SET name = REPLACE(`name`,'*','х' ) // заменяем "*" на "х"
Отключить активность всем Купонам
UPDATE `shop_purchase_discount_coupons` SET `active` = 0
Удаление значений несуществующих товаров
DELETE `property_value_strings`
FROM `property_value_strings`
LEFT JOIN `shop_items` ON `property_value_strings`.`entity_id` = `shop_items`.`id`
WHERE `shop_items`.`id` IS NULL
DELETE `shop_warehouse_items`
FROM `shop_warehouse_items`
LEFT JOIN `shop_items` ON `shop_warehouse_items`.`shop_item_id` = `shop_items`.`id`
WHERE `shop_items`.`id` IS NULL
SELECT `shop_item_prices`.`id`, `shop_items`.`id`
FROM `shop_item_prices`
LEFT JOIN `shop_items` ON `shop_item_prices`.`shop_item_id` = `shop_items`.`id`
WHERE `shop_items`.`id` IS NULL
Выбор товаров из группы и подгруппы
SELECT `shop_items`.*
FROM `shop_items`
JOIN `shop_groups` ON `shop_groups``.id` = `shop_items`.`shop_group_id`
AND (`shop_groups`.`parent_id` IN (1,2) OR `shop_groups`.`id` IN (1,2))
WHERE `shop_items`.`shortcut_id` = 0 AND `shop_items`.`modification_id` = 0
Поиск дублей в MySQL
SELECT COUNT(`path`) AS `count`, `id`, `shop_group_id`, `shop_producer_id`, `name`, `active`, `path`, `deleted` FROM `shop_items` WHERE `shop_id` = 1 AND `modification_id` = 0 AND `shortcut_id` = 0 GROUP BY `path` HAVING COUNT(`path`) > 1
Установить значение "1 " для свойства с ID 555
UPDATE `property_value_ints` SET value = 1 WHERE `property_id` = 555
Удалить SEO заголовки title, description, keywords у товаров определенной группы
UPDATE `shop_items` SET `seo_title` = '', `seo_description` = '',`seo_keywords` = '' WHERE `shop_group_id` = 123
Удаление значений свойств у товаров
Удалить все свойства тип "Строка" с ID = 999 у всех товаров
DELETE FROM property_value_strings WHERE property_id = 999;
Удалить все свойства тип "Строчка" с ID = 998 и ID = 999 у всех товаров
DELETE FROM property_value_strings WHERE property_id IN (998,999)
Если удалили большое количество свойств (большое количество — это несколько сотен), то оптимизируем таблицу, при удалении пары десятков не имеет смысла.
OPTIMIZE TABLE property_value_strings;
Какие типы свойств к какой таблице относятся:
property_value_datetimes - "Дата [type=8]", "Дата-время [type=9]"property_value_files - "Файл [type=2]"property_value_floats - "Число с плавающей запятой [type=11]"property_value_ints - "Список[type=3]", "Информационная система [type=5]", "Флажок [type=7]", "Интернет-магазин [type=12]"property_value_strings - "Строка [type=1]", "Скрытое поле [type=10]"property_value_texts - "Большое текстовое поле [type=4]", "Визуальный редактор [type=6]"
ДОСКА ОБЪЯВЛЕНИЙ
Обнуляем дату окончания показа объявлений
UPDATE `shop_items` SET `end_datetime` = '0000-00-00 00:00:00' WHERE `shop_id` = 123; // вместо 123 указать ID магазинаSQL запросы. Как быстро посчитать кол-во товаров
SELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `active` = 1 AND `deleted` = 0
SELECT COUNT(`shop_items`.`id`) AS `count`
FROM `shop_items`
LEFT JOIN `shop_groups` ON `shop_items`.`shop_group_id` = `shop_groups`.`id`
WHERE `shop_items`.`shop_id` = 1 AND `shop_items`.`active` = 1 AND `shop_items`.`deleted` = 0 AND `shop_groups`.`active` = 1 AND `shop_groups`.`deleted` = 0
SELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `modification_id` > 0 AND `active` = 1 AND `deleted` = 0
ELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `image_small` != '' AND `active` = 1 AND `deleted` = 0
SELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `price` > 0 AND `active` = 1 AND `deleted` = 0
SELECT COUNT(`id`) AS `count`
FROM `shop_items`
WHERE `shop_id` = 1 AND `marking` = '' AND `active` = 1 AND `deleted` = 0
Плавающий блок с призывом добавить товар в Избранное (на Bootstrap)
В XSL шаблон карточки товара над иконкой Избранного добавляем код:
<div class="alert alert-primary d-flex align-items-center alert-dismissible fade show alert-info-modal" role="alert">
<small>Понравился товар? Добавьте его в избранное</small>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Закрыть"></button>
</div>
Блок будет показываться с небольшой задержкой. Для этого используем возможности CSS3
@keyframes showDiv {
0%,
94% {
opacity: 0;
}
95% {
opacity: 0.3;
}
100% {
opacity: 1;
}
}
Для кода использованы стили alert фреймворка Bootstrap 5
Закрывается блок нажатием на крестик.

Стили CSS
.alert-wrapper {
display: flex;
justify-content: center;
width: 100%;
}
.alert-info-modal {
background-color: #ff8100;
border: 0;
color: #fff;
position: absolute;
bottom: 95%;
left: 50%;
min-width: 280px;
padding: 10px 15px;
animation: showDiv 3s forwards;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear;
}
.alert-info-modal:before {
border-width: 0.4rem 0.4rem 0;
position: absolute;
content: "";
border-color: transparent;
border-style: solid;
border-top-color: #ff8100;
top: 100%;
left: 0px;
transform: translate(50px,0px);
}
.alert-info-modal:after {
margin-top: -1px;
transform: rotate(45deg);
}
@keyframes showDiv {
0%,
94% {
opacity: 0;
}
95% {
opacity: 0.3;
}
100% {
opacity: 1;
}
}
Сообщение при добавлении товара в корзину
1. Код кнопки, которая добавляет товар в корзину:
<button type="button" class="btn" data-item-id="{@id}" onclick="return $.bootstrapAddIntoCart('/shop/cart/', $(this).data('item-id'), 1)" tabindex="0">
<span>
<i class="fa fa-shopping-bag"></i>
</span>
<span>В корзину</span>
</button>
2. Размещаем в макете код модального окна, которое будет показываться при добавлении товара в корзину:
<div class="modal fade" id="modalCart" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header"><button class="close" type="button" data-dismiss="modal"></button>
<h6 class="modal-title" id="myModalLabel">Товар добавлен в корзину</h6>
</div>
<div class="modal-body text-center">
<a class="close-reveal-modal btn btn-secondary" data-dismiss="modal">Продолжить покупки</a>
<a href="/shop/cart/" class="btn btn-primary" >Перейти в корзину</a>
</div>
</div>
</div>
</div>

3. В макете шаблона во вкладке Javascript дорабатываем скрипт. Находим блок:
// Функции без создания коллекции
$.extend({
...
bootstrapAddIntoCartCallback: function(data, status, jqXHR)
{
$.loadingScreen('hide');
$(this).html(data);
},
...
и добавляем код, который активизирует модальное окно с сообщением. Получится так:
// Функции без создания коллекции
$.extend({
...
bootstrapAddIntoCartCallback: function(data, status, jqXHR)
{
$.loadingScreen('hide');
$(this).html(data);
$("body").append(data.html); // Перемещаем модальное окно по DOM в конец body
$("#modalCart").modal("show"); // активируем модальное окно
},
...