Jump to content

PS 1.6 Packungsinhalt bei Produktbündel enthält immer nur 1 Produkt


Recommended Posts

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

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 by klasjulius (see edit history)
Link to comment
Share on other sites

  • 2 months later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...