Détecter la page d’accueil de magento

février 28, 2010 10 Commentaires

Petit bout de code magento qui permet de savoir si on est sur la page d’accueil . Les utilisateur de wordpress connaissent la fonction is_home().

Comparer l’url de base à l’url en cours

Avant la version 1.4, pour détecter si j’étais sur la page d’accueil je plaçais ce code dans header.phtml :

<?php 
$host = parse_url(Mage::helper('core/url')->getCurrentUrl(),PHP_URL_HOST);
$path = parse_url(Mage::helper('core/url')->getCurrentUrl(),PHP_URL_PATH);
$headUrl = "http://$host$path";
if ($headUrl== Mage::getBaseUrl()) { echo "je suis sur la page d'accueil de magento" ;}
//echo $headUrl ; // http://localhost/magento/ 
?>

Nouveauté de la version 1.4 getIsHomePage()

Depuis la version 1.4 et l’apparition de nombreuses nouvelles méthodes, voici getIsHomePage(). Elle est présente dans header.phtml, ce qui est bien plus pratique pour détecter la page d’accueil.

<?php if ($this->getIsHomePage()):?> .....
 
 
n'importe ou dans magento
echo  Mage::helper('core/url')->getHomeUrl();
Code
10 commentaires : “Détecter la page d’accueil de magento”
  1. Renaud dit :

    Merci pour l’astuce mais je viens de tester dans « 1column.phtml » et cette méthode me renvoie NULL.

    Sais tu si elle est disponible que dans le « head.phtml » ?

  2. cédric rousset dit :

    Bonjour,
    Elle est disponible que sur header.phtml et non head.phtml

    Dans quel but tu veux détecter si tu es sur la page d’accueil à partir de 1column?

    tu peux toujours le faire en comparant PHP_URL_HOST et path

  3. Renaud dit :

    Merci de ta réponse.
    J’ai besoin de conditionner l’affichage de bloc bien particulier uniquement sur la homepage.

  4. Renaud dit :

    En fait je fais déjà cette détection (pour afficher des blocs spécifiques uniquement sur la homepage) mais évidemment, ce code de détection, proche de ta première version, est assez verbeux.

    J’aurais donc voulu profiter de cette nouvelle méthode…
    Tant pis !

  5. cédric rousset dit :

    Oui il est très verbeux :)
    sinon tu peut via le xml de mise a jour d’agencement importer un phtml qui lui fera référence a tes blocs statiques.
    Ou maintenant avec la nouvelle version 1.4 importer tes blocs statique avec les widget.
    http://bloggento.fr/widget-magento-12-/3017

  6. Renaud dit :

    En fait, avant d’en arriver à cette méthode un peu brutale, j’ai évidemment voulu me servir du xml d’agencement de ma page « cms/home ».

    Mais je n’ai pas réussi à faire ce que je voulais précisément.
    Ces 3 blocs doivent être placés juste avant le breadcrumb (qui est pour part situé juste avant le footer), jusqu’ici pas de problèmes.

    Mais ces 3 blocs sont « flottants », l’ordre d’apparition est donc indispensable et je n’ai jamais réussi à les faire apparaitre dans l’ordre souhaité, et donc, ma mise en page a pété systématiquement.

  7. cédric rousset dit :

    ah oui je vois.Alors autre solution :)
    ce que je fais pour la page d’accueil, je créer un nouvel agencement voir ce tutoriel http://bloggento.fr/magento-ajouter-un-template-agencement-gestion-de-la-home-page-12-/2437
    Dans ton cas tu peux copier coller le code de 1colum.phtml
    dans ton nouvel agencement. Dans celui ci avant le breadcrumb tu rajoute tes div flottantes. dans les div tu importe tes blocs statiques. comme ceci
    http://bloggento.fr/importer-phtml-et-bloc-statique-/784

    C’est bien d’avoir un agencement spécifique pour la page d’accueil car elle change souvent.

  8. eddi dit :

    Bonjour,
    Pas forcement la meme chose,
    la fonction getishomepage() a une portee unique sur l’url de base de magento ET sans parametre.
    cest a dire que si vous changer de langue
    exemple de anglais a francais
    url = http://www.bi2c.com/MG/?___store=fr&___from_store=gb
    alors getishomepage() ne detectera pas que cest la homepage
    alors que

    getCurrentUrl(),PHP_URL_HOST);
    $path = parse_url(Mage::helper(‘core/url’)->getCurrentUrl(),PHP_URL_PATH);
    $headUrl = « http://$host$path »;
    if ($headUrl== Mage::getBaseUrl()) { echo « je suis sur la page d’accueil de magento » ;}
    //echo $headUrl ; // http://localhost/magento/
    ?>

    le detectera bien

    Ed

  9. cédric rousset dit :

    Merci pour la précision eddi

  10. Matthieu dit :

    Bonjour,

    ca fait beaucoup de traitement je trouve pour savoir si on est sur la home…
    c’est quand meme plus simple de tester la valeur de configuration web/default/cms_home_page et de comparer avec l’id de la page courante.

    Cordialement,

Poster un commentaire

(obligatoire)

(obligatoire)