Автоматическое создание артикула для miniShop2 (с проверкой на уникальность)
Три года назад этот вопрос поднимался вот здесь.
В результате есть работающий код:
Также есть вариант для TV генерирующий артикулы в числовом виде.
Ну а если этот плагин будет ещё проверять на уникальность артикула, ему вообще цены не будет ))
РЕШЕНИЕ (чтобы не копаться в комментах).
Артикулы получаются уникальные типа: 38125 — ID категории и товара
В результате есть работающий код:
<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' || !empty($resource->get('article')) ) return;
$resource->set('article', substr($resource->get('alias'),0,2).'-'.$resource->get('parent').$resource->get('id'));
$resource->save();
$resource->clearCache();Артикулы получаются типа: pl-38125Также есть вариант для TV генерирующий артикулы в числовом виде.
<?php
if ($modx->event->name == "OnDocFormSave")
{
$tv = 'articul';
$id = $resource->get('id');
$parent = $resource->get('parent');
$tvv = $resource->getTVValue($tv);
if (empty($tvv))
{
switch ($str=strlen($parent.$id))
{
case ($str <= 4): $article = mt_rand(0, 9).mt_rand(0, 9).$parent.$id; break;
case ($str == 5): $article = mt_rand(0, 9).$parent.$id; break;
case ($str == 6): $article = $parent.$id; break;
case ($str >= 7): $article = substr($parent.$id, 1); break;
}
$resource->setTVValue($tv, $article);
}
}Просьба специалистам в PHP модифицировать первый код так, чтобы в miniShop2 можно было создавать артикулы в цифровом виде.Ну а если этот плагин будет ещё проверять на уникальность артикула, ему вообще цены не будет ))
РЕШЕНИЕ (чтобы не копаться в комментах).
Артикулы получаются уникальные типа: 38125 — ID категории и товара
<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' || !empty($resource->get('article')) ) return;
$resource->set('article', $resource->get('parent').$resource->get('id'));
$resource->save();
$resource->clearCache();Также есть вариант артикула формата: Случайное число от 0 до 999-IDродитель-IDтовара<?php
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' || !empty($resource->get('article')) ) return;
// Создаем артикул формата Случайное число от 0 до 999-IDродитель-IDтовара
$resource->set('article', mt_rand(0, 999).$resource->get('parent').$resource->get('id'));
$resource->save();
$resource->clearCache();Благодарность iWatchYouFromAfar и Николай приветствуется )) Комментарии: 14
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
без первых двух символов алиаса ресурса и дефиски.
а то у меня синтаксеррор…
Чувствуете разницу))
Я же не задал вопрос, решение которого уже много раз приводилось на сайте, не удосужившись немного поискать.
Вот и вся разница. Что здесь понимать.
Вот вы написали — знаний у вас нет. Эти знания, это хлеб для разработчика. Он их не купил и не получил с рождения. А развивал их, тратил на это время своей жизни. Подсказать это одно, а выдать вам готовый вариант — другое. Вам никто не запрещает оплатить труд разработчика и выложить готовое решение на этом ресурсе в нужный раздел.
P.S.
Числовой артикул, уникальный, потому что id ресурса.
Не хлебом единым… Но если у человека нет внутренней потребности помогать нуждающемуся, то тут конечно хлеб, хлеб и только хлеб.
Мда, уже в который раз пожалел, что создал этот топик. А создал не для того, чтобы получить безплатно готовый вариант и отобрать у кого-то его хлеб, а чтобы задача получила законченное решение и осталась здесь для тех, кто нуждается.
А иначе, зачем раздел help?
К тому же, это была просьба, высказанная в вежливой форме. Не упрёк, не требование, не наезд. Но оказалось — не по форме вопрос задал. Форма — всё, человеческое отношение ничто. А снисходить к непонимающему карма не позволяет?
К тому же, оплатить труд разработчика я могу в платном разделе Modstore (что уже неоднократно делал, и ещё не раз сделаю).
Нуждающиеся находятся не здесь, а в больницах, дет. домах и т.д. А тут люди сайтики делают, многие за деньги. Так что, не такая уж и проблема закинуть человеку на кошелек 300р. Специалист не станет миллиардером, вы беднее не станете, а специалиста это мотивирует помогать. Иногда он даже бесплатно будет это делать.
Ну и напоследок. Знания — это то, что человек продает. Когда люди под нож хирургу ложатся, они ему платят за его знания и навыки. За то, чему он учился половину своей жизни. Вам вон выше подсказали, но вы не смогли просто грамотно убрать из строчки указанный код. Это значит что у вас даже начальных знаний нет, вы хотите готовое решение.
Так почему бы не предложить человеку, который вам дал готовое решение — деньги? Наверное потому что вам жалко тратить на такой пустяк деньги, тут работы на 5 минут да? Если вы работаете с сфере создания сайтов, вы должны понимать что это неправильно. Мы не росой и лучами солнышка питаемся, а едой, которую нужно покупать за деньги, а деньги разработчики зарабатывают знаниями.
Мы с вами как из разных человечеств )))
Для меня знания не товар, а скорее дар. Поэтому, мне так легко и естественно его дарить. Учусь всю жизнь, но по PHP есть хороший друг, поэтому мне всегда было легче спросить или попросить, чем изучать.
Да уже никто ничего не хочет )) Получил минусов полную корзину ))
А готовое решение было в том посте 3-хлетней давности в виде «pl-38125», что меня вполне бы устроило.
Так кто же спорит. Любой труд должен быть достойно вознаграждён.