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 :

  1. URL de la page courante
  2. URL des images et des CSS
  3. URL des dossiers de base
    1. URL de la racine
    2. URL des liens (utile en multi-domaine)
    3. URL du dossier des JS
    4. URL du dossier des medias
    5. URL du dossier des skins
  4. URL spécifiques
    1. URL du compte client
    2. URL du panier
    3. URL du tunnel de commande
    4. URL de la page de connexion
    5. URL de la page de déconnexion
    6. URL du mot de passe perdu
  5. Catégories
    1. URL d’une catégorie (via son identifiant)
    2. Description d’une catégorie (via son identifiant)
    3. Nom d’une catégorie (via son identifiant)
    4. Catégorie courante
    5. Id de la catégorie courante
    6. Id du parent d’une catégorie (via son identifiant)
    7. Id de la catégorie principale (root)
    8. Niveau dans l’arborescence
  6. Page CMS
    1. Nom de la page CMS courante
    2. Identifiant (clef-URL) de la page CMS courante
    3. Id de la page CMS courante
    4. Contenu d’une page CMS
  7. Blocs statiques CMS
    1. Contenu d’un bloc statique
    2. Titre d’un bloc statique
  8. Listing des pages CMS et des blocs statiques
  9. Titre de la catégorie voulue
  10. Variables d’administration
    1. Le numéro de téléphone du magasin
    2. Autres
  11. Panier
    1. Récupérer le montant total du panier
    2. Récupérer le nombre d’articles différents du panier
    3. Récupérer le nombre d’articles au total du panier
    4. Parcourir tous les articles du panier
    5. Ajouter un article au panier
    6. Enlever un article du panier
    7. Ajouter un lien « Ajouter au panier »
  12. Website / Store group / Store view

Fonctions :

  1. Formater un nombre en devise
  2. Retourner la date actuelle

Conditions :

  1. Si on se trouve sur la page d’accueil
  2. Si on se trouve sur une page CMS (éditoriale)
  3. Si l’utilisateur est loggué
  4. Si un administrateur est loggué
  5. Si la catégorie courante est une catégorie de niveau 1
  6. Relatives à un produit :
    1. Si c’est un produit configurable
    2. Si c’est un produit groupé
    3. Si un produit est vendable
    4. Si un produit est visible dans le catalogue
    5. Si un produit est activé
    6. (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;
}

Source

at id Donec mattis risus. dolor elit. libero