Magento Beispiel einer Extension (Modul) Erstellung

Gepostet am Januar 26, 2012

Im folgenden erstellen wir eine einfache Extension für Magento. Die Extension enthält einen Controller und eine Backend Konfiguration.
„Entwickler“ ist in unserem Beispiel der Hersteller unserer Extension und „Optionswitcher“ der Name des Moduls. Meine Extension heißt „Optionswitcher“ da diese später mal diese Funktion übernehmen soll.

Legen Sie folgende Ordnerstruktur an (auf Groß und Kleinschreibung achten!):

1
2
3
4
5
/app/code/local/Entwickler
/app/code/local/Entwickler/Optionswitcher
/app/code/local/Entwickler/Optionswitcher/controllers
/app/code/local/Entwickler/Optionswitcher/etc
/app/code/local/Entwickler/Optionswitcher/Helper

Legen Sie folgende Dateien an (auf Groß und Kleinschreibung achten!):

1
2
3
4
/app/code/local/Entwickler/Optionswitcher/controllers/IndexController.php
/app/code/local/Entwickler/Optionswitcher/etc/config.xml
/app/code/local/Entwickler/Optionswitcher/etc/system.xml
/app/code/local/Entwickler/Optionswitcher/Helper/Data.php

Befüllen Sie den Controller mit Inhalt (über den Controller kann eine Extension vom Browser aus aufgerufen werden):

Info: Allgemein enthalten Zend Framework Scripte keinen abschließenden PHP Tag „?>“
Datei: /app/code/local/Entwickler/Optionswitcher/controllers/IndexController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Entwickler_Optionswitcher_IndexController extends Mage_Core_Controller_Front_Action {
 
	/*
	* Return Attribut ID after Ajax
	*
	* @return null
	*/
	function getMessageAction() {
		echo Mage::helper('entwickler_optionswitcher')->getMessage(); //ruft eine Funktion im Helper auf
	}	
 
}

Inhalt der config.xml

Tag „modules“ – enthält die Versionsnummer und muss in jeder Extension vorhanden sein
Tag „global“ – hier werden alle Helper, Models und Installationsscripte bekannt gemacht
Tag „global“ – „helpers“ – definiert in dieser Extension den Helper (ein Helper sollte für jede Extension existieren)
Tag „frontend“ – definiert alle Frontend-Relevanten dinge wie Templates, Sprachdateien und den Frontendnamen zum späteren Aufruf über den Browser (immer erforderlich)
Tag „adminhtml“ – definiert in unserer Extension die Berechtigung zum Aufruf unserer Konfiguration im Backend
Datei: /app/code/local/Entwickler/Optionswitcher/etc/config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version="1.0"?>
<config>
  <modules>
    <Entwickler_Optionswitcher>
      <version>0.0.1</version>
    </Entwickler_Optionswitcher>
  </modules>
  <global>
    <helpers>
      <entwickler_optionswitcher>
        <class>Entwickler_Optionswitcher_Helper</class>
      </entwickler_optionswitcher>
    </helpers>
  </global>
  <frontend>
    <routers>
      <entwickler_optionswitcher>
        <use>standard</use>
        <args>
          <module>Entwickler_Optionswitcher</module>
          <frontName>optionswitcher</frontName>
        </args>
      </entwickler_optionswitcher>
    </routers>
  </frontend>
  <adminhtml>
    <acl>
      <resources>
        <all>
          <title>Allow Everything</title>
        </all>
        <admin>
          <children>
            <system>
              <children>
                <config>
                  <children>
                    <optionswitcher>
                      <title>Mediabox - All</title>
                    </optionswitcher>
                  </children>
                </config>
              </children>
            </system>
          </children>
        </admin>
      </resources>
    </acl>
  </adminhtml>
</config>

Inhalt der system.xml

