Détecter la page d’accueil de magento
février 28, 2010 10 CommentairesPetit 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()):?> .....

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 » ?
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
Merci de ta réponse.
J’ai besoin de conditionner l’affichage de bloc bien particulier uniquement sur la homepage.
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 !
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
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.
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.
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
Merci pour la précision eddi
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,