Shopware
- Details
Wird versucht per Javascript oder jQuery auf Elemente der Einkaufswelten zuzugreifen, ist dies nicht ganz einfach da die Einkaufswelten per Ajax nachgeladen werden.
So klappts:
Weiterlesen: Mit js/jquery auf Elemente der Einkaufswelten zugreifen
- Details
In Shopware eine sogenante Modal-Box anlegen ist nicht schwer. In diesem Beispiel wird ein p Tag verwendet. Es können natürlich auch andere HTML-Elemente verwendet werden. Die Höhe und Breiteangaben mit data-width="800" data-height="440" sind optional.
<p class="myModalClass" data-content="" data-modalbox="true" data-targetSelector="a" data-width="800" data-height="440" data-mode="ajax"> <a title="Express-Lieferung" href="/{url controller=custom sCustom=193}" style="text-decoration:underline">Express-Lieferung erwünscht?</a> </p>
Die Nummer 193 in dem Beispiel, ist die ID der Shopseite, deren Inhalt in dem Popup angezeigt wird.
Manchmal sieht man auch so etwas:
<p class="product--tax" data-content="" data-modalbox="true" data-targetSelector="a" data-mode="ajax">{s name="DetailDataPriceInfo"}{/s}
In diesem Fall steht der Link in dem Textbaustein mit dem Namen DetailDataPriceInfo.
Oder nur mit a
<a title="Expertenservice" href="/{url controller=custom sCustom=199}" style="text-decoration:underline" data-content="{url controller="custom" sCustom="199" ordernumber="123456" foo="bar" fullPath}" data-modalbox="true" data-mode="ajax" data-height="666" data-width="888" onmouseover="click();">Expertenservice</a>
- Details
In dem Ordner
themes/Frontend/Responsive/frontend/_public/src/js/ befinden sich einige jQuery Plugins. Hier ein Beispiel zum Überschreiben:
themes/Frontend/Responsive/frontend/_public/src/js/jquery.captcha.js
Anfang Originalcode (ohne Kommentare):
(function($, window) { 'use strict'; $.plugin('swCaptcha', { defaults: { autoLoad: false, src: '', hasError: false }, .....
Dem Template in der
themes/Frontend/FVRespo/Theme.php
mitteilen, dass auf die Datei in unserem Template zugegriffen wird
protected $javascript = array( 'src/js/jquery.captcha.js', .....
Und die Datei in das eigene Template kopieren
themes/Frontend/EIGENESTEMPLATE/frontend/_public/src/js/jquery.captcha.js
Dann noch in der Datei angeben, dass es sich um ein Override handeld. Kompletter Inhalt der Datei (ohne Kommentare):
$.overridePlugin('swCaptcha', { defaults: { autoLoad: true, src: '', hasError: false } });
Natürlich können außer wie hier in diesem Beispiel außer Defaults auch noch andere Funktionen, mit Komma getrennt hinzugefügt werden
- Details
Will man z.B. bei dem Plugin SwagFuzzy (Intelligente Suche) die Ergebnisseite fuzzy_result.tpl in seinem eigenen Plugin anpassen geht das so.
Die Originaldatei liegt in:
engine/Shopware/Plugins/Community/Backend/SwagFuzzy/Views/frontend/swag_fuzzy/search/fuzzy_result.tpl
Irgendwo auf den Seiten von Shopware fand ich den Hinweis, dass extendsTemplate nicht mehr verwendet wird. Ich habe es ohne extendsTemplate mit x verschiedenen Pfaden ausprobiert... Bei mir (SW 5.2.26) funktionierte das nicht.
In meiner "Bootstrap" Datei verwende ich den Controller
'Enlight_Controller_Action_PostDispatchSecure_Frontend_Search' => ['onPostDispatchSecureSearch'],
In meiner Methode onPostDispatchSecureSearch (Ja die darf auch anders benannt werden), gebe ich so
$view->addTemplateDir($this->getPath() . '/Resources/Views/');
den Template View Pfad an.
Und nun mit
$view->extendsTemplate('frontend/swag_fuzzy/search/fuzzy_result_fvhg.tpl'); meine Templatedatei an. ACHTUNG, die Templatedatei darf nicht wie die Originaldatei heißen.
In meiner Templatedatei
custom/plugins/fvhgFrontendExtension/Resources/Views/frontend/swag_fuzzy/search/fuzzy_result_fvhg.tpl
steht dann nur noch ganz oben die Erweiterung für die Originaltemplatedatei.
{extends file='parent:frontend/swag_fuzzy/search/fuzzy_result.tpl'}
Jetzt können die Blöcke mit append oder prepend erweitert oder ganz geändert werden.