Variables et conditions utiles de Magento (cheat sheet)

  • De le 09 avril 2012
  • Difficulté : 1/4

Variables et conditions utiles de Magento (cheat sheet) Aide mémoire très utile rédigé par Frédéric Martinez, auteur du blog martinez-frederic.fr et fondateur de l'Agence Web E-commerce PH2M. Ce cheat sheet Magento permet un gain de temps non négligeable lors de nos développements.

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_WEB);

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

A - URL d'une catégorie (via son identifiant)

Retourne "mes-produits.html"


Mage::getModel("catalog/category")->load(2)->getUrl();

B - Description d'une catégorie (via son identifiant)

Retourne "Description de la catégorie"


Mage::getModel("catalog/category")
            ->load(2)
            ->getData("description");

C - Nom d'une catégorie (via son identifiant)

Retourne "Description de la catégorie"


Mage::getModel("catalog/category")
            ->load(2)
            ->getData("name");

D - Catégorie courante

Récupère la catégorie courante


$_cat = Mage::registry('current_category');

E - Id de la catégorie courante

Retourne l'identifiant de la catégorie


$_cat->getId();

F - Id du parent d'une catégorie (via son identifiant)

Retourne l'identifiant de la catégorie parente


$_cat->getParentId();

G - Id de la catégorie principale (root)

Retourne l'identifiant de la 1ère catégorie (Default Category)


Mage::app()->getStore()
           ->getRootCategoryId();

H - Niveau dans l'arborescence

Retourne le niveau de la catégorie


$_category->getLevel();

6. Page CMS

A - Nom de la page CMS courante

Retourne : Qui-sommes-nous ? (Le nom de la page CMS)


Mage::getSingleton('cms/page')->getTitle();

B - Identifiant (clef-URL) de la page CMS courante

Retourne : qui-sommes-nous (l'identifiant de la page)


Mage::getSingleton('cms/page')->getIdentifier();

C - Id de la page CMS courante

Retourne : 2 (l'ID)


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)


$pages = Mage::getModel('cms/page')->getCollection();
echo 'Listing des pages :';
echo '<ul>';
foreach($pages as $page){
        ?>
        <li id="page-<?php echo $page->identifier ?>"><?php echo $page->title ?></li>
        <?php
        /*
        // En détail
        echo 'Page title : ' . $page->title . '<br />';
        echo 'Page identifier : ' . $page->identifier . '<br />';
        echo 'Page page_id : ' . $page->page_id . '<br />';
        echo 'Page content : ' . $page->content . '<br />';
        echo 'Page root_template : ' . $page->root_template . '<br />';
        echo 'Page creation_time : ' . $page->creation_time . '<br />';
        echo 'Page identifier : ' . $page->identifier . '<br />';
        echo 'Page update_time : ' . $page->update_time . '<br />';
        echo 'Page is_active : ' . $page->is_active . '<br />';
        */
}
echo '</ul>';

B - Listing des blocs statiques (listing détaillé en commentaires)


$blocks = Mage::getModel('cms/block')->getCollection();
echo 'Listing des blocks :';
echo '<ul>';
foreach($blocks as $block){
        ?>
        <li id="block-<?php echo $block->identifier ?>"><?php echo $block->title ?></li>
        <?php
        /*
        // En détail
        echo 'Block block_id : ' . $block->block_id . '<br />';
        echo 'Block title : ' . $block->title . '<br />';
        echo 'Block identifier : ' . $block->identifier . '<br />';
        echo 'Block content : ' . $block->content . '<br />';
        echo 'Block creation_time : ' . $block->creation_time . '<br />';
        echo 'Block update_time : ' . $block->update_time . '<br />';
        echo 'Block is_active : ' . $block->is_active;
        */
}
echo '</ul>';

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)
<?php echo Mage::getSingleton('checkout/cart')->getQuote()->getGrandTotal() ?>
// Affiche le montant total du panier formaté (Affiche : 5,00€)
<?php echo $this->helper('checkout')->formatPrice(Mage::getSingleton('checkout/cart')->getQuote()->getGrandTotal()) ?>

B - Récupérer le nombre d'articles différents du panier


// Affiche le nombre d'articles différents du panier (Exemple : 2 apn et 3 tablettes => 2)
echo Mage::helper('checkout/cart')->getCart()->getItemsCount();

C - Récupérer le nombre d'articles au total du panier


// Affiche le nombre d'articles dans le panier (Exemple : 2 apn et 3 tablettes => 5)
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"


echo Mage::getUrl('checkout/cart/add', array('product' => $_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)

if (Mage::getSingleton('cms/page')->getId())

A noter que la page d'accueil est une page CMS.

3. Si l'utilisateur est loggué

if ($this->helper('customer/data')->isLoggedIn())

4. Si un administrateur est loggué

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 trouvent 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

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;
}

Auteur :

Frédéric Martinez est Freelance Magento, fondateur de l'agence web e-commerce PH2M.

commentaires

Commentez cet article : Variables et conditions utiles de Magento (cheat sheet)