Quantcast
Channel: Programmierung - Shopware Community Forum
Viewing all 2871 articles
Browse latest View live

jQuery Plugin Dev Passiv Events

$
0
0

Hallo, 

ich entwickle derzeit einige unterschiedliche jQuery Plugins für Shopware und bin auf ein Performance Problem gestoßen.
Das Problem tritt bei gewissen jQuery Events auf wie z.B. touchstart, touchmove bei Scroll Elementen.

Der Browser gibt mir folgende Meldung zurück: 

[Violation] Added non-passive event listener to a scroll-blocking 'touchstart' event. Consider marking event handler as 'passive' to make the page more responsive.

Es gibt neue EventListiner Funktionen, mehr dazu hier und hier. Hier noch Verweis zu Chrome -> hier klicken.

"There is no a new options object that can be passed to the addEventListener. The warning is saying the passive event listeners on the page should be passed the {passive: true} option to improve scroll performance."

Nativ JS Lösung: 

document.addEventListener('touchstart', handler, {passive: true});

Gibt auch eine Möglichkeit das bei bei me._on(); wie oben zu lösen?

Vielen Dank im voraus.

Mit freundlichen Grüßen, 
Brian


Verfügbaren Variablen sehen bei den Dokumenten Template Dateien

$
0
0

Sehr geehrte Damen und Herren,

wie kann ich die verfügbaren Variablen sehen bei den Dokumenten Tempalte Dateien wie die Rechnung ?

{debug} funktioniert ja nicht, weil ich sehe am Ende ja nur eine .pdf Datei.

MfG,

Fensterscheibe

ElasticSearch Fehler beim Mapping von calculatedPrices

$
0
0

Moin

ich bin gerade dabei ElasticSearch zu implementieren, stoße aber auf ein Problem und weiß noch nicht ganz wie/wo ich am Besten ansetzen muss.
ES ist korrekt in der config.php eingetragen und das "populating" von ES wird auch durch das console Command ohne Fehler abgeschlossen.

Wenn ich allerdings in das ES log schaue, dann stoße ich auf folgende Fehler (Suche im Shop funktioniert derweil auch nicht):

 

