0 Пользователей и 1 Гость просматривают эту тему.
  • 37 Ответов
  • 21908 Просмотров
*

TenderWinner

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Такая проблема, хочется чтобы не надо было вводить артикул а он скажем брал максимум от всех артикулов в базе и ставил новому продукту максимум+1, есть может у кого хак или другое предложение толковое?
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Такая проблема, хочется чтобы не надо было вводить артикул а он скажем брал максимум от всех артикулов в базе и ставил новому продукту максимум+1, есть может у кого хак или другое предложение толковое?

Адрес форума: http://joomlaforum.ru/index.php?topic=20865.0

Нужно сделать следующие:

В файле: administrator\components\com_virtuemart\classes\ps_product.php

Нужно заменить:

if (empty( $d["product_sku"])) {
   $vmLogger->err( $VM_LANG->_('VM_PRODUCT_MISSING_SKU',false) );
   $valid = false;
}

Заменить на:

if (empty( $d["product_sku"])) {
        $q = "SELECT MAX(product_id) AS product_id FROM #__{vm}_product";
        $db->query( $q );
        $db->next_record();
        $list_sku = intval($db->f("product_id"))+rand(intval($db->f("product_id")), 999999999);
        $d['product_sku'] =  $list_sku;
        $valid = true;
}

Проблема решина...
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

TenderWinner

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Спасибо, попробую, ато приходилось блин самому из базы максимальное значение доставать и 1 прибавлять :)
*

TenderWinner

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Немного изменил решение, чтобы артикулы шли по порядку, сделал так:

if (empty( $d["product_sku"])) {
        $q = "SELECT MAX(product_sku) AS product_sku FROM #__{vm}_product";
        $db->query( $q );
        $db->next_record();
        $list_sku = intval($db->f("product_sku"))+1;
        $d['product_sku'] =  $list_sku;
        $valid = true;
}

У себя сделал константно jos_vm_product.
*

bato

  • Осваиваюсь на форуме
  • 49
  • 2 / 0
  • Пашу как папа Карло

У себя сделал константно jos_vm_product.

не совсем понятно что означает
*

Timer

  • Захожу иногда
  • 109
  • 1 / 1
Немного изменил решение, чтобы артикулы шли по порядку, сделал так:

if (empty( $d["product_sku"])) {
        $q = "SELECT MAX(product_sku) AS product_sku FROM #__{vm}_product";
        $db->query( $q );
        $db->next_record();
        $list_sku = intval($db->f("product_sku"))+1;
        $d['product_sku'] =  $list_sku;
        $valid = true;
}


при таком раскладе у меня больше 10 артикул не добавляется.. все последующие ставятся 10 и само собой товар с одним артикулом не добавляется
*

xTMx

  • Захожу иногда
  • 145
  • 4 / 0
+1 актуально. вшие 10ти артикул не идет. сам не допер чото  где ошибка. вроде логично всё
*

antfrolov

  • Захожу иногда
  • 83
  • 2 / 2
РЕШЕНИЕ НЕ РАБОТАЕТ! VM 1.1.X Joomla 1.5.18
У меня везде пишет артикул 1. Таким образом набирается несколько товаров с артикулом 1. При редактировании информации о товаре пишет что товар с таким артикулом существует. (их уже 4 существовало на тот момент :))
*

antfrolov

  • Захожу иногда
  • 83
  • 2 / 2
РАБОЧЕЕ РЕШЕНИЕ:
В файле: administrator\components\com_virtuemart\classes\ps_product.php

Нужно заменить:

if (empty( $d["product_sku"])) {
   $vmLogger->err( $VM_LANG->_('VM_PRODUCT_MISSING_SKU',false) );
   $valid = false;
}

Заменить на:
 if (empty( $d["product_sku"])) {
      $q = "SELECT MAX(product_id) AS product_id FROM #__{vm}_product";
           $db->query( $q );
           $db->next_record();
         $list_sku = intval($db->f("product_id"))+rand(intval($db->f("product_id")), 999999999);
         $d['product_sku'] =  $list_sku;
         $valid = true;
    }

Взято отсюда http://joomlaforum.ru/index.php/topic,20865.0.html
*

GrayHunter

  • Захожу иногда
  • 64
  • 1 / 0
Попробовал последний вариант - вроде работает. Спасибо, а то замучился бы с этим артиклем )
*

IND

  • Новичок
  • 8
  • 0 / 0
