Jump to content

Подскажите как создать правильно товар с изображениями?


Recommended Posts

Здравствуйте!

Подскажите как создать правильно товар с изображениями?

 

сам товар я создаю вот так:

 

$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

$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);

  • Like 1
Link to comment
Share on other sites

sors, что я не совсем пойму а как мне таким способом реализовать добавление картинок. Т.е. как я понимаю... у меня есть массив $_FILES['images']['tmp_name'] выбранных изображений и мне надо это в цикле получается сделать

 

foreach ($_FILES['images']['tmp_name'] as $namefile) {

 

....... вот здесь все таки я не до конца понял, т.е. я же куда то должен передавать имя файла путь??? или я не в том направлении мыслю?

 

}

Edited by RussinBDA (see edit history)
Link to comment
Share on other sites

Сделал вот так:

 

 

$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

Используйте move_uploaded_file чтобы переместить файл по адресу, который я написал раньше.

$image->cover = true; для всех картинок ни к чему хорошему не приведет

Link to comment
Share on other sites

Я думаю лучше наверно AdminImportController::copyImg() т.к. в они еще должны раскидывается в определенном порядке и происходить ресайз и переименование изображении в соответствии настроек. Спасибо за помощь!

Link to comment
Share on other sites

а примером кто нибудь может поделиться как оно выглядит? ну не соображу я((((

я делал так

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

×
×
  • Create New...