[2017-04-05 13:02:27,380][DEBUG][action.bulk              ] [Mustermann.de] [sw_shop1_20170405130226][4] failed to execute bulk item (index) index {[sw_shop1_20170405130226][product][1049], source[{"formattedCreatedAt":"-0001-11-30","formattedReleaseDate":null,"properties":[{"id":9,"name":"26 - 40 %","media":null,"position":2,"attributes":[]},{"id":44,"name":"Griechenland","media":null,"position":11,"attributes":[]},{"id":5,"name":"Literflaschen","media":null,"position":2,"attributes":[]}],"categoryIds":["367","3","64"],"calculatedPrices":{"EK_1":{"calculatedPrice":14.51,"calculatedReferencePrice":14.51,"calculatedPseudoPrice":0,"rule":{"id":491562,"price":12.193277310924,"from":1,"to":null,"pseudoPrice":0,"customerGroup":{"id":1,"key":"EK","name":"Shopkunden","displayGrossPrices":true,"insertedGrossPrices":true,"useDiscount":false,"percentageDiscount":0,"minimumOrderValue":0,"surcharge":0,"attributes":[]},"unit":{"id":1,"name":"Liter","unit":"l","purchaseUnit":1,"referenceUnit":1,"packUnit":"Fl.","minPurchase":1,"maxPurchase":null,"purchaseStep":1,"attributes":[]},"attributes":[]},"attributes":[]},"H_1":{"calculatedPrice":12.193,"calculatedReferencePrice":12.193,"calculatedPseudoPrice":0,"rule":{"id":491562,"price":12.193277310924,"from":1,"to":null,"pseudoPrice":0,"customerGroup":{"id":1,"key":"EK","name":"Shopkunden","displayGrossPrices":true,"insertedGrossPrices":true,"useDiscount":false,"percentageDiscount":0,"minimumOrderValue":0,"surcharge":0,"attributes":[]},"unit":{"id":1,"name":"Liter","unit":"l","purchaseUnit":1,"referenceUnit":1,"packUnit":"Fl.","minPurchase":1,"maxPurchase":null,"purchaseStep":1,"attributes":[]},"attributes":[]},"attributes":[]}},"name":"Ouzo 12 - 1 Liter 38% vol","stock":2147483643,"shortDescription":"Mustermann♥\u00ae &#10150 Ouzo 12 1 Liter>","releaseDate":null,"shippingTime":"1","shippingFree":false,"closeouts":false,"hasProperties":true,"createdAt":null,"keywords":"Ouzo 12 1 LiterOuzo Shop, 05201003111006, 5201003111006","metaTitle":"Ouzo 12 1 Liter kaufen ab 14,51 EUR im Ouzo Shop","allowsNotification":false,"additional":"","minStock":0,"height":0,"width":0,"length":0,"weight":0,"ean":"5201003111006","highlight":false,"sales":901,"hasConfigurator":false,"hasEsd":false,"isPriceGroupActive":false,"blockedCustomerGroupIds":[],"manufacturerNumber":"","template":"","cheapestPrice":null,"cheapestPriceRule":null,"cheapestUnitPrice":null,"priceRules":null,"prices":null,"unit":{"id":1,"name":"Liter","unit":"l","purchaseUnit":1,"referenceUnit":1,"packUnit":"Fl.","minPurchase":1,"maxPurchase":null,"purchaseStep":1,"attributes":[]},"tax":{"id":1,"name":"19%","tax":19,"attributes":[]},"manufacturer":{"id":10,"name":"Ouzo","description":"<p align=\"justify\">Test","metaTitle":"Ouzo 12: Anisspirituosen aus Griechenland","metaDescription":"","metaKeywords":"","link":"","coverFile":"https:\/\/www.Mustermann.de\/media\/image\/84\/46\/32\/ouzo12_logo.png","attributes":[]},"cover":null,"priceGroup":null,"states":[],"esd":null,"voteAverage":{"count":4,"average":10,"pointCount":[{"total":"4","points":"5"}],"attributes":[]},"hasAvailableVariant":true,"customerPriceCount":"1","fallbackPriceCount":"1","mainVariantId":25,"isMainVariant":true,"categories":[],"id":25,"variantId":25,"number":"1049","attributes":{"core":{"id":"25","articleID":"25","articledetailsID":"25","attr1":"<h2 class=\"spirituosenpreish2\">Ihr Ouzo 12 Preis<\/h2>","attr2":null,"attr3":null,"attr4":null,"attr5":"Ouzo 12","attr6":"38","attr7":"1","attr8":"Griechenland","attr9":"hat einen intensiven Geschmack","attr10":"Die Nummer 12 steht f\u00fcr das Fass aus dem der erste Ouzo kam","attr11":null,"attr12":null,"attr13":null,"attr14":null,"attr15":"","attr16":"","attr17":null,"attr18":"","attr19":"","attr20":null,"bepado_product_description":null,"deposit":null}}}]}

java.lang.IllegalArgumentException: mapper [calculatedPrices.EK_1.rule.unit.purchaseUnit] of different type, current_type [double], merged_type [long]


 

Das Mapping von calculatedPrices.EK_1.* scheint dabei generell Probleme zu verursachen.
Bei einem anderen Artikel erhalten wir z.B.:

 

java.lang.IllegalArgumentException: mapper [calculatedPrices.EK_1.calculatedPseudoPrice] of different type, current_type [double], merged_type [long]

 

Eingesetzt wird: Shopware CE 5.2.21, ES 2.4.4 und Intelligente Suche 2.2.1.
ES 5.3 hatte ich auch schon ausprobiert, funktioniert allerdings ebenso wenig. Es ändert sich lediglich die Exception zu "of different type, current_type [float], merged_type [long]".

