Страница 1 из 1

Артикул товара автоматически

Добавлено: 04.10.2017, 16:35
Julius123
Подскажите, есть как-то возможность формировать арткул автоматически. Возможно айди товара как-то можно туда прописывать?

Добавлено: 04.10.2017, 17:55
makki
Делается одним запросом в базу данных, например:

Код: Выделить всё

UPDATE ok_variants SET sku = concat('100', id);

Добавлено: 04.10.2017, 18:17
Julius123
makki писал(а):Делается одним запросом в базу данных, например:
Можете пожалуйста разъяснить что именно в БД делает этот запрос?

Добавлено: 04.10.2017, 18:38
makki
Julius123 писал(а):
makki писал(а):Делается одним запросом в базу данных, например:
Можете пожалуйста разъяснить что именно в БД делает этот запрос?
Устанавливает значение артикула варианта товара путем объединения 100 и айди варианта. Это просто пример. Вы можете формировать артикул по-своему.

Возможно это не то, о чем вы спрашивали, поскольку как я понял, вы хотели чтобы артикул генерировался автоматически. Но это уже требует программирования.

Добавлено: 04.10.2017, 19:44
Julius123
makki писал(а):
Julius123 писал(а):Можете пожалуйста разъяснить что именно в БД делает этот запрос?
Устанавливает значение артикула варианта товара путем объединения 100 и айди варианта. Это просто пример. Вы можете формировать артикул по-своему.

Возможно это не то, о чем вы спрашивали, поскольку как я понял, вы хотели чтобы артикул генерировался автоматически. Но это уже требует программирования.
Вы правы, вопрос был чтобы формировать артикул автоматически. Например у каждого товара формируется айди, и этот же айди писать в БД поле артикула

Добавлено: 04.10.2017, 21:14
OkayCMS
Нужно чуть доработать, чтобы не запрос в БД был (он один раз нужен), а при сохранении товара в поле артикула записывался 100+id варианта. Я думаю makki вам такое сможет за полчаса сделать.

Добавлено: 28.12.2020, 16:53
makki
Чтобы в OkayCMS 2 автоматически генерился артикул в зависимости от id варианта в базе данных,
нужно в файле api/Variants.php в функции add_variant после строки:

Код: Выделить всё

$variant_id = $this->db->insert_id();

добавить

Код: Выделить всё

        if(empty($variant->sku)) {
            $this->db->query("UPDATE __variants SET sku=substring(concat ('000000',id),-5) WHERE id=?", $variant_id);
        }


В результате, например если id варианта 145, артикул получится 000145

Добавлено: 22.01.2021, 07:22
Владимир
makki писал(а):api/Variants.php

А где находиться этот файл в 3.8.1 версии ? Как на этой версии реализовать это ?

Добавлено: 22.01.2021, 14:42
makki
Владимир писал(а):
makki писал(а):api/Variants.php

А где находиться этот файл в 3.8.1 версии ? Как на этой версии реализовать это ?
Без понятия

Добавлено: 14.06.2021, 06:09
Julius123
makki писал(а):В результате, например если id варианта 145, артикул получится 000145
Спасибо, все работает. Но как быть с сотнями уже добавленных вариантов без артикула? Можно ли сгенерировать запросом в БД всем уже добавленным вариантам в таком же формате? Желательно перезаписать и уже заполненные артикулы, чтобы все были в одном формате.

Добавлено: 14.06.2021, 07:59
makki
Julius123 писал(а):Спасибо, все работает. Но как быть с сотнями уже добавленных вариантов без артикула? Можно ли сгенерировать запросом в БД всем уже добавленным вариантам в таком же формате? Желательно перезаписать и уже заполненные артикулы, чтобы все были в одном формате.
Выполните этот SQL запрос

Код: Выделить всё

UPDATE __variants SET sku=substring(concat ('000000',id),-5)

Добавлено: 14.06.2021, 16:54
Julius123
makki писал(а):
Julius123 писал(а):Спасибо, все работает. Но как быть с сотнями уже добавленных вариантов без артикула? Можно ли сгенерировать запросом в БД всем уже добавленным вариантам в таком же формате? Желательно перезаписать и уже заполненные артикулы, чтобы все были в одном формате.
Выполните этот SQL запрос

Код: Выделить всё

UPDATE __variants SET sku=substring(concat ('000000',id),-5)

Код: Выделить всё

UPDATE ok_variants SET sku=substring(concat ('000000',id),-5)

Только вот так сработало. Спасибо!