Magento – Mémo code PHP

Voici un petit florilège de code PHP qui m’a été utile pour le développement d’application externe en relation avec Magento à partir de la v1.7. Avant j’utilisais l’API SOAP qui n’est pas complète et très lente !

Charger Magento à l’extérieur

// Chemin de Magento
require_once 'ton/chemin/app/Mage.php';
umask(0);
// Chargement en mode admin (backoffice)
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

getBaseUrl – Lien de Magento

// http://example.com/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
// http://example.com/js/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
// http://example.com/index.php/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
// http://example.com/media/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
// http://example.com/skin/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);

Récupérer l’URL courante dans Magento

echo Mage::helper('core/url')->getCurrentUrl();

Charger un produit avec l’id

$_product = Mage::getModel('catalog/product')->load($id);
$_product = Mage::getModel('catalog/product')->load(128);

Charger un produit avec un attribut

$_product = Mage::getModel('catalog/product')->loadByAttribute('sku','MASUPERREFERENCE');

Récupérer les données du produit

var_dump($_product->getData());

// D'autres exemples

// Type du produit (simple, grouped, configurable)
echo $_product->getTypeId();

// Nom du produit
echo $_product->getName();

// Id de l'attribut marque
echo $_product->getManufacturer();

Récupérer les attributs personnalisés du produit

echo $_product->getShippingChronopost();

// "votre_attribut_custom"
echo $_product->getVotreAttributCustom();

Tous les attributs personnalisés peuvent être récupérés dans vos templates. Par exemple j’ai créé un attribut « shipping_chronopost ». La méthode pour avoir la valeur sera donc : ->getShippingChronopost()

Pour récupérer le texte de votre attribut

echo $_product->getAttributeText('votre_attribut')

Et voilà ce que j’utilise au quotidien.