Вывести список просмотренных товаров с кнопкой "Очистить"

Содержимое страницы /views/ со списком просмотренных товаров:

<span class="clean_wishlist">Очистить</span>
<div class="clearfix"></div>
<div class="view_list wishlist_list">
<?
$arViewed = array();
$basketUserId = (int)CSaleBasket::GetBasketUserID(false);
if ($basketUserId > 0){
$viewedIterator = \Bitrix\Catalog\CatalogViewedProductTable::getList(array(
'select' => array('PRODUCT_ID', 'ELEMENT_ID'),
'filter' => array('=FUSER_ID' => $basketUserId, '=SITE_ID' => SITE_ID),
'order' => array('DATE_VISIT' => 'DESC'),
'limit' => 20
));
while ($arFields = $viewedIterator->fetch()){
$arBasketItems[] = $arFields["ELEMENT_ID"];
$res = CIBlockElement::GetByID($arFields["ELEMENT_ID"]);
$arPrice = CPrice::GetBasePrice($arFields["ELEMENT_ID"], false, false);
// echo '<pre>';
// print_r($arPrice);
// echo '</pre>';
if($ar_res = $res->GetNext()):?>
<div class="col-sm-4">
<div class="bx_catalog_item_container">
<a href="<?=$ar_res["CANONICAL_PAGE_URL"]?>" class="bx_catalog_item_images" title="">
<span class="img_wrap">
<?$renderImage = CFile::ResizeImageGet($ar_res['DETAIL_PICTURE'], Array("width" => '285', "height" => '278'), BX_RESIZE_IMAGE_PROPORTIONAL_ALT );?>
<img src="<?=$renderImage["src"]?>" alt="<?=$ar_res['NAME'];?>" title="<?=$ar_res['NAME'];?>">
</span>
<div class="bx_catalog_item_title order_name"><?=$ar_res['NAME'];?></div>
</a>

<div class="bx_catalog_item_price">
<div class="bx_price"><?=preg_replace('/\..+$/','',$arPrice["PRICE"]);?> руб.</div>
</div>
<div class="bx_catalog_item_controls">
<div class="bx_catalog_item_controls_blocktwo">
<span class="addToCart">в корзину</span>
<span class="price" style="display: none"><?=preg_replace('/\..+$/','',$arPrice["PRICE"]);?> руб.</span>
<span class="product_id" style="display: none"><?=$arFields["ELEMENT_ID"]?></span>
</div>
<div style="clear: both;"></div>
</div>
</div>
</div>
<?endif;
}
$inwished = count($arBasketItems);
}
if($inwished == 0):?>
<p class="empty_wishlist">Вы еще не просматривали ни один товар.</p>
<?endif;?>
<div class="clearfix"></div>
</div>
<script>
$(function() {
var elm = document.getElementsByClassName('.addToCart');
$(".addToCart").click(function (e) {
var s = $(this).siblings('.product_id').html();
var price = $(this).siblings('.price').html();
var price_m = price.replace(' руб.', "");
price_m = price_m.replace(' ', '');
var sendData = {
id: s,
price: price_m,
value: 1
};
this.blur();
$.ajax({
url: "/ajax/price1.php",
global: false,
type: "POST",
data: ({sendData: sendData}),
success: function (data) {
window.location.href = "/korzina/";
}
});
return false;
});
$(".clean_wishlist").click(function (e) {
$.ajax({
type: "POST",
url: "/ajax/clean_v.php",
success: function (html) {
$('#viewcount').html('0');
$('.view_list').html(html);

}
});
});
});
</script>
При клике на кнопку "Очистить" происходит запрос к странице clean_v.php со следующим содержимым:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Main\Loader;
Loader::includeModule("sale");
Loader::includeModule("catalog");
echo '<p class="empty_wishlist">Вы еще не просматривали ни один товар.</p>';
?>
<?
$arViewed = array();
$basketUserId = (int)CSaleBasket::GetBasketUserID(false);
if ($basketUserId > 0){
$viewedIterator = \Bitrix\Catalog\CatalogViewedProductTable::getList(array(
'select' => array('ID', 'PRODUCT_ID', 'ELEMENT_ID'),
'filter' => array('=FUSER_ID' => $basketUserId, '=SITE_ID' => SITE_ID),
'order' => array('DATE_VISIT' => 'DESC'),
'limit' => 20
));
while ($arFields = $viewedIterator->fetch()){
\Bitrix\Catalog\CatalogViewedProductTable::delete($arFields['ID']);
}
}
?>
Также в шапке можно вывести количество просмотренных товаров со ссылкой на страницу с ними:

<a href="/views/">Вы смотрели</a>
<?
$db_res = CSaleViewedProduct::GetList(
array("DATE_VISIT" => "DESC"),
array("FUSER_ID" => CSaleBasket::GetBasketUserID()),
false,
false,
array('ID')
);
$v_count = 0;
while ($arItems = $db_res->Fetch()){
$v_count++;
}
?>
<span id="viewcount" class="prod_nums"><?=$v_count?></span>

bitrixone © 2024