Wäre es auch möglich gewisse Sachen (wie PseudoPrice und purchaseUnit) bei der Populierung/Synchronisierung der ES-Suche auszuschließen?

Über Hinweise wäre ich sehr dankbar!

[gelöst] Fehler mit Elastic Search // im Frontend sind weniger Artikel sichtbar als im Backend fr...

$
0
0

Wir haben das Problem das 48 Artikel im Backend freigegeben wurden für eine Kategorie. Im Frontend kommen aber nur 38 Artikel in der Kategorie an.

Neu indexieren etc. haben wir alles schon probiert. Support von Shopware erhält man leider nur ab aktuellem Enterprise Kundenstatus - hier haben wir vergebens schon nachgefragt.

Das Verhalten viel auch erst auf als neue Artikel angelegt wurden und diese einfach nicht sichtbar waren im Frontend. Auch ältere Artikel sind nicht zu sehen, das konnten wir nun auch schon rausfinden. Warum das allerdings so ist, ist absolut unklar. Da nirgends ein Fehler erscheint.

Hat jemand dies bei sich schon feststellen können und ggf. das Problem lösen können?!


Im Einsatz ist aktuell:
- Shopware 5.2.21PE+
- Elastic Search 2.4.4


VG

Spezielle Emotion Header

$
0
0

Hallo ich möchte in einer Einkaufswelt Landingpage direkt im html head ein Javascriptcode hinterlegen zwecks AB test. Wie bekomme ich das hin ? Kann mich da wer unterstützen ?

 

Im Backend eingeloggt oder nicht?

$
0
0

Schreibe aktuell an einem zusätzlichen Statistik Plugin. Der Zugang soll aber nur ersichtlich, wenn man auch im Backend eingeloggt ist.

Wie kann ich das im Plugin Controller sauber abfragen?

secureUninstall im neuen Plugin System

$
0
0

Hallo zusammen,

gibt es die Methode secureUninstall() im neuen (SW > 5.2) Plugin System gar nicht mehr? Oder übersehe ich gerade etwas? Ich fand die Idee dahinter eigtl. recht sinnsoll.

LG Arne

Git und Shopware

$
0
0

Hallo,

ich hab da mal ne grundsätzliche Frage. Wie macht ihr das mit Git. Nur das Theme Verzeichnis oder komplett.

Ich hab einen installation lokal und eine live.

Wenn ich jetzt ein neues plugin benötige, installier ich das lokal, teste es und schieb es dann hoch. Jetzt hab ich die aktuellen Dateien auf meinem Server aber irgendwelche Datenbankänderungen werden ja nicht übermittelt, also muß ich auf dem Produktionssystem auch nochmal das Plugin installieren.

Das kann ja nicht ganz richtig sein. Wie macht man so was richtig?

Danke vorab.


Herstellernummer statt Artikelnummer über REST API

$
0
0

Hallo zusammen,

 

ich habe von Shopware im Moment noch nicht so viel Ahnung und brauche Hilfe bei folgendem Problem.

Wir haben Shopware mit Amicron über die REST API verknüpft um die Bestellungen zu importieren. Was soweit funktioniert. Allerdings haben wir in unserem Artikelnummern Leerstellen, was Shopware ja nicht gefällt.

In der Herstellernummer bereiten sie aber keine Probleme. Allerdings wird die Herstellernummer beim Export nicht mit ausgegeben. Ich bräuchte eigentlich nichts weiter, als die Herstellernummer beim Export, damit ich diese in der Importdefinition von Amicron unserer Artikelnummer zuweisen kann.

Wo muss ich ansetzen?

VG

Christian
 

Wie kann man per Smarty alle Bilder der unterschiedlichen Varianten eines Artikels laden?

$
0
0

Hallo Shopware Community,

ich möchte gerne zur Veranschaulichung bei meinen Artikel alle Bilder der Varianten zur Verfügung haben.
Ich weiß schon wie ich das Bild der aktuellen Variante abrufen kann, wird ja oft genug als Beispiel genommen :), aber konnte noch nicht die korrekte Smarty Variable für die Varianten finden

 

