RussinBDA Posted July 16, 2013 Share Posted July 16, 2013 Здравствуйте! Подскажите как создать правильно товар с изображениями? сам товар я создаю вот так: $object = new Product(); $object->price = 22; $object->id_tax_rules_group = 0; $object->name = 'test'; $object->id_manufacturer = 0; $object->id_supplier = 0; $object->quantity = 1; $object->minimal_quantity = 1; $object->additional_shipping_cost = 0; $object->wholesale_price = 0; $object->ecotax = 0; $object->width = 0; $object->height = 0; $object->depth = 0; $object->weight = 0; $object->out_of_stock = 0; $object->active = 0; $object->id_category_default = 18; $object->category = 18; $object->available_for_order = 0; $object->show_price = 1; $object->on_sale = 0; $object->online_only = 1; $object->meta_keywords = 'test'; if($object->save()) $object->add(); а вот как мне создать изображения к товару (несколько изображений) Link to comment Share on other sites More sharing options...
zapatronen Posted July 16, 2013 Share Posted July 16, 2013 легких путей не ищем?) Link to comment Share on other sites More sharing options...
sors Posted July 16, 2013 Share Posted July 16, 2013 $product_has_images = (bool)Image::getImages($this->context->language->id, (int)$product->id); $image = new Image(); $image->id_product = (int)$product->id; $image->position = Image::getHighestPosition($product->id) + 1; $image->cover = (!$key && !$product_has_images) ? true : false; $image->add(); Привязать к магазинам. в $shops - идентификаторы магазинов, для текущего будет так $this->context->shop->id. Для товара кстати тоже нужно сделать. $image->associateTo($shops); Потом копировать картинку. Путь для сохранения получать так. $image->getPathForCreation(); И не забудьте привязать товар к категориям $product->updateCategories(array($product->id_category)); Ну и количество по другому устанавливается. $product->quantity осталось для совместимости StockAvailable::setQuantity((int)$product->id, 0, $product->quantity, $this->context->shop->id); 1 Link to comment Share on other sites More sharing options...
RussinBDA Posted July 17, 2013 Author Share Posted July 17, 2013 (edited) sors, что я не совсем пойму а как мне таким способом реализовать добавление картинок. Т.е. как я понимаю... у меня есть массив $_FILES['images']['tmp_name'] выбранных изображений и мне надо это в цикле получается сделать foreach ($_FILES['images']['tmp_name'] as $namefile) { ....... вот здесь все таки я не до конца понял, т.е. я же куда то должен передавать имя файла путь??? или я не в том направлении мыслю? } Edited July 17, 2013 by RussinBDA (see edit history) Link to comment Share on other sites More sharing options...
RussinBDA Posted July 17, 2013 Author Share Posted July 17, 2013 Сделал вот так: $img_files = $_FILES['files']['tmp_name']; if (!empty($img_files)) { foreach ($img_files as $namefile) { $image = new Image(); $image->id_product = (int)$id; $image->position = Image::getHighestPosition($id) + 1; $image->cover = true; $image->data = file_get_contents ( $namefile ); $image->add(); } } в таблице ps_images появились записи, но в /img/ нечего не создалось!! Я уже совсем запутался, помогите пожалуйста, уже 4-й день не магу побороть( Link to comment Share on other sites More sharing options...
sors Posted July 17, 2013 Share Posted July 17, 2013 Используйте move_uploaded_file чтобы переместить файл по адресу, который я написал раньше. $image->cover = true; для всех картинок ни к чему хорошему не приведет Link to comment Share on other sites More sharing options...
RussinBDA Posted July 17, 2013 Author Share Posted July 17, 2013 Я думаю лучше наверно AdminImportController::copyImg() т.к. в они еще должны раскидывается в определенном порядке и происходить ресайз и переименование изображении в соответствии настроек. Спасибо за помощь! Link to comment Share on other sites More sharing options...
savvato Posted July 17, 2013 Share Posted July 17, 2013 смотрите класс Product лучше Link to comment Share on other sites More sharing options...
RussinBDA Posted July 18, 2013 Author Share Posted July 18, 2013 а примером кто нибудь может поделиться как оно выглядит? ну не соображу я(((( Link to comment Share on other sites More sharing options...
savvato Posted July 18, 2013 Share Posted July 18, 2013 а примером кто нибудь может поделиться как оно выглядит? ну не соображу я(((( я делал так if(! empty($product->{'Картинка'})){ $cover = Image::getCover($id_product); $j=1; $i = 0; foreach($product->{'Картинка'} as $kartinka){ $cover = Image::getCover($id_product); $id_xml_image = explode (".", basename($kartinka)); $id_xml_image_uni = $id_xml_image[0]; $image_uni = CsyncTools::get("id_image","image","xml",$id_xml_image_uni); if(empty($image_uni)){ if(($i == 0) AND (empty($cover))){ $cover = 1; //$i = 0; $img_upd[] = "(" . $id_product . ", " . $cover . ", " . $i . ", '" . $id_xml_image_uni . "' )"; $i = ++$i; }else{ $cover = 0; $i = $j + (Image::getHighestPosition($id_product)); $img_upd[] = "(" . $id_product . ", " . $cover . ", " . $i . ", '" . $id_xml_image_uni . "' )"; $j = ++$j; } } } Link to comment Share on other sites More sharing options...
Recommended Posts