привет всем.
а как бы сделать так чтоб ещё имя производителя перед артикулом добавлялось ? и выглядело бы это потом например так
Производитель-14897298341
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
по идее
Код
if (empty( $d["product_sku"])) {
      $q = "SELECT mf_name FROM #__{vm}_manufacturer WHERE manufacturer_id=".$manufacturer_id;
           $db->query( $q );
           $db->next_record();
$mf_name=$db->mf_name;
      $q = "SELECT MAX(product_id) AS product_id FROM #__{vm}_product";
           $db->query( $q );
           $db->next_record();
         $list_sku = intval($db->f("product_id"))+rand(intval($db->f("product_id")), 999999999);
         $d['product_sku'] =  $mf_name.'-'.$list_sku;
         $valid = true;
    }

как-то так...
*

GrayHunter

  • Захожу иногда
  • 64
  • 1 / 0
не работает так. Пишет просто "-583290588".

Вообще, мне бы в артике хотелось бы так: "id_производителя - артикул"

Помогите пожалуйста.
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
тогда должно быть проще:
Код
if (empty( $d["product_sku"])) {
      $q = "SELECT MAX(product_id) AS product_id FROM #__{vm}_product";
           $db->query( $q );
           $db->next_record();
         $list_sku = intval($db->f("product_id"))+rand(intval($db->f("product_id")), 999999999);
         $d['product_sku'] =  $d['manufacturer_id'].'-'.$list_sku;
         $valid = true;
    }

в предыдущем коде была ошибка - во второй стороке вместо $manufacturer_id нужно $d['manufacturer_id'], писал по памяти - ошибся.
*

GrayHunter

  • Захожу иногда
  • 64
  • 1 / 0
Работает. Спасибо.

