magento

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 et Zend s’associent

magento zend

La solution e-commerce PHP de la société Varien et la “PHP Company” viennent de s’associer pour fournir un pack comprenant un environnement PHP “Zend Server Community Edition” et la version community de Magento.
On peut imaginer que cela va contribuer à améliorer les 2 solution : fonctionnalités natives e-commerce au sein du Zend Framework, et optimisation de Magento.

zend magento pack

Pour en savoir plus :

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 et les urls canoniques

Depuis que les experts SEO sont apparus sur terre, les développeurs que nous sommes, sont beaucoup moins tranquilles. Il n’est pas rare de voir arriver le monsieur SEO, les yeux écarquillés et l’air stressés :
- “il y’a du contenu dupliqué qui remonte sur Google…faut le supprimer!”
- “Quoi? tu veux supprimer Google?”
- [...]
- “Oui bon c’est pas drôle, je reconnais.”

Continue reading “Magento et les urls canoniques”

Magento : supprimer le frontend

Je suis tombé récemment sur une problématique assez intéressante, à savoir n’utiliser que la partie administration sur un site sous Magento.
L’objectif est que lorsque l’on arrive sur le site par l’url http://monsite.com, on accède directement à l’administration.

J’ai découvert que l’administration était considérée au sein de Magento comme un site à part entière (voir ici pour comprendre la structure multi-site, multi-boutique et multi-vue de Magento). Il suffit donc de démarrer ce site dans le fichier index.php:

//lancement du site admin
Mage::run('admin');

Il y’a tout de même un léger problème si vous avez besoin d’utiliser les web services de Magento car l’url http://monsite.com/api/soap/?wsdl devient de fait inaccessible. Pour y remédier il suffit de dupliquer le fichier index.php, de le renommer en api.php par exemple et de lancer le site par défaut :

//lancement du site par défaut
Mage::run();

L’api sera accessible à cette nouvelle url : http://monsite.com/api.php/api/soap/?wsdl. Si vous ne voulez pas faire apparaitre le fichier api.php dans l’url, une simple règle de réécriture dans le .htaccess fera l’affaire.

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”.