Share » Forums » Developer » Adding multiple Items to the shop...

Adding multiple Items to the shop basket at once

Adding multiple Items to the shop basket at once

Monday 11 September 2006 3:58:14 pm - 4 replies

Author Message

Piotrek Karaś

Friday 04 May 2007 3:39:10 am

Hello,

Has anyone come up with a solution yet? Is eZ publish capable of adding multiple product combinations (product and its options and amounts) to the basket in just one click? Is there a way without modifying the kernel file?

Example:
We have a t-shirt in 30 different colors. We want to display a larger form so that the client can define all the options for say 10 combinations at once and then click "add to basket".

Maybe something new in 3.9.x?

--
Company: mediaSELF Sp. z o.o., http://www.mediaself.pl
eZ references: http://ez.no/partners/worldwide_partners/mediaself
eZ certified developer: http://ez.no/certification/verify/272585
eZ blog: http://ez.ryba.eu

Betsy Gamrat

Tuesday 08 May 2007 7:26:21 pm

Hi,

I did something similar with another application. I used AJAX to simulate the calls into the application.

Basically - you set up a template that has a check box or an opportunity for the site visitor to enter a quantity. After they update the quantity, you send the data to eZ - as if you are adding items to the cart. If the delete items, you remove them.

Be prepared to keep a client side version of the cart contents.

When the site visitor is done shopping, the transition to the cart is really just a 'view basket'.

Good luck.

Piotrek Karaś

Tuesday 08 May 2007 11:17:08 pm

Hello Betsy,
Thank you for the response!

The ajax solution sound reasonable and we may actually find it very useful. Just few things to clear up:

<i>...After they update the quantity, you send the data to eZ - as if you are adding items to the cart...</i>
We have noticed, that when a product is sent to the cart, it is always quantity=1 and only the cart itself has the ability to modify it. Any ways around that?

<i>Be prepared to keep a client side version of the cart contents.</i>
Can you elaborate? I don't quite catch that.

Thanks!

--
Company: mediaSELF Sp. z o.o., http://www.mediaself.pl
eZ references: http://ez.no/partners/worldwide_partners/mediaself
eZ certified developer: http://ez.no/certification/verify/272585
eZ blog: http://ez.ryba.eu

Pascal Specht

Thursday 24 July 2008 7:10:23 am

In case this might be helpful to others,

Here's another solution to add more than 1 item at once to the basket (from within a PHP module in this case):

Use the traditional way to add one unit like this:

$operationResult = eZOperationHandler::execute( 'shop', 'addtobasket', array( 'basket_id' => $basket->attribute( 'id' ), 'object_id' => $contentobjectID,'option_list' => $optionList ) );

and then, add a call to adjust the quantity like this:

eZShopOperationCollection::addQuantity( $contentobjectID, $quantity-1 );

you need to add the following code to your kernel/shop/ezshopoperationcollection.php:

	function addQuantity( $objectID, $quantity )
	{
		$object = eZContentObject::fetch( $objectID );
        $basket =& eZBasket::currentBasket();
        $collection =& $basket->attribute( 'productcollection' );
		$collectionItems =& $collection->itemList( false );
		foreach ( $collectionItems as $item )
		{
			/* For all items in the basket which have the same object_id: */
			if ( $item['contentobject_id'] == $objectID )
			{
				$itemID = $item['id'];
				$prodline = eZProductCollectionItem::fetch( $itemID );
                $prodline->setAttribute( 'item_count', $quantity + $prodline->attribute( 'item_count' ) );
                $prodline->store();
			}
		}
	}

Of course, this would not be needed if there were a quantity parameter in the AddToBasket function...

</Pascal>

You must be logged in to post messages in this topic!

36 542 Users on board!

Forums menu