URL Magento, les liens

septembre 15, 2009 9 Commentaires

Liens,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 Mage::getBaseUrl ('media');  ?> = http://www.maboutique-magento.com/media

Lien vers le dossier SKIN

<?php echo Mage::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_WEB) // affiche url de base en cas de multistore ou multisite  monsite.com/fr  monsite.com/en   on aura monsite.com sans le code magasin de l'url ;
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'); ?>" alt="" />
ou
 <img src="<?php echo $this->getSkinUrl('images/'); ?>bqe/paiement.png" alt="Paiement" />

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="> <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=">'}}">...</a>
Ex :
<a rel="nofollow" href="{{store url='presentation-de-ma-societe'}}">...</a>
Ex 2 (avec un chemin plus profond) pour aller à l'espace client par exemple :
<a rel="nofollow" href="{{store url='customer/account'}}">...</a>
<div id="re"><a href="{{store url="><img src="{{skin url=" alt="" /></a></div>
Pour créer un lien vers une page produit :
<a href="{{store url='<chemin hors racine magento rel=">'}}">...</a>
Ex si la page est http://www.monsite.com/categorie/souscategorie/produit.html :
<a rel="nofollow" href="{{store url='categorie/souscategorie/produit.html'}}">...</a>
<img title="titre " src="{{media url='catalog/category/guide.jpg'}}" alt="alt image " />

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

 skin_jsjs/monjs.js

Lien ver page accueil dans layout

 <label>Accueil</label>{{baseUrl}}
 
10rel="nofollow"

Vous êtes maintenant capable de créer des liens entre vos pages magento ou vers des éléments magento (js, images,css).

Url de la page courante

<?php echo $this->helper('core/url')->getCurrentUrl(); ?>
Code
9 commentaires : “URL Magento, les liens”
  1. illam dit :

    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?

  2. admin dit :

    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.

  3. Yohan dit :

    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

  4. cédric rousset dit :

    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.

  5. Yohan dit :

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

  6. Matthieu dit :

    Bonjour,

    merci pour l’article. N’y a t-il pas une erreur dans les liens vers les dossiers medias et skin ?

    echo MageMage::getBaseUrl (‘media’);
    => echo Mage::getBaseUrl (‘media’);

    et

    echo MageMage::getBaseUrl (‘skin’);
    echo Mage::getBaseUrl (‘skin’);

    Bonne continuation.

  7. cédric rousset dit :

    Oui effectivement un seule Mage suffit :)

  8. soukayna dit :

    salut,
    comment connecter filezilla avec wapeserver??

  9. cédric rousset dit :

    Bonjour,
    Pas besoin de fedzilla avec wampserver, en local on a pas besoin de transfert ftp

Poster un commentaire

(obligatoire)

(obligatoire)