Post by Weiqunw » Tue Jan 26, 2016 5:10 pm

Naast de product opties: op voorraad en niet op voorraad, maken we bij enkele lastig te verkrijgen producten ook gebruik van de aantallen waarbij het aantal vanzelf 0 wordt.
Indien het aantal op 0 staat, dan moet de toevoegen aan winkelwagen knop verborgen zijn.

Op de product en categorie pagina is het mij met dank aan de if statement dit gelukt.

Product pagina:
<?php if ($quantity < 1) { ?>
Niet op voorraad
<?php } else { ?>
Op voorraad
<?php } ?>

Categorie pagina:
<?php if ($product['quantity'] < 1) { ?>
Niet op voorraad
<?php } else { ?>
Op voorraad
<?php } ?>

Uiteraard met de quantity toevoeging in de controller file.

In de gerelateerde producten op de product pagina, welke op basis is van de 'bestseller' is mij dit nog niet gelukt.
Is er iemand die mij de oplossing kan bieden? Of raad iemand een andere manier aan?

Active Member

Posts

Joined
Wed Jul 10, 2013 3:29 pm
Location - Arnhem, the Netherlands

Post by i2Paq » Tue Jan 26, 2016 9:18 pm

Er zijn, meerdere, Extenties die dit doen.

Al dan niet betaald.

Norman in 't Veldt
Moderator OpenCart Forums

_________________ READ and Search BEFORE POSTING _________________

Our FREE search: Find your answer FAST!.

[How to] BTW + Verzend + betaal setup.


User avatar
Global Moderator

Posts

Joined
Mon Nov 09, 2009 7:00 pm
Location - Winkel - The Netherlands

Post by Weiqunw » Tue Jan 26, 2016 9:25 pm

Ik had inderdaad al meerdere extensies gevonden en geprobeerd, echter ze werken niet zoals ik wil.

Daarnaast vind ik er geen waarbij ik het in de bestsellers / related products juist krijg vandaar de vraag.

Active Member

Posts

Joined
Wed Jul 10, 2013 3:29 pm
Location - Arnhem, the Netherlands

Post by artcore » Tue Jan 26, 2016 10:18 pm

Wat is de foutmelding? Als je de quantity in the product array hebt toegevoegd zou je die moeten kunnen gebruiken in de module tpls.
Een andere oplossing is om van alle producten op een pagina, om het even wat de bron is (module, related product, compare, etc), de product_id te pakken (met javascript) en dan een db query (ajax) te doen voor de quantity van elk. Daarna ook weer via javascript de buttons updaten.
Zo hoef je niet een dozijn controllers en templates aan te passen maar doe je het in 1 enkele functie.
Zo heb ik het gedaan in een extensie van me voor OC1.5 dan ;D

Attn: I no longer provide OpenCart extensions, nor future support - this includes forum posts.
Reason: OpenCart version 3+ ;D

Thanks!


User avatar
Active Member

Posts

Joined
Tue Jul 09, 2013 4:13 am
Location - The Netherlands

Post by Weiqunw » Fri Jan 29, 2016 5:09 pm

Vreemd, ik heb inderdaad de quantity aan de data array in de bestseller.php controller file toegevoegd zoals ook bij de andere controller files.

Als ik enkel <?php echo $product['quantity']; ?> toevoeg in de bestseller file dan krijg ik ook niks.

De meldingen die ik blijf krijgen is het volgende:

PHP Notice: Undefined index: quantity in var://catalog_view_theme_shop_template_module_bestseller_tpl on line 35
PHP Notice: Undefined variable: product in var://catalog_view_theme_shop_template_product_product_tpl on line 306

Hierbij gebruik ik dus het volgende:
<?php if ($product['quantity'] < 1) { ?>
Niet op voorraad
<?php } else { ?>
Op voorraad
<?php } ?>

Zie ik iets over het hoofd?

Active Member

Posts

Joined
Wed Jul 10, 2013 3:29 pm
Location - Arnhem, the Netherlands

Post by artcore » Fri Jan 29, 2016 5:45 pm

De producten worden opgehaald met $results = $this->model_catalog_product->getBestSellerProducts($setting['limit']);
Als je vervolgens kijkt wat deze query ophaalt zie je dat de quantity er niet bij staat.

Je zult dus deze data op een andere manier in de array zien te krijgen ofwel met een eigen methode die alleen de stock van een product ophaalt of met de $product_info = $this->model_catalog_product->getProduct($product_id);
waar de stock wel in staat: $product_info['quantity']

Bijvoorbeeld in de bestseller controller:

Code: Select all

$product_info = $this->model_catalog_product->getProduct($result['product_id']); //dit is nieuw

				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'stock'       => $product_info['quantity'], //als $product['stock'] in de tpl loop
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'rating'      => $rating,
					'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'])
				);

Attn: I no longer provide OpenCart extensions, nor future support - this includes forum posts.
Reason: OpenCart version 3+ ;D

Thanks!


User avatar
Active Member

Posts

Joined
Tue Jul 09, 2013 4:13 am
Location - The Netherlands

Post by Weiqunw » Thu Feb 04, 2016 12:11 am

Bedankt voor je tip, ik ga het proberen!

Active Member

Posts

Joined
Wed Jul 10, 2013 3:29 pm
Location - Arnhem, the Netherlands

Post by tverheijen » Fri Mar 04, 2016 6:24 pm

Zoek eens op Call for Price

http://www.opencart.com/index.php?route ... or%20Price

bijvoorbeeld Call for Price with enabled / disabled Add to Cart button

dan hoef je geen core aan te passen en werkt op iedere module. zo nodig pas je de xml aan...

Active Member

Posts

Joined
Tue Sep 20, 2011 3:19 am
Who is online

Users browsing this forum: No registered users and 31 guests