klasjulius Posted April 18, 2015 Share Posted April 18, 2015 Hallo zusammen, wenn ich ein Bündelprodukt erstelle z.B. aus 3 Produkten wird in der Produktansicht im Shop unter Packungsinhalt immer nur 1 Produkt angezeigt, egal aus wie vielen Produkten das Bündel besteht. in der product.tpl und der product-list.tpl hat die Variable $packItems|@count auch immer nur den Wert 1, so das in der foreach Schleife nur 1 Produkt gelistet wird. kennt jemand das Problem? hat jemand eine Lösung oder weiss in welcher Datei der Wert ermittelt wird? wäre schön von euch zu hören bis dann klaus Link to comment Share on other sites More sharing options...
klasjulius Posted April 18, 2015 Author Share Posted April 18, 2015 (edited) Ich hab jetzt selbst ein wenig getestet und in der /classes/pack.php die Function public static function getPacksTable($id_product, $id_lang, $full = false, $limit = null) wie folgt geändert: public static function getPacksTable($id_product, $id_lang, $full = false, $limit = null) { if (!Pack::isFeatureActive()) return array(); $sql2 = 'SELECT GROUP_CONCAT(a.`id_product_item`) FROM `'._DB_PREFIX_ . 'pack` a WHERE a.`id_product_pack` = ' . (int)$id_product; $packs = Db::getInstance()->getValue($sql2); if (!(int)$packs) return array(); $sql = ' SELECT p.*, product_shop.*, pl.*, MAX(image_shop.`id_image`) id_image, il.`legend` FROM `'._DB_PREFIX_.'product` p NATURAL LEFT JOIN `'._DB_PREFIX_.'product_lang` pl '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').' LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') WHERE pl.`id_lang` = '.(int)$id_lang.' '.Shop::addSqlRestrictionOnLang('pl').' AND p.`id_product` IN ('.$packs.') GROUP BY product_shop.id_product'; if ($limit) { $sql .= ' LIMIT '.(int)$limit; } $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); if (!$full) return $result; $array_result = array(); foreach ($result as $row) { if (!Pack::isPacked($row['id_product'])) $array_result[] = Product::getProductProperties($id_lang, $row); } return $array_result; } und in der /controllers/front/ProductController.php die in der function initContent() folgende Zeile: $pack_items = Pack::isPack($this->product->id) ? Pack::getItemTable($this->product->id, $this->context->language->id, true) : array(); durch $pack_items = Pack::getItemTable($this->product->id, $this->context->language->id, true); ersetzt Ich weiss, das Änderungen im Core nicht gut sind, aber bis eine andere Lösung gefunden ist, funktioniert das für mich. Alle Produkte im Productbündel werden im Packungsinhalt angezeigt. In der pack.php habe ich vor allem die SQL Abfragen abgeändert. Vielleicht ist das ja ein Lösungsansatz für andere. Ich habe noch nicht alles durchgetestet, aber bisher habe ich noch keine negativen Nebeneffekte gefunden. bis dann Klaus Edited April 18, 2015 by klasjulius (see edit history) Link to comment Share on other sites More sharing options...
autosolar Posted June 21, 2015 Share Posted June 21, 2015 hallo Klaus Danke für deinen Lösungsvorschlag. Ich habe dasselbe Problem, dass immer nur ein Produkt im Bündel angezeigt wird: siehe z.B. http://www.autosolar.ch/de/komplettanlagen/39-komplette-solaranlage-100w-mit-batterie-fur-230v.html unter Packungsinhalt. Ich habe deinen Code angepasst, doch leider hat das nicht funktioniert. Meinst du, du kannst mir irgendwie helfen? Ich glaube, wir sind nicht die einzigen, die das Problem haben. Gruss, Till Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now