Tag „sections“ „optionswitcher“ „groups“ – enthält die Felder, welche im Backend angezeigt werden, hier kann man einfach fortlaufend weitere Felder definieren.
In unserem Beispiel wird ein Feld mit dem Bezeichner „text“ angelegt.
Tag „tabs“ – definiert den Hauptmenüpunkt in der Konfiguration, genauso kann man die selections in ein bereits existierendes Tab einhängen (dazu gibt es in „sections“ den Tag „tab“).
Datei: /app/code/local/Entwickler/Optionswitcher/etc/system.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?xml version="1.0"?>
<config>
  <tabs>
    <entwickler translate="label" module="entwickler_optionswitcher">
      <label>Entwickler</label>
      <sort_order>101</sort_order>
    </entwickler>
  </tabs>
  <sections>
    <optionswitcher translate="label" module="entwickler_optionswitcher">
      <label>Option Switcher</label>
      <tab>entwickler</tab>
      <frontend_type>text</frontend_type>
      <sort_order>10</sort_order>
      <show_in_default>1</show_in_default>
      <show_in_website>1</show_in_website>
      <show_in_store>1</show_in_store>
      <groups>
        <optionsswitchglobalconfig translate="label">
          <label>Grundeinstellungen</label>
          <comment></comment>
          <sort_order>200</sort_order>
          <show_in_default>1</show_in_default>
          <show_in_website>1</show_in_website>
          <show_in_store>1</show_in_store>
		  <comment>
		  <![CDATA[
			Text Kommentar
		  ]]>
	      </comment>
          <fields>
		  	<text translate="label">
              <label>Text:</label>
              <frontend_type>text</frontend_type>
              <sort_order>1</sort_order>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>0</show_in_store>
			  <comment>
                <![CDATA[Beispiel: Hallo Welt]]>
              </comment>
            </text>
          </fields>
        </optionsswitchglobalconfig>
      </groups>
    </optionswitcher>
  </sections>
</config>

Inhalt der Data.php

Kurz erklärt, der Constructor läd sich die Eingabe aus unserer Konfiguration im Backend, schreibt den Inhalt von „text“ in die Variable der Klasse und es gibt eine Funktion getMessage, welche durch unseren Controller aufgerufen wird und einen Text zurück gibt.
Datei: /app/code/local/Entwickler/Optionswitcher/Helper/Data.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class Entwickler_Optionswitcher_Helper_Data extends Mage_Core_Helper_Abstract {
 
	var $text;
 
	/*
	* Constructor
	*
	*
	*/
	public function __construct() {
		$this->text = Mage::getStoreConfig('optionswitcher/optionsswitchglobalconfig/text',Mage::app()->getStore());
	}
 
	/*
	* Gibt String zurück
	*
	* @return string
	*/
	public function getMessage() {
		return "Mein Text: ".$this->text;
	}
 
}

Als letztes muss noch eine Datei erstellt werden! Diese aktiviert die Extension und erst dann bindet Magento diese Extension ins System ein.

Ordner: /app/etc/modules
Datei anlegen: Entwickler_Optionswitcher.xml (im Grunde ist dieser Name egal, sollte aber „Hersteller_Modulname“ sein).
Tag „active“ – durch den Inhalt „true“ wird das Modul aktiviert
Datei: /app/etc/modules/Entwickler_Optionswitcher.xml

1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
<config>
	<modules>
		<Entwickler_Optionswitcher>
			<active>true</active>
			<codePool>local</codePool>
                </Entwickler_Optionswitcher>
	</modules>
</config>

Testen der Extension

Aktivierung der Extension prüfen
Nun haben wir die Extension erstellt und aktiviert. Gehen Sie ins Backend und gehen die in die Übersicht der Erweiterungen: „System -> Konfiguration -> Erweiter“. Wenn nun unsere Extension „Entwickler_Optionswitcher“ in der Liste zu finden ist, wurde die Extension richtig eingebunden.

Backend Konfiguration
Rufen Sie nun die Optionen unserer Extension auf: „System -> Konfiguration -> Entwickler“ und geben Sie in unser Textfeld einen Text ein + Speichern.
Achtung: bei einem 404 Fehler im Backen ausloggen und neu einloggen.

Aufrufen unserer Funktion
Rufen Sie nun folgenden Link auf:

1
http://domain.de/optionswitcher/index/getMessage

Download der Beispielextension

Download

Tags: ,

Eine Antwort bis “Magento Beispiel einer Extension (Modul) Erstellung”

  1. Weight loss
    Dez 05, 2012
    Reply

    Wie mache ich mein eigenes Blogger -Layout? I bereits einen Header , ich möchte lernen, wie man ein passendes Layout machen ? wünsche Ihnen viel Glück



Leave a Reply

 

Posts of Current Category



Facebook: