Türchen 09: Ein Magento Modul das es schneien lässt erstellen

Türchen 09 ist ein wenig gemütlich weihnachtlich. Es zeigt wie es mit ein paar wenigen Zeilen möglich ist fertige Java-Scripts zu verwenden die es im Webshop schneien lassen. Was brauchen wir? Am besten ein fertiges Java-Script das die Schneeflocken irgendwie schön rieseln lässt und natürlich ein Bild einer Schneeflocke. Natürlich erstellen wir das ganze als vollständiges Modul.

Home-page_1291750731869-650x344

Mein Schneescript habe ich recht schnell unter Peters1.dk gefunden. Zudem gab es da direkt ein paar Schneeflocken die man mit dem JavaScript verwenden konnte. Ich fand die nicht so toll und habe kurzerhand noch eine eigene etwas, wie ich finde, schönere erstellt :)

Also schnell das Script herunterladen und in den Skin-Ordner kopiert. Dabei sind die beiden Dateien snow.js von Peters1.dk und snow.gif im Ordner skin/frontend/default/base/schnee gelandet. Damit können wir sie über  die Magento-Methode getSkinUrl gut erreichen.

Nun ist es doch naheliegend ein kleines Modul zu erstellen welches, wenn es aktiv ist, sich darum kümmert im aktuellen Theme Schnee zu fabrizieren. Also zuerst einmal eine Modul-Config in app/etc/modules/Webguys_Schnee.xml erstellen:

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<modules>
		<Webguys_Schnee>
			<active>true</active>
			<codePool>community</codePool>
            		<depends>
				<Mage_Page />
			</depends>
		</Webguys_Schnee>
	</modules>
</config>

Damit kennt Magento unser Modul. Zudem müssen wir ihm noch mitteilen das unser Modul ein eigenes Layout.xml besitzt welches wir auch nutzen möchten. Dazu benötigt das Modul selbst noch einmal eine kleine Konfiguration in app/code/community/Webguys/Schnee/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<modules>
		<Webguys_Schnee>
			<version>0.0.1</version>
		</Webguys_Schnee>
	</modules>

    <frontend>
        <layout>
            <updates>
                <webguys_schnee>
                	<!-- Hier registrieren wir unser eigenes Layout-XML -->
                	<file>schnee.xml</file>
                </webguys_schnee>
            </updates>
       </layout>
    </frontend>
</config>

So. Nun können wir Einfluss auf das Magento-Layout nehmen. Eigentlich würde man nun ein externes Java-Script mittels Magento-Block-Methoden des Head-Blocks hinzufügen. Das geht jedoch in unserem Fall nicht so einfach da das herausgesuchte Snow.js erwartet das es unten im Footer der Seite installiert wird. Wir sagen also durch unsere neue Layout-XML in app/design/frontend/base/default/layout/schnee.xml das wir im Magento-Footer ein zusätzliches Template benötigen welches unseren Schnee einbindet.

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>
        <reference name="footer">
            <block type="core/template" name="schnee" template="schnee/flocken.phtml" after="-">
            	<action method="setFlocken"><flocken>15</flocken></action>
            </block>
        </reference>
    </default>
</layout>

Kurz gesagt: Im Bereich "default", also überall, beziehen wir uns auf "footer" und fügen dort ganz am Ende (after="-") einen neuen Block mit dem Namen "schnee" hinzu der das Template schnee/flocken.phtml verwendet. Auf diesen Block rufen wir zusätzlich die Methode setFlocken auf mit der wir per Layout-XML die Anzahl der Flocken bestimmen können.

Im Template app/design/frontend/base/default/template/schnee/flocken.phtml passiert nun nicht mehr viel. Die Hauptarbeit hat uns schließlich das Layout-XML abgenommen:

<script type="text/javascript">
	var SNOW_Picture = '<?php echo $this->getSkinUrl("schnee/snow.gif") ?>';
	var SNOW_no = <?php echo ( is_numeric( $this->getFlocken() ) ? $this->getFlocken() : 10 ); ?>
</script>
<script type="text/javascript" src="<?php echo $this->getSkinUrl('schnee/snow.js') ?>"></script>

Die Snow.js enthält in ihrem Urzustand zwei Variablen zur Konfiguration die bestimmen wie viele Schneeflocken es gibt welches Bild als Schneeflocke verwendet werden soll. Beide Variablen habe ich aus der Snow.js entfernt und vor dem Laden des JavaScripts im Template gesetzt. So habe ich noch die Möglichkeiten die Magento-Methode getSkinUrl für das Bild zu verwenden sowieso die Anzahl der Flocken des Layout-XMLs abzufragen.

Mein Ergebnis könnt ihr unter dev.webguys.de/schnee bewundern.

Download der fertigen Extension?

Selbstverständlich kann man sich das fertige Script um den Magento-Shop weihnachtlich zu gestalten auch direkt herunterladen.

Viel Spaß beim Schneemann bauen!



Ein Beitrag von Tobias Vogt
Tobias's avatar

Tobias Vogt arbeitet seit 2008 mit Magento und ist seit 2011 durch Magento zertifizierter Entwickler. Seit 2016 ist er Mitgründer und CTO bei der connect-io GmbH, einer Magento-Agentur mit Sitz im idyllischen Paderborn-Salzkotten. Er gehört zum Gründer-Team der Webguys und ist seit November 2011 Bachelor of Science (Wirtschaftsinformatik). Sie erreichen Ihn per E-Mail unter tobi@webguys.de.

Alle Beiträge von Tobias

Kommentare
Tobias Vogt am

Hey Simon,

danke danke. Finde es lustig das deine Empfehlung für ein Schnee-Script irgendwie auf die Maus reagieren zu scheint :)

schönen Gruß

Tobi

Simon Sprankel am

Hi,

Die Idee mit dem "Magento Adventskalender" ist wirklich cool, sind echt interessante Sachen dabei - Danke!

Will nur gerade noch einen Tipp für ein, wie ich finde, schöneres Schnee-Script da lassen: http://www.schillmania.com/projects/snowstorm/

Viele Grüße, Simon

Dein Kommentar