2014-04-29 10 views
7

Sto provando a creare un prodotto a livello di codice in Magento 1.8 e quindi impostare alcuni valori di attributo ad esso. Finora tutto sta funzionando, gli attributi vengono salvati correttamente con il prodotto sotto l'ambito "predefinito".Come salvare un valore di attributo per una vista negozio specifica?

Il problema è che il mio negozio ha due diverse "viste negozio", una in inglese e una in francese. Non riesco a capire come impostare "scope" o "store view" per i dati di un attributo specifico.

Come posso dire a Magento di salvare un valore di attributo per un ambito specifico?

Ecco un esempio di codice utilizzando il "breve descrizione" attributo:

$product = new Mage_Catalog_Model_Product(); 
$product->setSku($sku); 
$product->setAttributeSetId($attributeSetId); 
$product->setTypeId($typeId); 
$product->setName($sku); 
$product->setWebsiteIDs(array($websiteId)); 
$product->setShortDescription('Short description in english'); 
$product->setShortDescription('Short description in french'); // Scope change here? 

risposta

14

Dopo aver creato il prodotto dovrebbe avere un id.
Ecco un modo rapido per aggiornare il nome del prodotto e una breve descrizione per una specifica visualizzazione del negozio senza chiamare il metodo save che utilizza le risorse.
Supponiamo che il prodotto id è 10 e la vista Codice del negozio è 2.
Eseguire questo:

$productId = 10; 
$storeId = 2; 
$newName = 'Nom de produit'; 
$newShortDescription = 'description de produit'; 
Mage::getSingleton('catalog/product_action')->updateAttributes(
    array($productId), 
    array('name'=>$newName, 'short_description' => $newShortDescription), 
    $storeId 
); 
2

aggiungere questo per specifica vista negozio

$product->setStoreId($storeId); 
0
$store_id = Mage::app()->getStore()->getStoreId(); 

$product = Mage::getModel('catalog/product')->setStoreId($store_id); 
$brandLabel = $product->setData('brand','adidas')->getResource()->saveAttribute($product, 'brand'); 
0
<?php $StoreId = Mage::app()->getStore()->getId(); 

$product = Mage::getModel('catalog/product')->setStoreId($StoreId); 
$brandLabel = $product->setData('brand','adidas')->getResource()->saveAttribute($product, 'brand'); ?> 
1

per la visualizzazione predefinita negozio

$product = new Mage_Catalog_Model_Product(); 
$product->setSku($sku); 
$product->setAttributeSetId($attributeSetId); 
$product->setTypeId($typeId); 
$product->setName($sku); 
$product->setWebsiteIDs(array($websiteId)); 
$product->setShortDescription('Short description in english'); 
$product->setStoreId(array(0)); 
Problemi correlati