web-dev-qa-db-fra.com

Magento ajouter par programme l'image du produit

Je dois créer un agent d'importation Magento 1.6.x simple qui suppose de créer/mettre à jour les produits et leurs images. Quelqu'un pourrait-il me conseiller comment ajouter une image de produit sans avoir à utiliser l'API de magento?

La performance de l’API s’est avérée très mauvaise et je commence à être un peu frustré .. :-(

J'ai trouvé d'autres questions concernant ce problème, mais aucune d'entre elles ne concerne l'ajout d'images au produit.

Voici ce que je suis venu avec:

$product->setIsMassupdate(true)
    ->setExcludeUrlRewrite(true)
    ->setManufacturer($this->addManufacturers(utf8_encode($record[4])))
    ->setSku($record[3])
    ->setAttributeSetId($this->attribute_set)# 9 is for default
    ->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE)
    ->setName(utf8_encode($record[5]))
    ->setCategoryIds($this->getCategories(array($record[0], $record[1], $record[2]))) # some cat id's,
    ->setWebsiteIDs(array(1)) # Website id, 1 is default
    ->setDescription(utf8_encode($record[6]))
    ->setShortDescription($this->shortText(utf8_encode($record[6]), 150))
    ->setPrice($price) # Set some price
    ->setSpecialPrice($special_price)
    ->setWeight($record[12])
    ->setStatus( Mage_Catalog_Model_Product_Status::STATUS_ENABLED )
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
    ->setTaxClassId(2)     // default tax class
    ->setPixmaniaimg($record[10])
    ->setStockData(array('is_in_stock' => $inStock, 'qty' => $qty))
    ->setCreatedAt(strtotime('now'));

Est-ce que quelqu'un peut m'aider à ajouter des images directement sans l'API?

Merci

Lukas

19
Bery

Je l'ai fait dans Magento 1.6.1. Il suffit de mettre vos chemins d’URL d’image dans le premier tableau et vous êtes prêt à partir.

Regardez également Mage_Catalog_Model_Product pour vous familiariser avec addImageToMediaGallery () et d’autres méthodes dont vous aurez certainement besoin dans le futur.

// Add three image sizes to media gallery
$mediaArray = array(
    'thumbnail'   => $putPathHere,
    'small_image' => $putPathHere,
    'image'       => $putPathHere,
);

// Remove unset images, add image to gallery if exists
$importDir = Mage::getBaseDir('media') . DS . 'import/';

foreach($mediaArray as $imageType => $fileName) {
    $filePath = $importDir.$fileName;
    if ( file_exists($filePath) ) {
        try {
            $product->addImageToMediaGallery($filePath, $imageType, false);
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    } else {
        echo "Product does not have an image or the path is incorrect. Path was: {$filePath}<br/>";
    }
}
38
Zachary Schuessler
set_time_limit(0);

ini_set('memory_limit', '4095M');

error_reporting(E_ALL);

ini_set('display_errors', 1);

require_once '../app/Mage.php';

umask(0);

Mage::setIsDeveloperMode(true);

$storeID = Mage_Core_Model_App::ADMIN_STORE_ID;

Mage::app()->setCurrentStore($storeID);



$destination = Mage::getBaseDir() . '/import/images/' . $image;

$product->addImageToMediaGallery($destination, array('image', 'thumbnail', 'small_image'), false, false);

}

Cela définira l'image de base.

0
Amit Singh