А может Вы подскажете как вывести название производителя в confirmation_email.tpl.php ? Моих знаний не хватает. :(
*

IND

  • Новичок
  • 8
  • 0 / 0
тогда должно быть проще:
Код
if (empty( $d["product_sku"])) {
      $q = "SELECT MAX(product_id) AS product_id FROM #__{vm}_product";
           $db->query( $q );
           $db->next_record();
         $list_sku = intval($db->f("product_id"))+rand(intval($db->f("product_id")), 999999999);
         $d['product_sku'] =  $d['manufacturer_id'].'-'.$list_sku;
         $valid = true;
    }

в предыдущем коде была ошибка - во второй стороке вместо $manufacturer_id нужно $d['manufacturer_id'], писал по памяти - ошибся.
спасибо большое !!
*

Biomech

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Хм, странно, а у меня почему то выводит артикулы случайным образом. А как сделать, чтобы они допустим начинались с 100000.
Количество знаков уменьшил, но каждый раз при создании, почему то идут не подряд.
*

aslanamirov

  • Захожу иногда
  • 87
  • 4 / 0
  • Ййехаа!
Немного изменил решение, чтобы артикулы шли по порядку, сделал так:

if (empty( $d["product_sku"])) {
        $q = "SELECT MAX(product_sku) AS product_sku FROM #__{vm}_product";
        $db->query( $q );
        $db->next_record();
        $list_sku = intval($db->f("product_sku"))+1;
        $d['product_sku'] =  $list_sku;
        $valid = true;
}

У себя сделал константно jos_vm_product.

Спасибо. Как и хотел чтоб по порядку и не задумываться о его вводе. Спасибо! VirtueMart у меня 1.1.4
*

stepcool

  • Новичок
  • 7
  • 1 / 0
тогда должно быть проще:
Код
if (empty( $d["product_sku"])) {
      $q = "SELECT MAX(product_id) AS product_id FROM #__{vm}_product";
           $db->query( $q );
           $db->next_record();
         $list_sku = intval($db->f("product_id"))+rand(intval($db->f("product_id")), 999999999);
         $d['product_sku'] =  $d['manufacturer_id'].'-'.$list_sku;
         $valid = true;
    }

в предыдущем коде была ошибка - во второй стороке вместо $manufacturer_id нужно $d['manufacturer_id'], писал по памяти - ошибся.

У меня заработало это решение. VirtueMart 1.1.8. В поле артикул добавилось 5-766021748. 5 это id производителя, а 766021748 - простой набор цифр.  ^-^
*

lottis

  • Захожу иногда
  • 181
  • 11 / 0
спасибо код работает прекрасно!
*

Sequels

  • Захожу иногда
  • 104
  • 5 / 0
Немного изменил решение, чтобы артикулы шли по порядку, сделал так:

if (empty( $d["product_sku"])) {
        $q = "SELECT MAX(product_sku) AS product_sku FROM #__{vm}_product";
        $db->query( $q );
        $db->next_record();
        $list_sku = intval($db->f("product_sku"))+1;
        $d['product_sku'] =  $list_sku;
        $valid = true;
}

У себя сделал константно jos_vm_product.

Подскажите как сделать чтобы следующее значение артикула ставилось по шаблону, например 0000083, 0000084 и т.д.
*

Sequels

  • Захожу иногда
  • 104
  • 5 / 0
Помогите пожалуйста решить проблему, автоматически артикул присваивается только до 100 включительно, 101, 102 и т.д. не ставится. Может где-то ошибка в коде? В итоге у меня создается несколько товаров с артикулом 100, соответственно из них на сайте отображается только один  :(
*

Sequels

  • Захожу иногда
  • 104
  • 5 / 0
Прошу повторно, поиск не дал результатов, а проблема имеет место быть.
*

tagilnext

  • Захожу иногда
  • 71
  • 2 / 0
У кого не работает этот код:

Код
if (empty( $d["product_sku"])) {
        $q = "SELECT MAX(product_sku) AS product_sku FROM #__{vm}_product";
        $db->query( $q );
        $db->next_record();
        $list_sku = intval($db->f("product_sku"))+1;
        $d['product_sku'] =  $list_sku;
        $valid = true;
}

или артикул идет только до 10, нужно изменить тип поля product_sku с VARCHAR на int установить длину поля с 64 на вашу и по умолчанию сделать - нет.
После этого все работает.
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
А по подробнее можно, а то не совсем понятно где менять тип поля и длину!
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Цитировать
tagilnext

Спасибо огромно, низкий поклон тебе друг, реально помогло!
не могу понять где тут плюсик ставить!
*

Sequels

  • Захожу иногда
  • 104
  • 5 / 0
У кого не работает этот код:

Код
if (empty( $d["product_sku"])) {
        $q = "SELECT MAX(product_sku) AS product_sku FROM #__{vm}_product";
        $db->query( $q );
        $db->next_record();
        $list_sku = intval($db->f("product_sku"))+1;
        $d['product_sku'] =  $list_sku;
        $valid = true;
}

или артикул идет только до 10, нужно изменить тип поля product_sku с VARCHAR на int установить длину поля с 64 на вашу и по умолчанию сделать - нет.
После этого все работает.

Не понял где это все менять, расскажите пожалуйста подробнее.
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Цитировать
product_sku с VARCHAR на int установить длину поля с 64 на вашу и по умолчанию сделать - нет.

phpmyadmin -> выбераете базу -> выбераете таблицу -> сверху выбераете структура -> напротив нужного поля изменить - > в типе ставите int, значение длина 11( это говорит что максимальное число будет состоять из 11 символов например 99999999999, я думаю этого хватит с запасом ) по умолчанию ставите нет.

готово
*

Sequels

  • Захожу иногда
  • 104
  • 5 / 0
phpmyadmin -> выбераете базу -> выбераете таблицу -> сверху выбераете структура -> напротив нужного поля изменить - > в типе ставите int, значение длина 11( это говорит что максимальное число будет состоять из 11 символов например 99999999999, я думаю этого хватит с запасом ) по умолчанию ставите нет.
готово

Спасибо за ответ, все работает! +1
*

andalit

  • Новичок
  • 4
  • 0 / 0
а нельзя в базе просто сделать Auto incr ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести в корзине заказа VirtueMart вес заказанного товара в кг?

Автор pavel55

Ответов: 1
Просмотров: 2730
Последний ответ 27.07.2015, 17:46:17
от BHy4eK
VirtuemartCare. Сервисный компонент для VirtueMart.

Автор beagler

Ответов: 73
Просмотров: 15242
Последний ответ 08.05.2015, 20:56:47
от beagler
Модуль "VirtueMart Currency Selector". Как устанавливать курс.

Автор MOHCTPUK

Ответов: 58
Просмотров: 40623
Последний ответ 06.05.2015, 11:07:45
от One
Массовое изменение цен в VirtueMart. Что я делаю не так?

Автор Naima

Ответов: 15
Просмотров: 9441
Последний ответ 12.03.2015, 17:41:10
от mrspm
Добавление параметров атрибута

Автор Afelua

Ответов: 1
Просмотров: 1233
Последний ответ 28.11.2013, 16:30:10
от fsv