2010-07-13 16 views
2

J'essaie d'intégrer certaines fonctionnalités de Magento dans mon CMS personnalisé afin de faciliter la mise à jour de certains de leurs produits par mes clients. J'ai déjà écrit des classes pour récupérer toutes les informations dont j'ai besoin, mais j'essaie de trouver comment enregistrer les modifications d'un produit de la même manière (IE, attributs tels que la couleur, la taille, l'empaquetage ...). Est-ce possible de faire à travers le mage?Magento - utiliser Mage pour éditer un produit?

Actuellement, je construis essentiellement une classe comme ci-dessous, puis j'ai différentes fonctions pour filtrer les produits, les sessions, et générer des miniatures ... mais je n'arrive pas à trouver quoi que ce soit sur l'édition d'un produit.

Mage::app();
$this->model = Mage::getModel('catalog/product');

Quelqu'un d'autre essayé cela avant?

Répondre

2

Alors après beaucoup de tracas, je rassemblé un code qui fonctionne:

function setAttribute($pid,$options) 
{ 
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
    $this->model = Mage::getModel('catalog/product')->load($pid); 
    foreach ($options as $k=>$v) 
    { 
    $this->model->setData($k,$v); 
    } 
    $this->model->save(); 
} 

Vous transmettez un ID de produit et un tableau des données que vous souhaitez mettre à jour pour ledit produit.
quelque chose comme ci-dessous:

$options = array('labels'=>"No", 
'sizee_us_gal'=>1.98, 
'size_l'=>7.5, 
'makes_us_gal'=>7, 
'makes_l'=>23, 
'timeframe_weeks'=>4, 
'composition'=>"grapes", 
'packed'=>"case of 2" 
); 

Hope this helps tout le monde.

5

Vous devez d'abord charger un produit spécifique. Vous pouvez le faire en utilisant la méthode de charge() et passant dans un ID de produit:

$this->model = Mage::getModel('catalog/product')->load(1111); 

Vous pouvez ensuite définir (modifier) ​​vos données produit comme celui-ci:

$this->model->setName('New Product Name'); 
$this->model->setPrice(99.99); 
$this->model->setShortDescription('New Short Description'); 

Ensuite, il suffit de lancer la sauvegarde() pour enregistrer le produit:

$this->model->save(); 
+0

Est-il possible de modifier l'un des attributs du produit? IE, je vends des bouteilles de vin et voudrais changer quelques attributs personnalisés tels que l'année, ABV, ou le type (rouge/blanc)? – LinuxGnut

+1

Oui, il est possible de modifier n'importe quel attribut de cette manière. Une seule exception pourrait être des images pour le produit, car elles sont un peu plus compliquées. –

+0

Après avoir chargé un produit, je peux récupérer un attribut que j'ai besoin d'éditer tel que "manufacturer" en faisant $ this-> model-> getResource() -> getAttribute ('manufacturer') -> getFrontend() -> getValue ($ product). Comment puis-je définir la valeur après l'avoir récupérée? – LinuxGnut