public static function run($arParams) { if (isset($arParams['recommender'])) { $recommender = $arParams['recommender']; } else { error_log('recommender not specified'); return; } $params = isset($arParams['params']) ? $arParams['params'] : array(); // get current cart items $cart = Functions::getCartItemIds(); if (isset($params['cart']) === false) { $params['cart'] = $cart; } if (empty($params['item_id']) === false) { $params['item_id'] = Functions::getRealItemID($params['item_id']); } if (empty($params['cart']) === false) { $params['cart'] = Functions::getRealItemIDsArray($params['cart']); } $jsonParams = array('recommender_type' => $recommender, 'limit' => Options::getRecommendCount()); // check required params for recommenders switch ($recommender) { case 'buying_now': if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } if (isset($params['item_id']) && is_numeric($params['item_id'])) { $jsonParams['item'] = json_encode($params['item_id']); } break; case 'see_also': if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } else { error_log('recommender see_also requires cart'); return; } break; case 'recently_viewed': if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } // cart is not required break; case 'also_bought': if (isset($params['item_id']) && is_numeric($params['item_id'])) { $jsonParams['item'] = json_encode($params['item_id']); } else { error_log('recommender also_bought requires item_id'); return; } break; case 'similar': if (isset($params['item_id']) && is_numeric($params['item_id'])) { $jsonParams['item'] = json_encode($params['item_id']); } else { error_log('recommender similar requires item_id'); return; } // params2 if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } // cart is not required break; case 'interesting': // no params break; case 'popular': if (isset($params['category'])) { $jsonParams['category'] = intval($params['category']); } break; default: error_log('unknown recommender: ' . $recommender); } $uniqid = uniqid('rees46-recommend-'); // render recommender placeholder and corresponding js ?> <div id="<?php echo $uniqid; ?> " class="rees46-recommend"></div> <script> BX.ready(function(){ REES46.addReadyListener(function () { REES46.recommend(<?php echo json_encode($jsonParams); ?> , function (items) { if (items.length > 0) { var data_string = BX.ajax.prepareData({ action: 'recommend', recommended_by: <?php echo json_encode($recommender); ?> , recommended_items: items }); BX.ajax({ url: '<?php echo SITE_DIR; ?> include/rees46-handler.php?' + data_string, method: 'GET', dataType: 'html', async: true, onsuccess: function (html) { if (REES46.showPromotion) { html = html + REES46.getPromotionBlock(); } BX('<?php echo $uniqid; ?> ').innerHTML = html; } }); } }); }); }); </script> <?php }
</div> <div style="margin-top: 10px;"> <label for="REES46_shopsecret"><?= GetMessage('REES_OPTIONS_SHOP_SECRET') ?></label> <br/> <input type="text" id="REES46_shopsecret" value="<?= \Rees46\Options::getShopSecret() ?>" name="shop_secret" style="width: 300px"/> </div> <div style="margin-top: 60px;"> <table> <tr> <td style="padding-left: 0"> <label for="REES46_recommend_count"><?= GetMessage('REES_OPTIONS_RECOMMEND_COUNT') ?></label> </td> <td style="padding-left: 10px"> <input type="text" id="REES46_recommend_count" value="<?= \Rees46\Options::getRecommendCount() ?>" name="recommend_count" style="width: 50px"/> </td> </tr> <tr> <td style="padding-left: 0"> <label for="REES46_recommend_nonavailable"><?= GetMessage('REES_OPTIONS_RECOMMEND_NONAVAILABLE') ?></label> </td> <td style="padding-left: 10px"> <input type="checkbox" id="REES46_recommend_nonavailable" value="1" <?php if (\Rees46\Options::getRecommendNonAvailable()): ?>checked="checked"<? endif ?> name="recommend_nonavailable" style="margin: 0"/> </td> </tr> </div> <?php $tabControl->BeginNextTab(); ?> <div>