<img srcset="{$sArticle.image.thumbnails[0].sourceSet}

 

Ich wäre dankbar wenn mir wer da weiterhelfen könnte.

Danke

 

Max

Eigene Flash-Message anzeigen

$
0
0

Nach dem sich der Benutzer authentifiziert hat entferne ich unter bestimmten Bedingungen Artikel aus dem Warenkorb und ich würde nun gerne den Benutzer darüber informieren das sich

a.) sein Warenkorb geändert hat und
b.) warum er sich geändert hat.

Wenn ich das Verhalten der Flash-Messages korrekt verstanden habe, publiziert Shopware einfach eine Variable (sBasketInfo) im View und die Anzeige wird über das Templating geregelt.

Nun habe ich mich auf das Event Shopware_Modules_Admin_Login_Successful registriert, dort aber keinen Zugriff auf eine Controller Instanz. Gibt es einen anderen Weg oder habe ich etwas übersehen?

// partially pseudocode!
public function onLoginSuccessful(Enlight_Event_EventArgs $args)
{
    $userID = $args->get('user')['id']; 

    if (conditon) {
        Shopware()->Modules()->Basket()->sDeleteArticle($this->getBasketID($articleID));

        // notify user here!

    }
}

 

Backend Bestellungen Plugin korrekt erweitern

$
0
0

Hallo Zusammen, 

wir nutzen bei uns im Shop ziemlich stark das Backend-Bestellungs Plugin von Shopware.

https://github.com/shopwareLabs/SwagBackendOrder

Da es doch die ein oder andere Optimierungsmöglichkeit besitzt, habe ich dort einige Änderungen vorgenommen. Natürlich sind die aktuell nicht updatesicher. 

Hätte mir ggf. jemand ein Tipp, wie man meine Änderungen korrekt und updatesicher in einem eigenen Plugin bereitstellen könnte? Habe es ansatzweise schon einmal versucht in dem ich das Bestellgrid erweitert hatte. Dort ging es aber nur um die Erweiterung der Anzeige. Im Backendbestellungsplugin hatte ich doch ein paar Änderungen mehr vorgenommen. 

Falls jemand Lust und Zeit hat, dort einmal drüber zu schauen, würde ich mich sehr freuen. Mir würden hier ein paar Best Practices ausreichend sein. 

https://github.com/Kevinschmid86/SwagBackendOrderKS/commits/master

Vielen Dank euch vorab. 

Liebe Grüße

Kevin

Kategorie Page als Startseite

$
0
0

Hallo Zusammen,

gibt es eine Möglichkeit eine Kategorie als Startseite(Hauptkategorie) auszuwählen? Es sollte dann trotzdem nicht http://xxx.de/kategorie sondern http://xxx.de als Startseite angezeigt werden.

Vielen Dank im Voraus.

Magnalister Hooks Variablen anzeigen

$
0
0

Hallo,

ich habe gerade erfolgreich das Hello World Hooks erstellen von der Magnalister Doku http://api.magnalister.com/update/doc_hooks_v3.php angeschaut, es klappt auch wunderbar, allerdings steht bei der Dokumentation, dass man sich die Variablen anzeigen lassen , welche in der Umgebung definiert sind mit : 

MLMessage::gi()->addInfo(basename(__FILE__), get_defined_vars()); 

oder

MLMessage::gi()->addInfo(__FILE__, get_defined_vars());.
 

Bei beidem passiert nichts, der Artikelupload bleibt einfach stecken und ich sehe nirgends die Variablen.

Mache ich da irgendetwas falsch bzw. muss ich etwas machen, damit ich die Variablen sehe ?

Ein neues Fenster öffnet sich nicht , ich weiß nicht, wo man solche Nachrichten sehen kann, welche Magnalister einen sendet.

In den Einstellungen habe ich bei blDebug ein Haken gemacht, damit dies aktiviert ist.

MfG,

Fensterscheibe

Dynamisches Selectfeld in der Resources/config.xml

$
0
0

