Programmiertes Plugin nur durch hochladen im Backend install

Hallo Leute, ich habe ein Plugin programmiert mit einer Bootstrap in einem Verzeichnis welches den Namen des Plugins besitzt und das im Verzeichnis shopware/plugins/community/frontend angelegt. Sowie einem kleinen Controller in shopware/controller/frontend/. Ich musste notgedrungen in den TPL Dateien von emotion und default Anpassungen für Ausgaben vornehmen. Zusätzlich musste ich an vorhandenen Action Methoden im Checkout Controller, hier confirm und finish, Code hinzufügen. Nun meine Frage, kann ich alles das zusammengepackt im Backend Bereich nur durch hochladen des Plugins es zum laufen bringen oder sind zwingend händische nachträgliche Änderunsübernahmen nötig? Was muss ich tun um solch ein Plugin nur durch hochladen in Shopware zum laufen zu bringen? Vielen Dank für eure hilfreichen Antworten. Gruß Daniel

Hallo Daniel, habe ich dich richtig verstanden, dass du die bereits vorhanden default tpl Dateien von Shopware überschrieben hast? Das funktioniert zwar, ist aber nicht der vorgesehene Weg, könnte bei einem Update seitens von Shopware lustig werden… Du musst deine Änderungen an den TPL z. B. mittels einer separaten Datei vornehmen. Das ist z. B. hier ausführlichst beschrieben: http://wiki.shopware.de/Einsteiger-Deta … 9_870.html Mit append wir am Ende des Blocks code eingefügt Mit prepend am Anfang Ohne append / prepend wird der Block überschrieben. Dann kannst du alles in eine zip Datei packen, die über das Backend hochgeladen werden kann. Dabei werden alle Dateien in den Pluginordner kopiert. Die Ordnerstruktur deiner Zipdatei lautet wie folgt: DeinPlugin.zip / Frontend oder Backend / SwagDeinPlugin / Bootstrap.php / Views/frontend

Ok danke schon mal für die Antwort, ich habe nun soweit alles angepasst nur wird mein Template nicht gerendert. So sieht mein Template File aus und liegt in Shopware/Plugins/Community/Frontend/MyPlugin/Views/frontend/checkout/meintpl.tpl [code] {block name=‘frontend_checkout_table_footer_left_add_voucher’}

Gutscheincode:

- - -

{if isset($error)} {$error} {/if} {\* Deliveryfree \*} {if $sShippingcostsDifference}

{se name=“CartInfoFreeShipping” namespace=“frontend/checkout/cart”}{/se} {se name=“CartInfoFreeShippingDifference” namespace=“frontend/checkout/cart”}{/se}

{/if} {/block} [/code] Wie man sieht will ich die cart_footer_left.tpl die Shopware mit sich bringt komplett überschreiben. Und so versuche ich es im onPost Dispatch einzubinden. ´$view-\>extendsTemplate('frontend/checkout/cart\_footer\_left.tpl'); $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsBlock( 'frontend\_checkout\_table\_footer\_left\_add\_voucher', '{include file="frontend/checkout/cart\_footer\_meinetpl.tpl"}' . "\n"); Jedoch wird mein Template da nicht geladen, ich habe Backend wie Browsercache geleert. Was mache ich da noch falsch?

Ich habe nun wieder ein Stück weit geschafft, nun will ich aber die Daten die im Warenkorb ganz unten stehen erweitern und einen Wert aus meinen Plugin. Das heist meine Daten müssen genau unter Summe stehen. Wie bekomme ich das hin? So habe ich es versucht. [code] {extends file=‚parent:frontend/checkout/cart_footer.tpl‘} {block name=‚frontend_checkout_cart_footer_field_labels‘}

{se name=„CartFooterSum“}{/se}

{se name=„MyCouponValue“}{/se}

{se name=„CartFooterShipping“}{/se}

{se name=„CartFooterTotal“}{/se}

{if $sUserData.additional.charge_vat}

{se name=„CartFooterTotalNet“}{/se}

{foreach $sBasket.sTaxRates as $rate=>$value}

{se name=„CartFooterTotalTax“}{/se}

