Warenkorb gesamtanzahl ausgeben

Hallo, momentan wird im Warenkorb obren rechts die Anzahl der im Warenkorb befindlichen Artikel ausgegeben. Als Beispiel haben wir: 2x Produkt A 1x Produkt B im Warenkorb so steht oben aktuell 2 Artikel. Ich würde es jedochgerne so haben das die Anzahl der Artikel auch berücksichtigt wird, so dass dort 3 Artikel ausgegeben wird, da ja insgesamt 2xProduktA + 1xProduktB im Korb liegen. Hat jemand einen Tip wie ich dies ausgeben lassen kann.

hi sowas würde für den kunden irrelevant sein den der kunde kann sich ja auch noch die einzelnen positionen anzeigen lassen ohne ins warenkorb zu klicken müssen der sinn von der ganze sache ist die, dass der kunde weiß wieviele positionen er in sein warenkorb schon hat lg manu

Hallo, danke für deine Antwort. Wäre es jedoch trotzdem machbar? Ich kenne einige große Shops, die es so ausgeben wie ich beschrieben habe. Daher wäre ich über Infos dankbar. Gruß Florian

hi machbar ist es bestimmt nur ich weis nicht wo sich diese datei befindet lg manu

Hi pixelecho, ich habe mir das gerade mal angeschaut - die Darstellung kannst Du recht einfach mit einem Plugin anpassen. Musst nur ein Hook auf die Klasse sBasket und die Methode sCountBasket() legen und dort summierst Du einfach das Feld quantity aus der Tabelle s_order_basket auf und gibst das Ergebnis zurück. Kannst Du dir im Orignial ja mal ansehen (engine/core/class/sBasket.php - Zeile 816). Hinweis: Tu dir nur den Gefallen und ändere auf keinen Fall was direkt in der sBasket Datei. Die wird beim nächsten Update überschrieben :slight_smile: Ich hoffe ich konnte dir helfen, Jens Schwehn

1 Like

Danke für den gedankenanstoß. Leider wird mein Plugin nicht ausgeführt. Ich habe scheinbar irgendetwas übersehen: public function install() { $hook = $this-\>createHook( 'sBasket', 'sCountBasket', 'BasketShowAllCount', Enlight\_Hook\_HookHandler::TypeAfter, 0 ); $this-\>subscribeHook($hook); return true; } static function BasketShowAllCount(Enlight\_Hook\_HookArgs $args) { var\_dump("TEST"); // Test wird nicht ausgegeben $tmpcount = $args-\>getReturn(); $getArticles = $args-\>getSubject()-\>sSYSTEM-\>sDB\_CONNECTION-\>GetAll("SELECT quantity FROM s\_order\_basket WHERE sessionID=? AND modus=0 ",array($this-\>sSYSTEM-\>sSESSION\_ID)); $countall=0; foreach ($getArticles as $k=\>$v) $countall+= $v; $args-\>setReturn($countall); } Installiert und aktiviert ist das Plugin. Habt ihr eine Idee was ich falsch mache?

Hallo pixelecho, welche Shopware-Version hast du? 3.5.4? Schau mal in deiner Datenbank unter s_core_subscribes, ob der Hook überhaupt korrekt angelegt wurde. Gruß, Patrick :shopware:

1 Like

Hallo, also dem Anschein nach wurde er angelegt. 76 sBasket::sCountBasket 3 Shopware_Plugins_Frontend_baskedHook_Bootstrap::Ba… 59 0 Die eingesetzte Version ist die 3.5.4.

Dann handelt es sich vermutlich um einen alt bekannten Bug, der in der 3.5.5 behoben sein dürfte. Öffne bitte einmal engine/Enlight/Enlight/Hook/ProxyFactory.php und schick mir den Inhalt der Funktion getProxy. Dort wird zu 90% das Problem liegen. Gruß, Patrick :shopware:

1 Like

Lösche mal die sBASKETProxy.php in /engine/Shopware/Proxies Diese wird automatisch wieder erzeugt. Dann noch mal versuchen.

1 Like

Ich habe die sBasket.proxy gelöscht und sie wurde neu erzeugt. Nun läuft mein Plugin ohne Probleme :wink: Danke für eure Hilfe. Anbei noch meine getProxy Funktion was ist hier falsch? public function getProxy($class) { $proxyFile = $this-\>getProxyFileName($class); $proxy = $this-\>getProxyClassName($class); if(!is\_readable($proxyFile)) { if(!is\_writable($this-\>proxyDir)) { return $class; } $content = $this-\>generateProxyClass($class); $this-\>writeProxyClass($proxyFile, $content); } else { $hooks = array\_keys(Enlight::Instance()-\>Hooks()-\>getHooks($class)); $methodes = call\_user\_func($proxy.'::getHookMethods'); $diff = array\_diff($hooks, $methodes); if(!empty($diff)) { @unlink($file); } } return $proxy; }

Ottscho hatte schon den richtigen Tipp, allerdings wird der Fehler bei jedem weiteren Plugin, in dem du Hooks verwendest, wieder auftauchen. Daher musst du den Teil umändern: if(!empty($diff)) { @unlink($file); } nach: if(!empty($diff)) { @unlink($proxyFile); } Danach dürfte jeder Hook problemlos laufen.

Verwende v4.1.4 und möchte auch die Gesamtzahl ausgeben.Das Plugin hab ich bereits installiert… allerdings stimmt bei mir die Artikelzahl nicht… irgendwas was muss da noch angepasst werden!? Danke.