Guten Tag,

vielen Dank fürs Lesen und Antworten...

Zu meinem Problem, ich möchte gerne in meiner Resources/config.xml ein Select-Feld angeben, 
welches die drei Thumbnail Auflösungen aus der Medienverwaltung nachlädt.

Leider funktionieren Handler nur bei Buttons nicht aber bei Select Feldern.
Sonst könnte ich einen kleinen Controller schreiben, welcher die Optionen einfach nachlädt.

<?xml version="1.0" encoding="utf-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../../../../engine/Shopware/Components/Plugin/schema/config.xsd">

    <elements>

        <element type="select" required="true">
            <name>thumbnail_resolution</name>
            <label lang="de">Thumbnail Auflösung</label>
            <label lang="en">Thumbnail resolution</label>
            <store></store>
            <options>
                <handler>
                    <![CDATA[
                    alert("test");
                    ]]>
                </handler>
            </options>
        </element>

    </elements>

</config>

 

Hat jemand eine Idee?

Grüße Lukaschel


Digital Publishing Verlinkt auf Falsche Seiten

$
0
0

Hallo, 

wir haben Digital Publishing auf der Einkaufswelt, wir haben alles Ordentlich gemacht, jedoch verlinkt er ganz falsche Seiten.

Beispiel: Hier das Bild und zum Testen unseren Link:

https://sir-rowland.de/

image

Was kann dafür Ursache sein?

Shopware Plugin verbinden mit Datenbank

$
0
0

Hallo Community,

Ich hab ein einfaches Problem, aber anscheinend gibt es dazu noch keinen Forenbeitrag.

Ich möchte einfach nur innerhalb von einem Shopwareplugin mit der Datenbank connecten. Ich hab die normale Syntax von PHP und SQLi benutzt aber irgendwie funktioniert das nicht so wirklich.

 

Hier mein Quellcode:

<?php


class Shopware_Plugins_Frontend_tnExternalVouchers_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{

    public function install()
    {
        $this->subscribeEvent(
                    'Enlight_Controller_Action_PostDispatchSecure_Frontend',
                    'onFrontendPostDispatch',
                    'connectSQL'

            );

        $this->createConfig();

        return true;
    }


    private function createConfig()
    {
        //Configuration in the Plugin Manager goes here

        $form = $this->Form();

        $form->setElement(
            'text',
            'host_cf',
            array(
                'label' => 'Host',
                'value' => 'localhost',
                'description' => 'Type your Host URL in here',
                'required' => true
            )
        );
        $form->setElement(
            'text',
            'user_cf',
            array(
                'label' => 'Username',
                'description' => 'Type your Username in here',
                'required' => true
            )
        );
        $form->setElement(
            'text',
            'password_cf',
            array(
                'label' => 'Password',
                'description' => 'Type your Password in here',
                'required' => true
            )
        );
        $form->setElement(
            'text',
            'db_cf',
            array(
                'label' => 'DB Name',
                'description' => 'Type your Database Name in here',
                'required' => true
            )
        );
    }

    public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
    {
        /** @var \Enlight_Controller_Action $controller */
        $controller = $args->get('subject');
        $view = $controller->View();

        $view->addTemplateDir(
                    __DIR__ . '/Views'
            );

    }

    public function connectSQL()
    {
				$con = mysqli_connect($host_cf, $user_cf, $password_cf, $db_cf);
				if (mysqli_connect_errno())
			  {
			  echo "Failed to connect to Database";
			} else {
				echo "Success";
			}
    }
}

 

Die Problematik ist hauptsächlich, dass ich nicht ganz verstehe, wie ich was abrufe. Ich möchte die Werte aus den textfeldern in der config benutzen als variablen für die mysqli_connect.

Außerdem verstehe ich trotz mehrfachen Lesen der Documentation nicht wie ich mit der onFrontendDispatch umgehen soll und wofür ich diese benötige.

 

Wäre toll, wenn mir da jemand einen kurzen Einblick geben könnte,

Grüße,

