Variables et conditions utiles sous Magento

Dans: Magento

17 août 2009

Sous Magento, il n’y a pas de réel Codex comme sous Wordpress. Si vous voulez détecter le cas où vous êtes sur la page d’accueil ou sur une page éditoriale, il n’y a pas de is_home(), ou is_page().

De même que 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 de la page de connexion
    4. URL de la page de déconnexion
    5. URL du mot de passe perdu
  5. Catégories
    1. URL d’une catégorie (via son id)
    2. Description d’une catégorie (via son id)
    3. Nom d’une catégorie (via son id)
    4. Catégorie courante
    5. Id de la catégorie courante
    6. Id du parent d’une catégorie (via son id)
    7. Id de la catégorie principale (root)
  6. Titre de la page CMS courante (+ identifiant / +id)
  7. Listing des pages CMS et des blocs statiques
  8. Blocs statiques CMS
    1. Contenu d’un bloc statique
    2. Titre d’un bloc statique
  9. Titre de la catégorie voulue
  10. Email de contact

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

Edit :

  • 08/02/10 : Titre d’un bloc statique CMS
  • 28/02/10 : Détection page accueil @ Magento >= 1.4
  • 01/03/10 : Si un administrateur est loggué
  • 17/05/10 : URL d’une catégorie (via son identifiant)
  • 18/05/10 : Description d’une catégorie (via son id)
  • 18/05/10 : Nom d’une catégorie (via son id)
  • 07/07/10 : Catégorie courante
  • 07/07/10 : Id de la catégorie courante
  • 07/07/10 : Id du parent d’une catégorie (via son id)
  • 07/07/10 : Id de la catégorie principale (root)
  • 07/07/10 : Si la catégorie courante est une catégorie de niveau 1
  • 07/07/10 : Niveau dans l’arborescence

Variables :

1) URL de la page courante

<?php /**
* Affiche : http://monsite.com/ (si page d'accueil)
* Affiche : http://monsite.com/mon-produit.html (si sur une page d'un produit). Ect
*/

echo  $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

<?php
// Affichera : http://monsite.com/skin/frontend/{votre_interface}/{votre_theme}/images/zoom.gif
echo $this->getSkinUrl('images/zoom.gif');
?>  

3) URL des dossiers de base


<?php // 1 - URL de la racine 			=> http://monsite.com/ ?>
<?php echo Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_WEB) ?>

<?php // 2 - URL des liens			=> http://mobile.monsite.com/ (si multi-domaine, mais les images au même endroit) ?>
<?php echo Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_LINK) ?>

<?php // 3 - URL du dossier des JS 		=> http://monsite.com/js/ ?>
<?php echo Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_JS);

<?php // 4 - URL du dossier des medias	=> http://monsite.com/media/ ?>
<?php echo Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_MEDIA) ?>

<?php // 5 - URL du dossier des skins		=> http://monsite.com/skin/ ?>
<?php echo Mage::getBaseUrl(Mage_Core_Model_Store:: URL_TYPE_SKIN) ?>

4) URL spécifiques

1 – URL du compte client

<?php echo $this->helper('customer/data')->getAccountUrl() ?>

2 – URL du panier

 <?php echo $this->helper('checkout/url')->getCartUrl() ?>

3 – URL de la page de connexion

<?php echo $this->helper('customer/data')->getLoginUrl() ?>

4 – URL de la page de déconnexion

<?php echo $this->helper('customer/data')->getLogoutUrl() ?>

5 – URL du mot de passe perdu

<?php echo $this->helper('customer/data')->getForgotPasswordUrl() ?>

5) URL d’une catégorie (via son identifiant)

Exemple ici :

Catégorie « Mes produits » ayant l’identifiant : 2 et l’URL : « mes-produits.html » et la description « Description de la catégorie

1 – URL d’une catégorie (via son id)

// Retourne "mes-produits.html"
<?php echo Mage::getModel("catalog/category")->load(2)->getUrl() ?>

2 – Description d’une catégorie (via son id)

// Retourne "Description de la catégorie"
<?php echo  Mage::getModel("catalog/category")->load(2)->getData("description") ?>

3 – Nom d’une catégorie (via son id)

// Retourne "Description de la catégorie"
<?php echo  Mage::getModel("catalog/category")->load(2)->getData("name") ?>

4 – Catégorie courante

// Récupère la catégorie en courante
<?php $_cat = Mage::registry('current_category') ?>

5 – Id de la catégorie courante


<?php

// Retourne l'identifiant de la catégorie (exemple : 13)

