Teil 9: Module für PHP-basierte E-Commerce-Systeme schreiben
Kommentare

Ein eigenes Plug-in erstellen: Wir erstellen in diesem Fall gemeinsam ein kleines Plug-in, das uns erlaubt, einen Text im Backend einzutragen, der an einer bestimmten Stelle im Frontend dargestellt wird.

Um ein neues Plugin zu erstellen, legen Sie zunächst einen Ordner innerhalb von /engine/Shopware/Plugins/Local/ an. Darin erstellen Sie eine Datei Bootstrap.php – diese ist für jedes neue Plug-in obligatorisch. In dieser Datei ist unter anderem die Installationsroutine enthalten – handelt es sich bei Shopware doch um das einzige System der drei vorgestellten, bei der ein externes Modul einfach über einen 1-Click-Installer installiert werden kann. Die erste Methode install() wird also immer dann aufgerufen, wenn ein Plug-in über das Backend installiert wird.

Listing 6

createEvent('Enlight_Controller_Action_PostDispatch','onPostDispatch');
   $this-> subscribeEvent($event);
    
    $form = $this->Form();
    $form->setElement('textarea', 'yourtext', 
      array('label'=>'Text for left column','value'=>'Hello World'));
    $form->save();
    return true;
  }

Über createEvent() wird ein neues Event erstellt. Außerdem erzeugt onPostDispatch einen neuen lokalen Listener. Als Nächstes wird das gerade erstellte Event über subscribeEvent()in der Datenbank persistiert. Schließlich muss sichergestellt werden, dass der Return-Wert true ausgegeben wird, damit die Plug-in-Installation als erfolgreich ausgegeben wird.

Das Form-Objekt wird in diesem Beispiel verwendet, um eine Textarea zu erzeugen, die im Backend mit beliebigem Text gefüllt werden kann. Die zweite Methode namens onPostDispatch() in unserer Bootstrap-Datei enthält den Listener auf das Post-Dispatch-Event, das bei jedem Seitenaufruf des Frontends angestoßen wird (Listing 7).

Listing 7

public static function onPostDispatch(Enlight_Event_EventArgs $args)
  {
    $view = $args->getSubject()->View();
    $config = Shopware()->Plugins()->Frontend()->PHPM()->Config();
    $view->pluginText = $config->yourtext;
    $view->addTemplateDir(dirname(__FILE__)."/Views/");
    $view->extendsTemplate('plugin.tpl');
  }

Das Objekt Enlight_Event_EventArgs $args erlaubt es uns in diesem Fall, auf die Event-Eigenschaften zuzugreifen. Mithilfe von getSubject() ist es möglich, auf die Referenz des Objekts zuzugreifen, in das das Event gelegt wurde – in unserem Fall also den Front-Controller. Auf diese Weise lässt sich also sowohl auf die Controller als auch die Request- und Response-Objekte zugreifen.

Last but not least sorgen wir dafür, dass die zentrale Config-Ressource $config genutzt wird, um die gerade gefüllte Variable $config->yourtext auszulesen bzw. im Template zur Verfügung zu stellen.

Weiter mit: Teil 10

Alle Teile: Teil 1, Teil 2, Teil 3, Teil 4, Teil 5, Teil 6, Teil 7, Teil 8, Teil 9, Teil 10

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -