Перейти к содержимому


Копирование готового товара (версия 3) new


  • Вы не можете ответить в тему
Сообщений в теме: 49

#1 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 03 September 2011 - 08:37 PM

Описание:
Добавляет возможность копирования товаров при просмотре каталога в админке.

Копирует:
Категория, Наименование, Загол-ок (title), Бесплатная доставка, Цена, Старая цена, Код(артикул), Доставка, Мин. заказ, Вес товара(кг), На складе, Краткое описание, Подробное описание, META Description, META Keywords, Дополнительные характеристики,
Фото, Сортировка, Дополнительные категории.

Изображение

Установка:
Копируем файлы в соответствующие директории с заменой существующих. (Старые можно на всякий случай сохранить отдельно)

Скачать модуль "Копирование готового товара (версия 3) new"
  • 0

#2 kotofey

    Пользователь

  • Пользователи
  • PipPip
  • 16 сообщений
Репутация: 0
Начинающий

Отправлено 03 October 2011 - 07:32 AM

Скажите, пожалуйста, будет ли работать на версии ShopCMS 3.0 RC 1?
  • 0

#3 websat

    Пользователь

  • Пользователи
  • PipPip
  • 11 сообщений
Репутация: 1
Начинающий

Отправлено 03 October 2011 - 08:21 AM

Что-то ничего не могу понять. Всё поменял почистил кеш, а в админке всё-равно не видно. На 3.1.1 он подходит?
  • 0

#4 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 03 October 2011 - 01:36 PM

kotofey, модификация совместима только с ShopCMS версий 3.1.1 и 3.1.2.

websat, исходя из информации выше все должно работать.
  • 0

#5 Grizzly

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений
Репутация: 0
Начинающий

Отправлено 15 December 2011 - 01:22 PM

Что-то ничего не могу понять. Всё поменял почистил кеш, а в админке всё-равно не видно. На 3.1.1 он подходит?


у меня получилось. работает. менял с включенной функцией принудительной очистки кэша в общих настройках
версия 3.1.2
  • 0

#6 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 15 December 2011 - 06:21 PM

Важно! Любые замены php файлов нужно проводить с включенной, в Общих натройках, опцией Принудительная очистка кэша. В противном случае можно получить белый экран или ошибку. Если это произошло, то следует зайти через FTP и удалить все содержимое папки /core/cache/. Это касается всех модулей и любых правок в php файлах.
  • 0

#7 copycon

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений
Репутация: 0
Начинающий

Отправлено 06 January 2012 - 02:43 PM

Вопрос

Есть ли модуль копирования товаров с фото? Т.к. у меня много товаров с одинаковыми фото.
  • 0

#8 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 09 January 2012 - 01:33 PM

Есть ли модуль копирования товаров с фото? Т.к. у меня много товаров с одинаковыми фото.


Не имеет смысла, потому как если удалите фото у одного из товаров, оно исчезнет у всех остальных.
  • 1
502 Bad Gateway

#9 Droid

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 60 сообщений
Репутация: 0
Начинающий

Отправлено 25 January 2012 - 08:38 PM

Не очень понял. Я смогу копировать готовый товар в другие категории или он копирует только в эту же категорию?
  • 0

#10 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 25 January 2012 - 08:46 PM

Не очень понял. Я смогу копировать готовый товар в другие категории или он копирует только в эту же категорию?


он делает дубль рядом с исходным. ну а потом можно и перемещать куда хочешь, дело одного клика ведь :)
  • 0
502 Bad Gateway

#11 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 26 January 2012 - 12:36 AM

Не имеет смысла, потому как если удалите фото у одного из товаров, оно исчезнет у всех остальных.

Почему? Вполне имеет смысл, только надо будет логику удаления фото при удалении товара чуть усложнить. ИМХО, очень не сильно усложнить. Буквально еще один запрос к базе на предмет "найдется ID этой фотки еще у какого товара или нет".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 26 January 2012 - 02:00 AM

Почему? Вполне имеет смысл, только надо будет логику удаления фото при удалении товара чуть усложнить. ИМХО, очень не сильно усложнить. Буквально еще один запрос к базе на предмет "найдется ID этой фотки еще у какого товара или нет".


