Magento – ( Statischen ) Block nur auf Homepage zeigen

Wer bestimmte Blocks nur auf der HOME Page also Start Seite des Magento Shops zeigen möchte, kann dies mit einem kleine Codeschnipsel machen.

In der header.phtml im Ordner

app/design/frontend/base/default/template/page/html

wird im Standard Template noch einfach:

<?php if ($this->getIsHomePage()):?>
<h1 class="logo"><strong><?php echo $this->getLogoAlt() ?></strong><a href="<?php echo $this->getUrl('') ?>" title="<?php echo $this->getLogoAlt() ?>" class="logo"><img src="<?php echo $this->getLogoSrc() ?>" alt="<?php echo $this->getLogoAlt() ?>" /></a></h1>
<?php else:?>
<a href="<?php echo $this->getUrl('') ?>" title="<?php echo $this->getLogoAlt() ?>" class="logo"><strong><?php echo $this->getLogoAlt() ?></strong><img src="<?php echo $this->getLogoSrc() ?>" alt="<?php echo $this->getLogoAlt() ?>" /></a>
<?php endif?>

gesagt und die Seite weiß, ob es sich um die Home-/ Startpage handelt oder nicht. Leider kann man diesen Code nun nicht so einfach überall hin kopieren, um selbes Ergebnis zu erhalten.

Eine Lösung, nur um anzuzeigen, ob es sich um die “Home” Page handelt, wäre z.B.:

<?php
$routeName = Mage::app()->getRequest()->getRouteName();
$identifier = Mage::getSingleton(\'cms/page\')->getIdentifier();

if($routeName == \'cms\' && $identifier == \'home\') {
echo \'You are in Homepage!\';
} else {
echo \'You are NOT in Homepage!\';
}
?>

Diese berücksichtigt auch verschiedene Sprachen.

Eine andere Möglichkeit, um dies zu überprüfen wäre:

<?php
$is_homepage = Mage::getBlockSingleton('page/html_header')->getIsHomePage();
if($is_homepage)
{
echo "Dies ist die Homepage!";
} else {
echo "Dies ist NICHT die Homepage!";
}
?>

So, nun aber zurück zur Frage wie man einen (statischen) Block nur auf der Homepage anzeigen lassen kann und das nicht nur im Header. Wir wollten dies z.B. in den Footer einfügen. So sollte aus SEO Gründen bestimmter Footer Text und auch ein Code ( HIER ) nur auf der Start Seite angezeigt / genutzt werden.

Wir haben dann folgenden Code verwendet, der in die footer.phtml an die richtige Stelle gesetzt wurde:

<?php
$ref = new Mage_Page_Block_Html_Header();
if($ref->getIsHomePage()){ ?>
<div class="homepage"><?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('Ihr_Block_Seitenbezeichner')->toHtml();?></div>
<?php
}
?>

(Es gibt auch die Möglichkeit dies umzudrehen und dem System zu sagen “Wenn Du NICHT die Home Page bist, dann mach X” hierfür im oberen Teil des Schnipsels ein! einfügen, so dass es dann so aussieht:

<?php
$ref = new Mage_Page_Block_Html_Header();
if(!$ref->getIsHomePage()){ ?>
<div class="homepage"><?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('Ihr_Block_Seitenbezeichner')->toHtml();?></div>
<?php
}
?>

So wird dann auf allen Seiten der Block angezeigt, nur auf der Home Page nicht.)

Genutzt in Magento Versionen 1.4.1.1 bis 1.7.0.2.. Fragen, Kommentare, Anregungen? Gerne!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Leave a Reply

Your email address will not be published. Required fields are marked *