URL Magento, les liens
septembre 15, 2009 5 CommentairesLiens,URL, cet article vous aidera à mieux comprendre comment naviguer dans magento, comment créer des liens vers vos fichiers media js skin et autres. Comment magento gère les URL dans les phtml ou les pages CMS, grâce à la méthode getBaseUrl (), elle se trouve dans la classe store.php  =>  \magento\app\code\core\Mage\Core\Model\store.php. D’autres méthodes alternatives permettent de naviguer comme getJsUrl(), ou getSkinUrl(), elles se trouvent dans d’autres classes.
URL dans les Phtml
Pour les exemples, entourez le code de echo pour une sortie Html.
Lien vers la racine de votre site magento.
<?php echo Mage::getBaseUrl('web'); ?> = http://www.maboutique-magento.com/
Lien vers le dossier JS
<?php echo Mage::getBaseUrl ('js'); ?> = http://www.maboutique-magento.com/js
Lien vers le dossier MEDIA
<?php echo MageMage::getBaseUrl ('media'); ?> = http://www.maboutique-magento.com/media
Lien vers le dossier SKIN
<?php echo MageMage::getBaseUrl ('skin'); ?> = http://www.maboutique-magento.com/skin
Cette utilisation pour le dossier SKIN n’est pas très pratique, vous êtes obligé de remonter toute l’arborescence vers votre dossier image SKIN/frontend/defaut/defaut/images
préférer <?php echo $this->getSkinUrl(’images/a.jpg’); ?> lien direct vers votre image « a.jpg ».
Récapitulatif liens
<?php echo Mage::getBaseUrl(); ?> => http://www.maboutique-magento.com/ <?php echo Mage::getBaseUrl('js'); ?> => http://www.maboutique-magento.com/js/ <?php echo Mage::getBaseUrl('media');?> => http://www.maboutique-magento.com/media/ <?php echo Mage::getBaseUrl('skin'); ?> = >http://www.maboutique-magento.com/skin/ <?php echo Mage::getBaseUrl('web');?> => http://www.maboutique-magento.com/ <?php echo Mage::getBaseUrl('link'); ?> => http://www.maboutique-magento.com/
Alternative liens
<?php echo $this->;getUrl(); ?> <?php echo $this->getJsUrl();?> => http://www.maboutique-magento.com/js/ <?php echo $this->getSkinUrl();?> => http://www.maboutique-magento.com/skin/frontend/default/default/ <?php echo $this->getSkinUrl('css/');?> => http://www.maboutique-magento.com//skin/frontend/default/default/css/ <?php echo $this->getSkinUrl('images/');?>=> http://www.maboutique-magento.com//skin/frontend/default/default/images/
Autre alternative
Mage::getBaseUrl (Mage_Core_Model_Store::URL_TYPE_JS); => http://www.maboutique-magento.com/js/ Mage::getBaseUrl (Mage_Core_Model_Store::URL_TYPE_LINK); => http://www.maboutique-magento.com/index.php/ Mage::getBaseUrl (Mage_Core_Model_Store::URL_TYPE_MEDIA);=> http://www.maboutique-magento.com/media/ Mage::getBaseUrl (Mage_Core_Model_Store::URL_TYPE_SKIN);Â => http://www.maboutique-magento.com/skin/ <img src="<?php echo $this->getSkinUrl('images/images.gif'); ?>"/>
L’URL de base de votre site est définie dans – admin systeme > configuration > general >web   URL de base pour moi c’est http://www.maboutique-magento.com/
- dans base donne a la table core_config_date =>     web/unsecure/base_url et web/secure/base_url
URL dans la partie CMS de Magento
Vous pouvez ajouter un lien dans la partie contenue d’une page CMS. Après l’installation de magento Vous pouvez voir dans le back office de magento ce code :
<a href="{{store direct_url="maCategorie/monProduit.html"}}"> <img src="{{skin url='images/media/imgProduit.jpg}}" alt=""/></a>
<img src="{{skin url='images/buggy/buggy-4x4-UTV.jpg'}}" alt="texte"/> Code ajouté par VR dans le tutoriel magento footer <a href="{{store url='<identifiant page CMS rel="nofollow">'}}">...</a> Ex : <a href="{{store url='presentation-de-ma-societe'}}" rel="nofollow">...</a> Ex 2 (avec un chemin plus profond) pour aller à l'espace client par exemple : <a href="{{store url='customer/account'}}" rel="nofollow">...</a> <div id="re""><a href="{{store url=""}}"><img src="{{skin url="images/image2.jpg"}}" alt="" /></a></div> Pour créer un lien vers une page produit : <a href="{{store url='<chemin hors racine magento rel="nofollow">'}}">...</a> Ex si la page est http://www.monsite.com/categorie/souscategorie/produit.html : <a href="{{store url='categorie/souscategorie/produit.html'}}" rel="nofollow">...</a>
strore direct_url prend l’url de base de votre site ensuite on y rajoute le reste de l’url. Idem pour Skin url nous amène jusqu’au dossier skin de notre thème.
Importer un fichier js à partir du dossier skin d’un thème
<action method="addItem"><type>skin_js</type><name>js/monjs.js</name></action>
Lien ver page accueil dans layout
<action method="addLink" translate="label title" module="customer"><label>Accueil</label><url>{{baseUrl}}</url><title>Accueil</title><prepare/><urlParams/><position>10</position><null /><aParams>rel="nofollow"</aParams></action>
Vous êtes maintenant capable de créer des liens entre vos pages magento ou vers des éléments magento (js, images,css).