{/foreach} {/if}
{/block} [/code] Und so in meiner Bootstrap. $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/checkout/cart\_footer\_coupon.tpl'); $view-\>extendsTemplate('frontend/checkout/cart\_footer\_data.tpl'); Jedoch werden mir dann nur noch die Namen der Textbausteine in 2 # Zeichen ausgegeben. Und wie kann ich es erreichen das ich den Wert meines Plugins dort hin bekomme? Wenn ich mittendrin was rein schreiben will, geht das nicht mit den Block ersetzen mal so einfach, bin grad recht ratlos.

Ich habe mir nun ein Duplikat der cart_footer.tpl in mein Verzeichnis Shopware/Plugins/Frontend/Views/frontend/checkout angelegt. Rufe das so auf. $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/checkout/cart\_footer.tpl'); Und egal was in dem tpl File was ich dupliziert habe mache, es ändert sich rein gar nichts. Wie kann ich nun die cart_footer.tpl in meinem Plugin modifizieren?

Hallo Daniel, ganz grob in etwa so? [quote] Jedoch werden mir dann nur noch die Namen der Textbausteine in 2 # Zeichen ausgegeben. Und wie kann ich es erreichen das ich den Wert meines Plugins dort hin bekomme? Wenn ich mittendrin was rein schreiben will, geht das nicht mit den Block ersetzen mal so einfach, bin grad recht ratlos. [/quote] Das habe ich auch gerade festgestellt, mit Überschreiben des ganzen Blockes habe ich es auch nicht hinbekommen, dafür kannst du doch einfach deinen Text an einen anderen Block wie anhängen, wie z. B. {block name='frontend\_checkout\_cart\_footer\_total\_sum' append} Das ganze muss natürlich noch optisch angepasst werden. Den Wert aus dem Plugin lässt sich folgendermaßen in die TPL bringen: Bootstrap.php $view-\>assign('sMeinWarenkorbtext', 'unter der Totalsumme'); cartfooter.tpl {$sMeinWarenkorbtext} Hier noch der ganze Code: bootstrap.php [code]<?php /**

  • Shopware SwagMeinwarenkorbtext Plugin - Bootstrap

  • @category Shopware

  • @package Shopware\Plugins\SwagMeinwarenkorbtext

  • @copyright Copyright © 2012, shopware AG (http://www.shopware.de)
    /
    class Shopware_Plugins_Frontend_SwagMeinwarenkorbtext_Bootstrap extends Shopware_Components_Plugin_Bootstrap
    {
    /
    *

    • Get (nice) name for plugin manager list
    • @return string
      */
      public function getLabel()
      {
      return ‚Mein Warenkorbtext‘;
      }

    /**

    • Standard plugin install method to register all required components.
    • @throws \Exception
    • @return bool
      */
      public function install()
      {
      $this->subscribeEvents(); return true; } /** * @return bool */ public function uninstall() { return true; } /** * Registers all necessary events and hooks. */ private function subscribeEvents() { // Add path to frontend-controller $this->subscribeEvent( ‚Enlight_Controller_Action_PreDispatch_Frontend_Checkout‘, ‚onPreDispatchCheckout‘ ); $this->subscribeEvent( ‚Enlight_Controller_Action_PostDispatch_Frontend_Checkout‘, ‚onPostDispatchCheckout‘ ); } /** * Returns the path to the frontend controller. * * @return string */ public function onPreDispatchCheckout() { $this->registerCustomModels(); $this->Application()->Snippets()->addConfigDir( $this->Path() . ‚Snippets/‘ ); $this->Application()->Template()->addTemplateDir( $this->Path() . ‚Views/‘ ); return $this->Path(). ‚Controllers/Frontend/swagMeinWarenkorbtext.php‘; } /** * @param Enlight_Event_EventArgs $args */ public function onPostDispatchCheckout(Enlight_Event_EventArgs $args) { /** @var $subject Enlight_Controller_Action */ $subject = $args->getSubject(); $request = $subject->Request(); $response = $subject->Response(); $view = $subject->View(); if (!$request->isDispatched() || $response->isException()) { return; } if ($request->getModuleName() !== ‚frontend‘) { return; } $view->addTemplateDir($this->Path() . ‚Views/‘); $view->assign(‚sMeinWarenkorbtext‘, ‚unter der Totalsumme‘); $view->extendsTemplate(‚frontend/swagMeinWarenkorbtext/cartfooter.tpl‘); } } [/code] Views\frontend\swagMeinWarenkorbtext\cartfooter.tpl [code] {block name=‚frontend_checkout_cart_footer_total_sum‘ append}

{$sMeinWarenkorbtext}

{/block} [/code]