Einstieg in die Shopware Frontend-Plugin Entwicklung.

June 9, 2015 09:13

Für den Anfang werde ich einen eigenen Controller Registrieren der einen „Hallo Welt“ Text Ausgeben soll.

Dafür lege ich unter:
engine/Shopware/Plugins/Local/Frontend/
(Erklärung: In engine/Shopware/Plugins befinden sich alle Plugins. Local steht für lokal installierte Plugins. Frontend steht dafür, dass es sich um einen Frontend Plugin handelt)

ein Verzeichnis an, namens SisiDemo
(Erklärung: Sisi ist unser Entwickler Präfix den solltet Ihr gegen euren eigenen Präfix austauschen )

In das Verzeichnis muss nun die Bootstrap.php angelegt werden
Die Classen Benennung entsprechend anpassen

class Shopware_Plugins_Frontend_SisiDemo_Bootstrap extends
      Shopware_Components_Plugin_Bootstrap
{
   // Die Funktion gibt Shopware Informationen über das Plugin zurück
    public function getInfo()
    {
        return array(
            'label' => 'SiSi Demo',
            'author'=>'Sign&Sinn'
        );
    }
    // Die Install Funktion
    public function install()
    {

        // Registrierung des Controller Event
        //in diesen Beispiel heißt der Controller Demo
        $this->subscribeEvent(
            'Enlight_Controller_Dispatcher_ControllerPath_Frontend_Demo',
            'onGetControllerPathFrontend'
        );
        return true;
    }

 // Hier wird der Pfad Registriert beim auslösen des events
    public function onGetControllerPathFrontend(Enlight_Event_EventArgs $arguments)
    {
        return $this->Path() . 'Controllers/frontend/Demo.php';
    }
}

Nachdem die Bootstrap Datei angelegt wurde muss nur noch die Controller Datei angelegt werden. In die Verzeichnisstruktur, die Verzeichnisse Controllers und Frontend anlegen und anschließend die Demo.php  

engine/Shopware/Plugins/Local/Frontend/SisiDemo/Controllers/frontend/Demo.php
<?php
class Shopware_Controllers_Frontend_Demo extends Enlight_Controller_Action
{
    // Die init action wird immer vor der eigentlichen Action aufgefrufen
    // Das template Verzeichnis wird registriert
        public function init()
        {
    $this->View()->addTemplateDir(dirname(__FILE__) . "/../../Views/");
        }


Jetzt fehlt nur noch das Template
engine/Shopware/Plugins/Local/Frontend/SisiDemo/Views/frontend/index.tpl

// vererbt das Haupttemplate
{extends file="frontend/index/index.tpl"}

// Der Block wird mit „Hallo Welt“ überschrieben
{block name="frontend_index_content"}Hallo Welt{/block}

(Erklärung: Shopware verwendet in den Templates Smarty PHP. Die Templates können vererbt und die Blocks überschrieben, oder per prepend und append erweitert werden)

Die index Action ist die default Action des controllers und lässt sich deshalb über
domäne/demo aufrufen.

Bitte nicht vergessen, dass Ihr beim Registrieren des Events das Plugin installieren müsst.

Gutes Gelingen!
Estefan Huerta Barroso