Wenn der Warenkorb-Controller initialisiert wird

initializeCartController

/*

* -- Registration: --

* $GLOBALS['MERCONIS_HOOKS']['initializeCartController'][] = array('myMerconisHookClass', 'myInitializeCartController');

*

* -- Invocation: --

* When the cart controller is initialized

*

* -- Parameters: --

*           1. $cart - an array holding all cart information

*           2. $itemsExtended - an array holding extended item information

*           3. $calculation - an array holding current calculation details

*

* -- Return value: --

* none

*

* -- Objective: --

* e.g. cart manipulation

*  

*/

public function myInitializeCartController($cart, $itemsExtended, $calculation) {

/*

* Example: Adding products to the cart depending on the products that are currently in the cart.

* In this example we assume that we have different brochures that we want to hand out if someone

* orders a related product.

*

* We use the product's flexContent to store the relation between a product and a brochure

* (flexContent key "associatedBrochures").

*

* Please note that this example is oversimplified in order to make the basic idea behind this hook

* better understandable. This function is not intended to be used as it is in a real life scenario.

* You will most likely have to complete this function and add some control mechanisms, trim the

* comma separated list etc.

*/

$this->import('Database');

/*

* If we want to do some cart manipulation we need to import the ls_shop_cartController class

*/

$this->import('ls_shop_cartController');

$arrBrochures = array();

$arrBrochureIDs = array();

/*

* Walking through the cart item, using the extended array because we want to access

* extended product information for which we need the product object

*/

foreach ($itemsExtended as $item) {

/*

* If the product has a corresponding flexContent, we assume it's a comma separated list holding

* the brochure's product codes.

*/

if ($item['objProduct']->_flexContentExists('associatedBrochures')) {

$arrBrochures = array_merge($arrBrochures, explode(',', $item['objProduct']->_flexContents['associatedBrochures']));

}

}

$arrBrochures = array_unique($arrBrochures);

/*

* Get the product ids of the brochures

*/

foreach ($arrBrochures as $brochureArtNr) {

$objBrochureProduct = $this->Database->prepare("

SELECT                    `id`

FROM                    `tl_ls_shop_product`

WHERE                    `lsShopProductCode` = ?

AND                    `published` = ?

")

->execute($brochureArtNr, '1');

if ($objBrochureProduct->numRows) {

$objBrochureProduct->first();

$arrBrochureIDs[] = $objBrochureProduct->id;

}

}

/*

* We store the product ids of already added brochures in the session

* because we don't want to add a brochure more than once.

*/

if (!isset($_SESSION['myMerconis']['brochureIDsAddedToCart'])) {

$_SESSION['myMerconis']['brochureIDsAddedToCart'] = array();

}

foreach ($arrBrochureIDs as $brochureID) {

if (in_array($brochureID, $_SESSION['myMerconis']['brochureIDsAddedToCart'])) {

continue;

}

$this->ls_shop_cartController->addToCart($brochureID, 1);

$_SESSION['myMerconis']['brochureIDsAddedToCart'][] = $brochureID;

}                    

}