или сделать чтобы при копировании товара копировалось и фото )) с приставкой
  • 0

#13 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 26 January 2012 - 10:08 AM

или сделать чтобы при копировании товара копировалось и фото )) с приставкой

Красивее - с переименованием в код товара или транслитерированное название товара. Но могут получиться дубли.
А уникальнее и проще - в таймстамп или unique().
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#14 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 April 2012 - 09:32 PM

Сделал маленький довесочек, чтобы картинки при копировании товара тоже копировались. В файле catalog_products_categories.php из шапки есть две вставки, ограниченные строками:
//Вставка копирование товара
//end

Вот во второй (большой) вставке перед //end надо вставить код:
$data = db_query("SELECT photoID, filename, thumbnail, enlarged FROM ".PRODUCT_PICTURES." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
{
if (isset($row['filename']) && is_file('data/small/'.$row['filename']))
copy('data/small/'.$row['filename'], 'data/small/'.$copyProductID."_".$row['filename']);
if (isset($row['thumbnail']) && is_file('data/small/'.$row['thumbnail']))
copy('data/medium/'.$row['thumbnail'], 'data/medium/'.$copyProductID."_".$row['thumbnail']);
if (isset($row['enlarged']) && is_file('data/big/'.$row['enlarged']))
copy('data/big/'.$row['enlarged'], 'data/big/'.$copyProductID."_".$row['enlarged']);
db_query("INSERT ".PRODUCT_PICTURES." SET productID='$copyProductID',
filename ='".$copyProductID."_".$row['filename' ]."',
thumbnail='".$copyProductID."_".$row['thumbnail']."',
enlarged ='".$copyProductID."_".$row['enlarged' ]."'");
if ($row['photoID'] == $copyProduct['default_picture'])
db_query("UPDATE ".PRODUCTS_TABLE." SET default_picture=".db_insert_id()." WHERE productID=$copyProductID");
}

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#15 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 09 April 2012 - 11:33 PM

А я вот было пытался сделать чтобы доп. характеристики копировались. Что-то так и не получилось... из-за недостатка времени как обычно отложил на потом.
  • 0

#16 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 April 2012 - 11:51 PM

А я вот было пытался сделать чтобы доп. характеристики копировались

Ээээ.... мнэээ... они ж там и так копируются :).
Может, там оно не до конца доведено, надо будет глянуть, но сам набор свойств товара, отдаваемый используемой функцией GetProduct() вполне содержит массив характеристик этого товара.
Глянул - и правда. Этот массив ($copyProductID['option_values'] в данном случае) никак в дальнейшем не используется. Собственно, даже без этого массива мы знаем ID старого товара и нового, т.е. скопировать эти option_values - одна SQL-команда, как я понимаю. Ща сделаю, оно полезно.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#17 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 09 April 2012 - 11:57 PM

Глянул - и правда. Этот массив ($copyProductID['option_values'] в данном случае) никак в дальнейшем не используется.

Да оно как-то там странно, вроде бы как задумано, но потом не хватает куска кода который их записывает. Я на скорую руку попробовал набросать - как-то не получилось..... я и забросил, переключившись на другие правки. Так до сих пор и не вернулся ))
  • 0

#18 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 April 2012 - 01:12 AM

скопировать эти option_values - одна SQL-команда

