Skip to content

1. März 2012

Magento – Eigenes Modul erstellen

Anhand eines kleinen Sliders, zeige ich euch wie ihr mit einfacher Content-Pflege diesen auf eure Seite Bringt. Als Grundlage wird jQuery + Slider verwendet. Zum Slider erhalten ihr hier weitere Informationen und Download. Ich zeige euch, zu nächst den Aufbau den Aufbau der Dateien.

Was man vorweg noch wissen sollte ist, dass der Modulename aus zwei Teilen besteht. Der erste ist der sogenannte Firmenname, der zweite Teil der Modulname. Zusammengesetzt wird es so geschrieben: Firmenname_Modulname. In diesem Beispiel heißt es My_Ulitmate.

 

Schritt 1: Template anlegen

Dazu legt ihr, in eurem Theme-Ordner ( /app/design/frontend/Your_Interface/Your_Theme/template/Module_Name/ ) die Datei “view.phtml” an.

<div>
  <span>
    <strong>Output MyUltimate</strong>
  </span><br />
  <span style="color:#FFFFF;">
    <?php echo $this->receiveMessage(); ?>
  </span>
</div>

Das ist die Ausgabe, die ihr seht, wenn ihr das Modul in den Content einbindet. Zu der Funktion “receiveContent” kommen wir noch.

Schritt 2: Inhalte bereitstellen

Nun stellen wir noch die Funktionen für die Ausgabe bereit. In folgendem Pfad müsst ihr die “view.php” – Datei anlegen: /app/code/local/Module_Name/Block/

<?php
class My_Ultimate_Block_View extends Mage_Core_Block_Template {
private $message;
private $att;

protected function createMessage($msg) {
$this->message = $msg;
}

public function receiveContent() {
if( $this->message != '' )
return $this->message;
else {
$this->createMessage('Hello MyUltimate');
return $this->message;
}
}

protected function _toHtml() {
$html .= parent::_toHtml();

if( ( $this->att = $this->getAdditional() ) && $this->getAdditional() != '' ) {
$html .= '<ul id="mycarousel" class="jcarousel-skin-tango">
<li>
<img src="' . str_replace(';', '" width="75" height="75px" /></li><li><img src="',$this->att) . '" width="75" height="75px" />
</li>
</ul>';
$html .= '<script type="text/javascript">
jQuery(document).ready( function() {
jQuery("#mycarousel").jcarousel();
});
</script>';
}

else
$html .= '<br /> Kein Attribute ';

return $html;
}
}

?>

Es gilt zu beachten, dass die Funktion “getAdditional” aus dem Attribut “Additional” resultiert. Dieses werden wir beim Aufruf des Modules wieder erkennen.

Schritt 3: Config erstellen

In der config.xml werden zum Beispiel die Versionsnummer oder auch der Pfad zum “local” angegeben. Der Pfad ist: /app/code/local/Module_Name/etc/

<?xml version="1.0" encoding="utf-8" ?>
<config>
  <modules>
    <My_Ultimate>
      <version>1.0</version>
    </My_Ultimate>
  </modules>
  <global>
    <blocks>
      <My_Ultimate>
        <class>My_Ultimate_Block</class>
      </My_Ultimate>
    </blocks>
  </global>
</config>

Schritt 4: Modul bekannt machen

Zu guter letzt müssen wir noch das Modul bekannt machen und dazu erstellen wir eine Firmennamen_All.xml in /etc/modules/

<?xml version="1.0" encoding="utf-8" ?>
<config>
  <modules>
    <My_Ultimate>
      <active>true</active>
      <codePool>local</codePool>
    </My_Ultimate>
  </modules>
</config>

Schritt 5: Modul aufrufen

Der Aufruf ist simple und kann wie folgt aussehen:

{{block type=”My_Ultimate/view” Additional=”http://static.flickr.com/66/199481236_dc98b5abb3_s.jpg;http://static.flickr.com/66/199481236_dc98b5abb3_s.jpg;http://static.flickr.com/66/199481236_dc98b5abb3_s.jpg;http://static.flickr.com/66/199481236_dc98b5abb3_s.jpg;http://static.flickr.com/66/199481236_dc98b5abb3_s.jpg” template=”Ultimate/view.phtml” }}

Alternative kann in ein Template der Block auch direkt eingebunden werden:

<reference name="right">
<block type="My_Ultimate/view" Additional="Test" template="Ultimate/view.phtml" />
</reference>

Das Ergebnis könnte zum Beispiel so aussehen:

 

Zusätzliche Informationen

Wichtig zu beachten sind folgende Dinge:

  • Groß- und Kleinschreibung
  • Attributename wird zu einer Funktion, zB.: getAdditional()
  • codePool gibt an, in welchem Verzeichnis sich die config befindet (app/code/)
  • Es können mehrere Module in einer config.xml bekannt gemacht werden

 

Read more from Magento

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments