Sous Magento, il n’y a pas de réel Codex comme sous WordPress. Pour récupérer des variables en front-office, il est nécessaire d’aller voir dans les fichiers Mage pour découvrir certaines valeurs assez utiles.
Variables :
- URL de la page courante
- URL des images et des CSS
- URL des dossiers de base
- URL de la racine
- URL des liens (utile en multi-domaine)
- URL du dossier des JS
- URL du dossier des medias
- URL du dossier des skins
- URL spécifiques
- URL du compte client
- URL du panier
- URL du tunnel de commande
- URL de la page de connexion
- URL de la page de déconnexion
- URL du mot de passe perdu
- Catégories
- URL d’une catégorie (via son identifiant)
- Description d’une catégorie (via son identifiant)
- Nom d’une catégorie (via son identifiant)
- Catégorie courante
- Id de la catégorie courante
- Id du parent d’une catégorie (via son identifiant)
- Id de la catégorie principale (root)
- Niveau dans l’arborescence
- Page CMS
- Nom de la page CMS courante
- Identifiant (clef-URL) de la page CMS courante
- Id de la page CMS courante
- Contenu d’une page CMS
- Blocs statiques CMS
- Contenu d’un bloc statique
- Titre d’un bloc statique
- Listing des pages CMS et des blocs statiques
- Titre de la catégorie voulue
- Variables d’administration
- Le numéro de téléphone du magasin
- Autres
- Panier
- Récupérer le montant total du panier
- Récupérer le nombre d’articles différents du panier
- Récupérer le nombre d’articles au total du panier
- Parcourir tous les articles du panier
- Ajouter un article au panier
- Enlever un article du panier
- Ajouter un lien « Ajouter au panier »
- Website / Store group / Store view
Fonctions :
Conditions :
- Si on se trouve sur la page d’accueil
- Si on se trouve sur une page CMS (éditoriale)
- Si l’utilisateur est loggué
- Si un administrateur est loggué
- Si la catégorie courante est une catégorie de niveau 1
- Relatives à un produit :
- Si c’est un produit configurable
- Si c’est un produit groupé
- Si un produit est vendable
- Si un produit est visible dans le catalogue
- Si un produit est activé
- (combo) Si un produit est « vraiment » vendable
Variables :
1 : URL de la page courante
Retourne : http://www.monsite.com/ (si page d’accueil)
Retourne : http://www.monsite.com/mon-produit.html (si sur une page d’un produit)
$this->helper('core/url')->getCurrentUrl();
2 : URL des images et des CSS
Avoir une URL formaté pour éviter d’être dépendant du thème
Retourne : http://monsite.com/skin/frontend/{votre_interface}/{votre_theme}/images/zoom.gif
$this->getSkinUrl('images/zoom.gif');
3 : URL des dossiers de base
A – URL de la racine => http://monsite.com/
Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_WEB);
B – URL des liens => http://mobile.monsite.com/
(si multi-domaine, mais les images au même endroit)
Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_LINK);
C – URL du dossier des JS => http://monsite.com/js/
Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_JS);
D – URL du dossier des medias => http://monsite.com/media/
Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_MEDIA);
E – URL du dossier des skins => http://monsite.com/skin/
Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_SKIN);
4 : URL spécifiques
A – URL du compte client
$this->helper('customer/data')->getAccountUrl();
B – URL du panier
$this->helper('checkout/url')->getCartUrl();
C – URL du tunnel de commande
$this->helper('checkout/url')->getCheckoutUrl();
D – URL de la page de connexion
$this->helper('customer/data')->getLoginUrl();
E – URL de la page de déconnexion
$this->helper('customer/data')->getLogoutUrl();
F – URL du mot de passe perdu
$this->helper('customer/data')->getForgotPasswordUrl();
5 : URL d’une catégorie
Exemple :
Catégorie « Mes produits » ayant l’identifiant : 2 et l’URL : « mes-produits.html » et la description « Description » de la catégorie
A – URL d’une catégorie (via son identifiant)
Mage::getModel("catalog/category")->load(2)->getUrl();
B – Description d’une catégorie (via son identifiant)
Mage::getModel("catalog/category")->load(2)->getData("description");
C – Nom d’une catégorie (via son identifiant)
Mage::getModel("catalog/category")->load(2)->getData("name");
D – Catégorie courante
$_cat = Mage::registry('current_category');
E – Id de la catégorie courante
$_cat->getId();
F – Id du parent d’une catégorie (via son identifiant)
$_cat->getParentId();
G – Id de la catégorie principale (root)
Mage::app()->getStore()->getRootCategoryId();
H – Niveau dans l’arborescence
$_category->getLevel();
6 : Page CMS
A – Nom de la page CMS courante
Mage::getSingleton('cms/page')->getTitle();
B – Identifiant (clef-URL) de la page CMS courante
Mage::getSingleton('cms/page')->getIdentifier();
C – Id de la page CMS courante
Mage::getSingleton('cms/page')->getId();
D – Contenu d’une page CMS
Mage::getModel('cms/page')->setStoreId( Mage::app()->getStore()->getId())->load('id_page')->getContent();
7 : Blocs statiques CMS
A – Contenu d’un bloc statique
$this->getLayout()->createBlock('cms/block')->setBlockId('id_block')->toHtml();
B – Titre d’un bloc statique
Mage::getModel('cms/block')->setStoreId( Mage::app()->getStore()->getId())->load('id_block')->getTitle();
8 : Listing des pages CMS et des blocs statiques
A – Listing des pages CMS (listing détaillé en commentaires)
getCollection();
echo 'Listing des pages :';
echo '';
foreach($pages as $page){
echo 'Page identifier : ' . $page->identifier . '';
echo 'Page page_id : ' . $page->page_id . '';
echo 'Page content : ' . $page->content . '';
echo 'Page root_template : ' . $page->root_template . '';
echo 'Page creation_time : ' . $page->creation_time . '';
echo 'Page identifier : ' . $page->identifier . '';
echo 'Page update_time : ' . $page->update_time . '';
echo 'Page is_active : ' . $page->is_active . '';
}
echo '';
B – Listing des blocs statiques (listing détaillé en commentaires)
getCollection();
echo 'Listing des blocks :';
echo '';
foreach($blocks as $block){
echo 'Block title : ' . $block->title . '';
echo 'Block identifier : ' . $block->identifier . '';
echo 'Block content : ' . $block->content . '';
echo 'Block creation_time : ' . $block->creation_time . '';
echo 'Block update_time : ' . $block->update_time . '';
echo 'Block is_active : ' . $block->is_active;
}
echo '';
9 : Titre de la catégorie voulue
Retourner le nom de la catégorie
$idCategorie = 8;
$_helper = $this->helper('catalog/output');
$cat_courante = Mage::getModel('catalog/category')->load($idCategorie);
echo $_helper->categoryAttribute( $cat_courante, $this->htmlEscape($cat_courante->getName()), 'name');
10 : Variables d’administration
A – Le numéro de téléphone du magasin
Mage::getStoreConfig('general/store_information/phone')
B – Autres
Voir les identifiants des groups depuis Firebug par exemple. Vous pouvez retrouver l’intégralité des données de Système > Configuration.
Vous pouvez aussi chercher dans la table core_config_data (une fois que vous avez déjà enregistré une fois la page de configuration voulue)
11 : Panier
Pour accéder aux produits se trouvant dans la panier, Magento propose une collection d’objet qui facilite l’accès aux informations.
A – Récupérer le montant total du panier
// Affiche le montant total du panier brut (Affiche : 5.0000)
getQuote()->getGrandTotal()
// Affiche le montant total du panier formaté (Affiche : 5,00€)
helper('checkout')->formatPrice(Mage::getSingleton('checkout/cart')->getQuote()->getGrandTotal())
B – Récupérer le nombre d’articles différents du panier
echo Mage::helper('checkout/cart')->getCart()->getItemsCount();
C – Récupérer le nombre d’articles au total du panier
echo Mage::helper('checkout/cart')->getCart()->getItemsQty();
D – Parcourir tous les articles du panier
$_cart_products = Mage::getModel("checkout/cart")->getItems(); foreach($_cart_products as $_cart_product){
// Traitement de chaque produit du panier
}
E – Ajouter un article au panier
$id = Mage::getModel('catalog/product')->getIdBySku("product_sku");
$cart = Mage::getModel("checkout/cart");
$cart->addProductsByIds(array($id));
$cart->save();
F – Enlever un article du panier
$cart = Mage::getModel("checkout/cart");
$id = Mage::getModel('catalog/product')->getIdBySku("product_sku");
$items = $cart->getItems();
foreach($items as $item){
if($item->getProduct()->getId() == $id){
$itemId = $item->getItemId();
$cart->removeItem($itemId)->save();
}
}
G – Ajouter un lien « Ajouter au panier »
$_product->entity_id,'qty' => 1)) ;
12 : Website / Store group / Store view
Récupérer les informations relatives au magasin et au site web courant
Website Id : 1
Mage::app()->getWebsite()->getId();
Website Name : My Website
Mage::app()->getWebsite()->getName();
Store Group Id : 4
Mage::app()->getStore()->getGroup()->getId();
Store Group Name : My Store name
Mage::app()->getStore()->getGroup()->getName();
Store ID : 4
Mage::log( Mage::app()->getStore()->getId();
Store View Code : default
Mage::app()->getStore()->getCode();
Store View Name : My Store view name
Mage::app()->getStore()->getName();
Pour lister les vues (store view)
$stores = Mage::getModel('core/store')->getCollection(); foreach($stores as $store) {
Mage::log($store->getData()
}
Pour lister les sites (websites)
$websites = Mage::getModel('core/website')->getCollection(); foreach($websites as $website) {
Mage::log($website->getData()
}
Fonctions
1 : Formater un nombre en devise
Méthode 1
Mage::helper('checkout')->formatPrice(99.99);
Méthode 2
Mage::app()->getStore()->getBaseCurrency()->format(99.99, array(), true);
2 : Retourner la date actuelle
Date Formatée
date("Y-m-d G:i:s", Mage::getModel('core/date')->timestamp(time());
Date Timestamp
Mage::getModel('core/date')->timestamp(time());
Conditions
1 : Si on se trouve sur la page d’accueil
A – Magento < 1.4
if ($this->helper('core/url')->getCurrentUrl() == Mage:: getBaseUrl (Mage_Core_Model_Store:: URL_TYPE_WEB))
B – Magento => 1.4
if ($this->getIsHomePage()):
2 : Si on se trouve sur une page CMS (éditoriale)
A noter que la page d’accueil est une page CMS.
if(Mage::getSingleton('cms/page')->getId()):
3 : Si l’utilisateur est logué
helper('customer/data')->isLoggedIn()):
4 : Si un administrateur est logué
Mage::getSingleton("core/session", array("name" => "adminhtml")); if(Mage::getSingleton("admin/session")->isLoggedIn() ):
5 : Si la catégorie courante est une catégorie de niveau 1
Une catégorie de 1er niveau pour le client n’est pas sa première étape du catalogue, mais la catégorie principale de Magento (Root Category).
Retourne le niveau de la catégorie
$_category->getLevel();
Si c’est une catégorie principale
if( $_category->getLevel() == 2 ):
Ou alors, vous avez une autre méthode plus stricte :
if( $_category->getParentId() == Mage::app()->getStore()->getRootCategoryId() ):
6 : Relatives à un produit :
Les méthodes de conditions importantes se trouvant dans : « app/code/core/Mage/Catalog/Model/Product.php »
A – Si c’est un produit configurable
if( $_product->isConfigurable() ):
B – Si c’est un produit groupé
if( $_product->isGrouped() ):
C – Si un produit est vendable
Pour Magento, un produit est vendable si :
Le produit est activé
Le produit est en stock (Quantité)
Le produit n’a pas l’attribut « disponibilité » à « épuisé »
if( $_product->isSaleable() ):
D – Si un produit est visible dans le catalogue
Si l’attribut « Visibilité » est sur « Catalogue » (ou « Catalogue, Recherche »)
if( $_product->isVisibleInSiteVisibility() ):
E – Si un produit est activé
Si l’attribut « Statut » est sur « Activé »
if( $_product->VisibleInCatalog() ):
F – (combo) Si un produit est « vraiment » vendable
Donc un produit est vraiment vendable si :
Le produit est « vendable » (point 3)
Le produit est visible (point 4)
Le produit est activé (point 5)
public function isAvailable($_product) {
$available = (
$_product->isVisibleInSiteVisibility() &&
$_product->isVisibleInCatalog() &&
$_product->isSaleable()
);
return $available;
}