Копирование готового товара (версия 3) new
#1
Отправлено 03 September 2011 - 08:37 PM
Добавляет возможность копирования товаров при просмотре каталога в админке.
Копирует:
Категория, Наименование, Загол-ок (title), Бесплатная доставка, Цена, Старая цена, Код(артикул), Доставка, Мин. заказ, Вес товара(кг), На складе, Краткое описание, Подробное описание, META Description, META Keywords, Дополнительные характеристики,
Фото, Сортировка, Дополнительные категории.
Установка:
Копируем файлы в соответствующие директории с заменой существующих. (Старые можно на всякий случай сохранить отдельно)
Скачать модуль "Копирование готового товара (версия 3) new"
#2
Отправлено 03 October 2011 - 07:32 AM
#3
Отправлено 03 October 2011 - 08:21 AM
#4
Отправлено 03 October 2011 - 01:36 PM
websat, исходя из информации выше все должно работать.
#5
Отправлено 15 December 2011 - 01:22 PM
Что-то ничего не могу понять. Всё поменял почистил кеш, а в админке всё-равно не видно. На 3.1.1 он подходит?
у меня получилось. работает. менял с включенной функцией принудительной очистки кэша в общих настройках
версия 3.1.2
#6
Отправлено 15 December 2011 - 06:21 PM
#7
Отправлено 06 January 2012 - 02:43 PM
Есть ли модуль копирования товаров с фото? Т.к. у меня много товаров с одинаковыми фото.
#8
Отправлено 09 January 2012 - 01:33 PM
Есть ли модуль копирования товаров с фото? Т.к. у меня много товаров с одинаковыми фото.
Не имеет смысла, потому как если удалите фото у одного из товаров, оно исчезнет у всех остальных.
#9
Отправлено 25 January 2012 - 08:38 PM
#10
Отправлено 25 January 2012 - 08:46 PM
Не очень понял. Я смогу копировать готовый товар в другие категории или он копирует только в эту же категорию?
он делает дубль рядом с исходным. ну а потом можно и перемещать куда хочешь, дело одного клика ведь
#11
Отправлено 26 January 2012 - 12:36 AM
Почему? Вполне имеет смысл, только надо будет логику удаления фото при удалении товара чуть усложнить. ИМХО, очень не сильно усложнить. Буквально еще один запрос к базе на предмет "найдется ID этой фотки еще у какого товара или нет".Не имеет смысла, потому как если удалите фото у одного из товаров, оно исчезнет у всех остальных.
#12
Отправлено 26 January 2012 - 02:00 AM
Почему? Вполне имеет смысл, только надо будет логику удаления фото при удалении товара чуть усложнить. ИМХО, очень не сильно усложнить. Буквально еще один запрос к базе на предмет "найдется ID этой фотки еще у какого товара или нет".
или сделать чтобы при копировании товара копировалось и фото )) с приставкой
#13
Отправлено 26 January 2012 - 10:08 AM
Красивее - с переименованием в код товара или транслитерированное название товара. Но могут получиться дубли.или сделать чтобы при копировании товара копировалось и фото )) с приставкой
А уникальнее и проще - в таймстамп или unique().
#14
Отправлено 09 April 2012 - 09:32 PM
//Вставка копирование товара
//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");
}
#15
Отправлено 09 April 2012 - 11:33 PM
#16
Отправлено 09 April 2012 - 11:51 PM
Ээээ.... мнэээ... они ж там и так копируются .А я вот было пытался сделать чтобы доп. характеристики копировались
Может, там оно не до конца доведено, надо будет глянуть, но сам набор свойств товара, отдаваемый используемой функцией GetProduct() вполне содержит массив характеристик этого товара.
Глянул - и правда. Этот массив ($copyProductID['option_values'] в данном случае) никак в дальнейшем не используется. Собственно, даже без этого массива мы знаем ID старого товара и нового, т.е. скопировать эти option_values - одна SQL-команда, как я понимаю. Ща сделаю, оно полезно.
#17
Отправлено 09 April 2012 - 11:57 PM
Да оно как-то там странно, вроде бы как задумано, но потом не хватает куска кода который их записывает. Я на скорую руку попробовал набросать - как-то не получилось..... я и забросил, переключившись на другие правки. Так до сих пор и не вернулся ))Глянул - и правда. Этот массив ($copyProductID['option_values'] в данном случае) никак в дальнейшем не используется.
#18
Отправлено 10 April 2012 - 01:12 AM
Облом с одной командой, нельзя в INSERT ... SELECT ... WHERE ставить одну и ту же таблицу в INSERT и SELECT.скопировать эти option_values - одна SQL-команда
Так что только по старинному, по деревенски:
$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']."");
#19
Отправлено 10 April 2012 - 03:06 PM
#20
Отправлено 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