Облом с одной командой, нельзя в INSERT ... SELECT ... WHERE ставить одну и ту же таблицу в INSERT и SELECT.
Так что только по старинному, по деревенски:
$data = db_query("SELECT optionID,variantID,option_value,option_type,option_show_times
FROM ".PRODUCT_OPTIONS_VALUES_TABLE." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
db_query("INSERT ".PRODUCT_OPTIONS_VALUES_TABLE." SET productID=$copyProductID,
optionID=".$row['optionID'].",variantID=".$row['variantID'].",option_value='".$row['option_value']."',
option_type=".$row['option_type'].",option_show_times=".$row['option_show_times']."");
$data = db_query("SELECT optionID,variantID,price_surplus
FROM ".PRODUCT_OPTIONS_SET_TABLE." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
db_query("INSERT ".PRODUCT_OPTIONS_SET_TABLE." SET productID=$copyProductID,
optionID=".$row['optionID'].",variantID=".$row['variantID'].",price_surplus=".$row['option_value']."");

  • 2
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#19 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 April 2012 - 03:06 PM

Какой-то странный, страннейший глюк. При муве товара из категории в категорию тоже создаются копии фоток товаров. Причем не все, а только в big и small, в medium не создаются :). Буду посмотреть, где ошибка, но пока в великом удивлении :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#20 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 April 2012 - 08:18 PM

Ух, сколько я своих ляпов нашел. Штуки три :). Зато теперь работает как должно.
Вот вся вторая (большая) вставка целиком:
//Вставка копирование товара
elseif ( $_POST["add_command"]=="prod_copy")
{
$copyProduct = GetProduct( (int)$key);
$copyProductID = AddProduct($copyProduct["categoryID"],
$copyProduct["name"]." copy",
$copyProduct["Price"],
$copyProduct["description"],
(int)$copyProduct["in_stock"],
$copyProduct["brief_description"],
(float)$copyProduct["list_price"],
$copyProduct["product_code"],
$copyProduct["sort_order"],
$copyProduct["ProductIsProgram"],
$copyProduct["eproduct_filename"],
$copyProduct["eproduct_available_days"],
$copyProduct["eproduct_download_times"],
(float)$copyProduct["weight"],
$copyProduct["meta_description"],
$copyProduct["meta_keywords"],
$copyProduct["free_shipping"],
(int)$copyProduct["min_order_amount"],
(float)$copyProduct["shipping_freight"],
$copyProduct["tax_class"],
$copyProduct["title"],
0);
$data = db_query("SELECT photoID, filename, thumbnail, enlarged FROM ".PRODUCT_PICTURES." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
{
if (isset($row['filename']) && is_file('data/small/'.$row['filename']))
copy('data/small/'.$row['filename'], 'data/small/'.$copyProductID."_".$row['filename']);
if (isset($row['thumbnail']) && is_file('data/medium/'.$row['thumbnail']))
copy('data/medium/'.$row['thumbnail'], 'data/medium/'.$copyProductID."_".$row['thumbnail']);
if (isset($row['enlarged']) && is_file('data/big/'.$row['enlarged']))
copy('data/big/'.$row['enlarged'], 'data/big/'.$copyProductID."_".$row['enlarged']);
db_query("INSERT ".PRODUCT_PICTURES." SET productID='$copyProductID',
filename ='".$copyProductID."_".$row['filename' ]."',
thumbnail='".$copyProductID."_".$row['thumbnail']."',
enlarged ='".$copyProductID."_".$row['enlarged' ]."'");
if ($row['photoID'] == $copyProduct['default_picture'])
db_query("UPDATE ".PRODUCTS_TABLE." SET default_picture=".db_insert_id()." WHERE productID=$copyProductID");
}
$data = db_query("SELECT optionID,variantID,option_value,option_type,option_show_times
FROM ".PRODUCT_OPTIONS_VALUES_TABLE." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
db_query("INSERT ".PRODUCT_OPTIONS_VALUES_TABLE." SET productID=$copyProductID,
optionID=".$row['optionID'].",variantID=".$row['variantID'].",option_value='".$row['option_value']."',
option_type=".$row['option_type'].",option_show_times=".$row['option_show_times']."");
$data = db_query("SELECT optionID,variantID,price_surplus
FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
db_query("INSERT ".PRODUCTS_OPTIONS_SET_TABLE." SET productID=$copyProductID,
optionID=".$row['optionID'].",variantID=".$row['variantID'].",price_surplus=".$row['price_surplus']."");
$data = db_query("SELECT categoryID FROM ".CATEGORIY_PRODUCT_TABLE." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
db_query("INSERT ".CATEGORIY_PRODUCT_TABLE." SET productID=$copyProductID, categoryID=".$row['categoryID']."");
}
//end

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)