bonjour,
j’ai effacé skin du côté de l’admin et j’ai sauvegarder.
ex: <?php echo Mage::getBaseUrl(''); ?
est-ce que je peux remettre le skin?
Bonjour,
oui magento ira toujours chercher le lien vers l’url du thème en cours, si vous n’avez plus de theme « propre » il ira le chercher dans le dossier default.
Bonjour Cédric,
Sur mon site, l’utilisateur à l’opportunité de naviguer par filtres (age, sexe, marque). Lorsqu’il clique sur un des filtres voici l’url générée : http://www.tate.com/jouets-garcons/pistolets-et-jeux-de-tir.html?age=161
=> age=161 égal à « enfant »
Ce que je voudrais c’est avoir une url de ce type pour le référencement : http://www.tate.com/jouets-garcons/pistolets-et-jeux-de-tir-enfant.html?age=161
Merci d’avance pour ton aide
Bonjour,
Je n’ai jamais travaillé sur cette partie ( les filtres) je ne sais pas. Par contre plus important que les url, c’est de renommer les titres de page en fonction du filtre. Là j’ai la solution enfin plutôt magentix. Cherche sur son blog il existe un tutoriel pour renommer les titres des pages en fonction du filtre choisi.
Je l’ai mis en place sur huiles et nature.
Ex sur la catégorie fleurs de Bach http://huiles-et-nature.fr/fleur-de-bach/les-38-fleurs-de-bach.html
quand tu cliques sur un filtre, celui-ci s’ajoute dans le titre de la page.
Ok Cédric, je te remercie pour ta réponse.
J’ai cherché de mon côté dans le core et j’ai trouvé la fonction getUrl dans le fichier : Mage/Catalog/Model/Layer/Filter/Item.php
J’ai réussi à avoir ce que je voulais avec les catégories en posant cette condition :
if ($this->getFilter() instanceof Mage_Catalog_Model_Layer_Filter_Category) {
$category = Mage::getModel(‘catalog/category’)->load($this->getValue());
return $category->getUrl();
}
mais maintenant, j’aimerais reproduire la même chose avec Mage_Catalog_Model_Layer_Filter_Attribute
Je continue de potasser et je vais aller faire une petite fouille sur Magentix. Si jamais ce que je t’ai indiqué t’a permis de penser à une solution, n’hésite pas à me la communiquer.