Magento – Einen statischen Block auf bestimmten Seiten aber auf bestimmten Seite nicht

Bild

Wir benötigten zuletzt eine Lösung, um einen kleinen Banner mit einer Kundeninformation auf allen Seiten anzeigen zu lassen aber NICHT im Checkout. Im Warenkorb hingegen sollte er auftauchen.

Einen Beitrag mit einem ähnlichen Thema (Info nur auf der Homepage auftauchen lassen aber auf keiner anderen Seite LINK) hatten wir schon, dieser Ansatz ist aber ein anderer.

Wir wollen hier einen Streifen oben am Rand des Bildschirms haben, dessen Inhalt aus einem Statischen Block kommt. Er soll frei editierbar sein und das ohne auf CSS-Dateien zugreifen zu müssen. Die Anzeige ist ähnlich wie der Demo-Store-Hinweis von Magento. Wir arbeiten hierfür mit verschiedenen Dateien.

  1. Erstellen die Datei
    app/design/frontend/[Eigenes Theme]/[ebenso]/template/page/html/site-info.phtml
  2. app/design/frontend/[Eigenes Theme]/[ebenso]/template/page/html/header.phtml
  3. app/design/frontend/rwd/default/layout/page.xml
  4. app/design/frontend/rwd/default/layout/checkout.xml

Die erste Datei legen wir neu an und schreiben folgenden Inhalt rein:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('site-header-info')->toHtml();?>

Die zweite Datei öffnen wir und schreiben

<?php echo $this->getChildHtml('site-info'); ?>

an eine uns beliebige Stelle (an der der Block auftauchen soll). Wir haben sie ganz oben vor

<div class="header-language-background">

eschrieben. Dies lädt die erstgenannte Daten – aber erst nach der nächsten Änderung.

In der dritten Datei suchen wir nach

<block type="page/html_header" name="header" as="header">

und fügen dort folgende Zeile darunter ein

<block type="core/template" name="site-info" template="page/html/site-info.phtml" />

Dies sorgt dafür, dass der HTML-Block geladen wird. Nun würde dieser Block auf jeder Seite geladen werden. Da wir aber wollen, dass er nicht im Checkout geladen wird, müssen wir noch

die vierte Datei anpassen. Hier wird dann nach

<checkout_onepage_index translate="label">

gesucht und dieser Code eingefügt

<remove name="site-info"/>

Wir haben dies nach

<remove name="left"/>

gemacht.

Hierdurch sagen wir dem Shop, dass er im One Page Checkout diesen Block nicht laden soll. Somit erfolgt auch keine Ausgabe. Die beiden letzten Änderungen könnten übrigens auch in der eigenen local.xml gemacht werden. Und selbstverständlich kann der genannte Code auch an jeder anderen beliebigen Stelle eingebaut werden.

Nun fehlt nur noch der Statische Block. Wir erstellen nun einen solchen mit dem Code “site-header-info”. Hier kann man nun alles reinschreiben was man will. Da wir keine CSS-Datei ändern wollen, sondern alle Änderungen aus dem Statischen Block vornehmen wollen, könnte ein möglicher HTML-Code für den Block so aussehen

<div class="site-info" style="min-height: 50px; background-color: red; color: white; padding-top: 15px; padding-bottom: 15px;">
<p style="text-align: center;">20% sparen mit dem Gutscheincode XYZ - alle Informationen finden Sie <span style="text-decoration: underline;"><a style="color: white; text-decoration: underline;" href="http://www.test.de">HIER</a></span>.</p>
</div>

Sobald man den Block aktiviert, wird der Block im Shop angezeigt. Deaktiviert man ihn wieder, ist der Block komplett unsichtbar.

Genutzt in Magento Version 1.9 Kommentare? Ergänzungen? Hinweise? 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 *