Freelance Magento // 2ème année de Master MIAGE – Toulouse
Dans: Magento
17 août 2009Sous 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 :
Edit :
<?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();
?>
<?php
// Affichera : http://monsite.com/skin/frontend/{votre_interface}/{votre_theme}/images/zoom.gif
echo $this->getSkinUrl('images/zoom.gif');
?>
<?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) ?>
<?php echo $this->helper('customer/data')->getAccountUrl() ?>
<?php echo $this->helper('checkout/url')->getCartUrl() ?>
<?php echo $this->helper('customer/data')->getLoginUrl() ?>
<?php echo $this->helper('customer/data')->getLogoutUrl() ?>
<?php echo $this->helper('customer/data')->getForgotPasswordUrl() ?>
Exemple ici :
Catégorie « Mes produits » ayant l’identifiant : 2 et l’URL : « mes-produits.html » et la description « Description de la catégorie
// Retourne "mes-produits.html"
<?php echo Mage::getModel("catalog/category")->load(2)->getUrl() ?>
// Retourne "Description de la catégorie"
<?php echo Mage::getModel("catalog/category")->load(2)->getData("description") ?>
// Retourne "Description de la catégorie"
<?php echo Mage::getModel("catalog/category")->load(2)->getData("name") ?>
// Récupère la catégorie en courante
<?php $_cat = Mage::registry('current_category') ?>
<?php // Retourne l'identifiant de la catégorie (exemple : 13) echo $_cat->getId(); ?>
<?php // Retourne l'identifiant de la catégorie parente (Exemple : 4) echo $_cat->getParentId(); ?>
<?php // Retourne l'identifiant de la 1ère catégorie (Default Category) Exemple : 2 echo Mage::app()->getStore()->getRootCategoryId(); ?>
<?php // Retourne le niveau de la catégorie (Exemple : 2) echo $_category->getLevel(); ?>
<?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(); ?>
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('id_block')->toHtml() ?>
<?php echo Mage::getModel('cms/block')->setStoreId(Mage::app()->getStore()->getId())->load('id_block') ->getTitle(); ?>
// 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');
?>
Ajouter et récupérer des variables d’administration
<?php
if ($this->helper('core/url')->getCurrentUrl() == Mage:: getBaseUrl (Mage_Core_Model_Store:: URL_TYPE_WEB))
echo 'Page Accueil';
else
echo 'Autre Page';
?>
<?php if ($this->getIsHomePage()): ?> // Page Accueil <?php else: ?> // Autre Page <?php endif; ?>
<?php if (preg_match('#^/([_a-z-]+)$#', $this->helper('core/url')->getCurrentUrl())): ?>
<?php if ($this->helper('customer/data')->isLoggedIn()): ?>
<?php Mage::getSingleton("core/session", array("name" => "adminhtml")) ?>
<?php if( Mage::getSingleton("admin/session")->isLoggedIn() ): ?>
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()):?>
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.
4 Commentaires pour Variables et conditions utiles sous Magento
Philippe
janvier 3rd, 2010 à 14 h 41 min
Très bon article, très complet : Merci!
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?
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!^^
Thomas
juillet 8th, 2010 à 12 h 18 min
Très très bon article, en effet.
Merci.