echo $_cat->getId();

?>

6 – Id du parent d’une catégorie (via son id)

<?php
// Retourne l'identifiant de la catégorie parente (Exemple : 4)
echo $_cat->getParentId();
?>

7 – Id de la catégorie principale (root)

<?php
// Retourne l'identifiant de la 1ère catégorie (Default Category) Exemple : 2
echo Mage::app()->getStore()->getRootCategoryId();
?>

8 – Niveau dans l’arborescence

<?php
// Retourne le niveau de la catégorie (Exemple : 2)
echo $_category->getLevel();
?>

6) Titre de la page CMS courante (+ identifiant / + id)

<?php // Affichera : Qui-sommes-nous ? (Le nom de la page CMS)
echo Mage::getSingleton('cms/page')->getTitle(); ?>

// Affichera : qui-sommes-nous (l'identifiant de la page)
<?php echo Mage::getSingleton('cms/page')->getIdentifier(); ?>

// Affichera : 2 (l'ID)
<?php echo Mage::getSingleton('cms/page')->getId(); ?>

7) Listing des pages CMS et des blocs statiques

8) Blocs statiques CMS

1 – Contenu d’un bloc statique

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('id_block')->toHtml() ?>

2 – Titre d’un bloc statique

<?php echo Mage::getModel('cms/block')->setStoreId(Mage::app()->getStore()->getId())->load('id_block') ->getTitle(); ?>

9) Titre de la catégorie voulue

// Afficher 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) Email de contact

Ajouter et récupérer des variables d’administration

Conditions :

1) Si on se trouve sur la page d’accueil

a) Magento < 1.4

<?php

if ($this->helper('core/url')->getCurrentUrl() == Mage:: getBaseUrl (Mage_Core_Model_Store:: URL_TYPE_WEB))
  echo 'Page Accueil';
else
  echo 'Autre Page';
?> 

b) Magento => 1.4

<?php if ($this->getIsHomePage()): ?>
	// Page Accueil
<?php else: ?>
	// Autre Page
<?php endif; ?>

2) Si on se trouve sur une page CMS (éditoriale)

Les pages éditoriales sont théoriquement composé uniquement de caractères alphabetiques (ou alphanumeriques : rajouter 0-9 dans la regex), et de tirets.
Les pages produits et de catégories contiennent .html (donc un point), et les pages de Magento (customer/account) contiennent des slashs.
<?php if (preg_match('#^/([_a-z-]+)$#', $this->helper('core/url')->getCurrentUrl())): ?>

3) Si l’utilisateur est loggué

<?php if ($this->helper('customer/data')->isLoggedIn()): ?>

4) Si un administrateur est loggué


<?php Mage::getSingleton("core/session", array("name" => "adminhtml")) ?>
<?php 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).

Donc c’est le niveau 2.

level 1) Root

level 1) level 2) Cat 1

level 1) level 2) Cat 2

level 1) level 2) level 3) Cat 2 – 1

level 1) level 2) level 3) Cat 2-2

<?php
// Retourne le niveau de la catégorie
echo $_category->getLevel();
?>
<?php // Si c'est une catégorie principale ?>
<?php if( $_category->getLevel() == 2 ): ?>
1er Niveau
<?php endif ?>

Ou alors, vous avez une méthode un peu plus brutale :


<?php if( $_category->getParentId() == Mage::app()->getStore()->getRootCategoryId() ): ?>
Cat Level 1
<?php else: ?>
Cat Autre
<?php endif ?>
<?php if ($this->getIsHomePage()):?>

4 Commentaires pour Variables et conditions utiles sous Magento

Avatar

Philippe

janvier 3rd, 2010 à 14 h 41 min

Très bon article, très complet : Merci!

Avatar

Quentin

juin 1st, 2010 à 17 h 40 min

Comment pourrais-je utiliser la condition « utilisateur logué » dans un bloc statique à partir du backend de Magento?

Avatar

Quentin

juin 2nd, 2010 à 10 h 05 min

Je viens de trouver ma réponse, il ne faut pas s’embêter avec le backend!^^

Avatar

Thomas

juillet 8th, 2010 à 12 h 18 min

Très très bon article, en effet.

Merci.

Formulaire pour Commenter

Bienvenue sur mon Site CV

Je m'appelle Frédéric Martinez.

Je suis étudiant en Master MIAGE à Toulouse et Freelance Magento.

Ce site présente mon CV ainsi que mes réalisations professionnelles, personnelles et universitaires.

rss_32 twitter_32