Max K.

Umleitung auf account / register

$
0
0

Hey,

ich bin gerade dabei ein kleines Plugin zu schreiben, was in den saveRegister Prozess eingreift.

Ich habe einen preDispatch, welcher die Eingabe in dem Formular prüft und einen postDispatcher, der die
Shopware eigenen Fehlermeldung ggf. erweitert.

Solange ein Shopware eigener Fehler erzeugt wird, wird auch meine Fehlermeldung ausgegeben.
Wenn aber kein eigener Fehler existiert, so wird meine Meldung einfach übersprungen und der Benutzer angelegt.

Ich denke, dass ich nur ein forward einbauen muss. Leider weiss ich nicht welche/n action / controller ich ansprechen muss.

   public function onFrontendPreDispatch(Enlight_Event_EventArgs $args)
   {
      $config  = $this->Config();
      $controller = $args->get('subject');
      $view = $controller->View();


      if($controller->Request()->isPost()) {
        $birthday = $controller->Request()->getPost('register')['personal']['birthday'];

        if($this->validateAge($birthday['day'].".".$birthday['month'].".".$birthday['year'], $config->get('minAge')) != 1) {
          $errors['personal']['birthdate'] = "Du musst mindestens 18 Jahre als sein, um bestellen zu können!";
          $view->assign('error_birthdate', $errors);

          //$controller->forward('index', 'account');
        }
      }
    }
    public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
    {
      $controller = $args->get('subject');
      $view = $controller->View();

      if($view->getAssign('error_birthdate')) {
        $errors = $view->getAssign('errors');

        $new_errors = array_merge_recursive($errors, $view->getAssign('error_birthdate'));
        $view->assign('errors', $new_errors);

      }
    }

Jetzt gibt es noch eine Kleinigkeit: Es gibt ja checkout/confirm und account als url. Spreche ich damit automatisch beide an?
Bzw wohin muss der forwarder zeigen?

Auto Login für einen User

$
0
0

Hallo,

für einen einzigen Benutzer in unserem Shop haben wir die Anforderung erhalten, dass er durch den Aufruf eines zu definierenden URL Pfades (z.B. http://unser-shop.com/autologinpfad) und unter Angabe eines speziellen Request Parameters automatisch eingeloggt werden soll. Das Passwort des Benutzers soll dabei aber nicht mitgegeben werden müssen!

Wir planen hierfür ein neues Plugin zu schreiben, wobei dessen Controller Action auf den Pfad (also '/autologinpfad') reagiert. Nun meine Frage: Welche Möglichkeiten haben wir, um nach Prüfung aller Erfordernisse den Benutzer im Controller einzuloggen und ihn sodann auf dessen Account Seite zu redirecten?

Möglich wäre z.B. ein Redirect auf die loginAction des Account Controllers, jedoch müssen wir dafür das Passwort irgendwo hinterlegen.

Danke für Eure Hinweise!

Backend Änderung der Bestellung abfangen

$
0
0

Hallo zusammen,

mit
public static function getSubscribedEvents()
    {
        return array(
            'Shopware_Controllers_Backend_Order::saveAction' => 'RequestAusDatenbank',
            );
    }

bekomme ich das Speichern nach einer Bestellungsbearbeitung abgefangen und mit z.b.:

$request = $args->getSubject()->Request();
$parameter = $request->getParams();
$bestellnummer = $parameter['number'];

kann ich die ordernumber aus der Datenbank abfragen und damit weiter operieren.
Allerdings muss ich eine bestimmte Aktion nur dann durchführen wenn der Zahlungssatus vom Wert x in 12 (=vollständig bezahlt) geändert wird. Wie kann man so präzise einen mysql request erfassen und dann entsprechende Aktionen ausführen? Es soll nichts geändert werden an den Bestelldaten o.ä. - im Backend und an der Tabelle der Datenbank bleibt alles wie zuvor.
Wäre toll wenn da jemand Rat wüsste.

Beste Grüße
Olli

Viewing all 2871 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>