Snippets

Comment manipuler les prix tiers d’un produit Magento

Terminons notre semaine de découverte du code Magento en abordant une fonctionnalité bien pratique : les prix tiers (« tiers prices » en V.O.).

Magento-observer

Les prix tiers sont des prix « conditionnés ». Un produit a au minimum un prix -fixe- et éventuellement un prix spécial pour une durée déterminée ou non. Les prix tiers permettent de définir des prix spécifiques à une quantité achetée et / ou à un groupe d’acheteur.

Ce qui permet -par exemple- de proposer un catalogue dédié aux professionnels avec des prix minorés ou d’inciter à l’achat avec une politique de prix dégressifs sur la quantité.

Continue reading “Comment manipuler les prix tiers d’un produit Magento”

Comment créer un produit Magento par code

Suite de notre découverte du modèle objet Magento. Après la création d’une catégorie et la manipulation des collections d’entités Mangento voyons comment créer un produit simple … by code of course.

Magento-observer

Lors de la création des catégories nous avions utilisé un array PHP et la méthode setData() pour renseigner les attributs. Cette fois-ci nous allons utiliser les assesseurs de notre objet.

Dans le code proposé ci-dessous tout les attributs par défaut d’un produit Magento ne seront pas renseignés. Les attributs non renseignés aurons les mêmes valeurs par défaut que si le produit avait été créé par le frontend. Entre autre la génération automatique de l’URL-key à partir du nom est implicite si elle n’est pas précisée à la création.

Continue reading “Comment créer un produit Magento par code”

Récupérer une ou plusieurs catégories par code dans Magento

Nous avons vu hier comment créer une catégorie par code dans Magento.

Je vous propose aujourd’hui de voir comment récupérer une ou plusieurs catégories, comment les parcourir puis d’implémenter une méthode permettant de vérifier si une catégorie existe ou non d’après son attribut “name”.

Magento-observer

Cet article va nous permettre de découvrir la manipulation des collections d’objets Magento. Les notions ci-dessous ne s’appliquent pas seuleusement qu’aux catégories Magento mais également à toutes les entités EAV (Entité - Attribut - Valeur) comme les produits, les attributs, les clients, les commandes …

Continue reading “Récupérer une ou plusieurs catégories par code dans Magento”

Comment créer une catégorie Magento par code

Voici la suite de notre découverte de l’API Magento. Aujourd’hui je vous propose de créer -par code- une catégorie Magento.

Magento-observer

Le concept des catégories est fondamentale de l’architecture Magento. Les catégories permettent d’organiser les produits de manière arborescente afin par exemple de structurer l’expérience visiteur sur le frontend.

Comme la création manuelle de -beaucoup de- catégories via l’interface d’administration peut s’avérer fastidieuse, il peut s’avérer trés pratique de créer les catégories par batch. Le code proposé ci-dessous aborde donc la manipulation d’une partie du modèle des catégories. Libre à vous ensuite de l’implémenter dans votre propre logique en fonction de vos besoins spécifiques.

Continue reading “Comment créer une catégorie Magento par code”

Comment créer un batch Magento

Damien, au lieu de Twitter écris des posts sur Australopitech … Damien fais un billet sur Australopitech … Damien tu ne montre pas l’exemple …“, gnia, gnia, gnia.

Et bien soit, je vous propose donc de commettre une série de posts sur Magento et son API.

Pour commencer par le commencement, voyons comment créer un batch Magento qui servira à nos futurs articles sur l’API Magento …

Magento-observer

Continue reading “Comment créer un batch Magento”

Magento - Jouer avec les stocks

Comment afficher la quantité de stock disponible d’un produit :

$_product = Mage::getModel('catalog/product')->load(PRODUCT_ID);
echo Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty();

et voici comment mettre a jour les stocks (dans un batch par exemple) :

$_product = Mage::getModel('catalog/product')->load(PRODUCT_ID);
Mage::getModel('cataloginventory/stock_item')
    	 ->loadByProduct($_product)
    	 ->setData('qty', 666)
    	 ->save();

et parfois tous ces “save()” sur le produit ne fonctionnent pas ; premier reflex (dans le cas d’un store unique bien sûr) :

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); // a mettre avant le save...

Magento - Sélectionner tous les produits d’un AttributeSet

un snippet pour montrer comment sélectionner les produits d’un attribute set donné.
pas besoin de connaitre son id, on fera avec le nom :

//trouver l'id a partir du nom :
$set_id = Mage::getModel('eav/entity_attribute_set')
                    ->getCollection()
                    ->addFilter('attribute_set_name', 'AttrbuteSetName')
                    ->getLastItem()
                    ->getId();
 
//selectionner les produits :
$products = Mage::getModel('catalog/product')
	        	->getCollection()
	        	->addFieldToFilter('attribute_set_id', $set_id)
	        	->getItems();

et là, on a un tableau de produits appartenant au groupe “AttrbuteSetName”.

Magento - Comment ajouter un AttributeSet

Un premier snippet pour montrer comment ajouter un nouvel AttributeSet (groupe d’attributs) automatiquement :
  

//on vérifie qu'il n'existe pas déjà :
$attributeSetId = Mage::getModel('eav/entity_attribute_set')
	->getCollection()
	->addFilter('attribute_set_name', 'LeNomDeMonAttributeSet')
	->getLastItem()
	->getId();
 
//si pas trouvé, on l'ajoute :
if(!$attributeSetId) {    
	$attributeSetId = Mage::getModel('eav/entity_attribute_set')
		->setEntityTypeId(Mage::getModel('eav/entity')->setType('catalog_product')->getTypeId())
		->setAttributeSetName('LeNomDeMonAttributeSet')
		->save()
		->initFromSkeleton(4) // le 4 c'est pour l'attributeSet Default.
		->save()
		->getId();
}

initFromSkeleton(4) permet de le créer à partir du “template” de l’attributeSet par défaut, on peut mettre autre chose, du moment où c’est un id d’attributeSet valide.