Данный код нужно разместить в header.html
файле, после подключения всех js файлов.
<script type="text/javascript">
function getFavoriteData(){
return JSON.parse(localStorage.getItem('favorite'));
}
function setFavoriteData(o){
localStorage.setItem('favorite', JSON.stringify(o));
return false;
}
</script>
На странице избранных товаров (favorites.html
) нужно разместить следующий код:
<script type="text/javascript">
{% set pageFavoriteID = random(999999) %}
jsApplication.pageLoad(function(){
{% set variable = 'var_'~random(999999) %}
var {{variable}} = 0;
var param = '';
var load = [];
load = load.concat(ioGetModuleUrls({module: 'noty-packaged', push: 1}));
if(jsApplication.busy && load.length > 0) {jsApplication.busy(true); {{variable}} = 1;}
if(load.length > 0){
yepnope({
load: load,
complete: function(){
if(jsApplication.busy && {{variable}}) jsApplication.busy(false);
//onBootstrapEditable();
setTimeout('pageFavorite{{pageFavoriteID}}()', 10);
},
});
} else {
if(jsApplication.busy && {{variable}}) jsApplication.busy(false);
setTimeout('pageFavorite{{pageFavoriteID}}()', 10);
}
});
function pageFavorite{{pageFavoriteID}}(){
var enum_si = {{ioEnum.SI|json_encode|raw}};
{% if not user.isGuest %}
// первоначальная загрузка корзины избранных товаров
function loadingOffersFavorite(){
// если что-то в корзине уже есть, начинаем формировать данные для вывода
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersFavorite.getData2',
resultType: 'json',
params: {
filter: {
offer_type: 2, // розничные
},
limit: 1000,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var offersFavorite = obj.res.data || [];
$('.basket .basket-list').html('');
if(offersFavorite.length > 0){
$.each(offersFavorite, function(i, offer){
var basketofferitems = '';
$.each(offer.offers, function(j, offeritem){
var offer_poster = '{{template.path}}/img/bmcsales-logo.svg';
if(offeritem.images && offeritem.images.length > 0){
if(offeritem.images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].urlSmall;
} else {
if(offeritem.images[0].url){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].url;
}
}
} else {
if(offeritem.offer_images && offeritem.offer_images.length > 0){
if(offeritem.offer_images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].urlSmall;
} else {
{% if offeritem.offer_images.0.url %}
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].url;
{% endif %}
}
}
}
var offer_cost_per_unit_min = {value: 0, currency: 'KZT'};
var offer_cost_per_unit_max = {value: 0, currency: 'KZT'};
$.each(offeritem.offer_parameters, function(k, param){
var param_cost_per_unit = param.cost_per_unit;
param_cost_per_unit.value /= enum_si[offeritem.si_visible].coeff;
if(param_cost_per_unit.value > offer_cost_per_unit_max.value){
offer_cost_per_unit_max = param_cost_per_unit;
}
if(param_cost_per_unit.value < offer_cost_per_unit_min.value || offer_cost_per_unit_min.value == 0){
offer_cost_per_unit_min = param_cost_per_unit;
}
});
basketofferitems += (
'<div class="col-md-3">'+
'<div class="product product-sm-left">'+
'<ul class="product-labels">'+
/*'<li>-30%</li>'+
'<li>stuff pick</li>'+
'<li>hot</li>'+*/
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<li>-'+offeritem.offer_discount+'%</li>'
:'')+
'</ul>'+
'<div class="product-img-wrap">'+
'<img class="product-img" src="'+offer_poster+'" />'+
/*'<img class="product-img-primary" src="{{template.path}}/img/test_product/35.jpg" />'+
'<img class="product-img-alt" src="{{template.path}}/img/test_product/35-a.jpg" />'+*/
'</div>'+
'<a class="product-link" href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'"></a>'+
'<div class="product-caption">'+
'<ul class="product-caption-rating">'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
/*'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li><i class="fa fa-star"></i></li>'+*/
'</ul>'+
'<h5 class="product-caption-title">'+(offeritem.goods_name['{{currentlang}}']||(offeritem.offer_name||''))+'</h5>'+
'<div class="product-caption-price">'+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<span class="product-caption-price-new">'+number_format(offer_cost_per_unit_min.value - ((offer_cost_per_unit_min.value / 100) * offeritem.offer_discount), 2, '.', ' ')+' '+offer_cost_per_unit_min.currency+'</span>'
:
'<span class="product-caption-price-new">'+number_format(offer_cost_per_unit_min.value, 2, '.', ' ')+' '+offer_cost_per_unit_min.currency+'</span>'
)+
/*'<span class="product-caption-price-old">$67</span>'+
'<span class="product-caption-price-new">$54</span>'+*/
'</div>'+
'<ul class="product-caption-feature-list">'+
/*'<li>1 left</li>'+
'<li>Free Shipping</li>'+*/
'</ul>'+
'</div>'+
'</div>'+
'</div>'
);
});
$('.basket .basket-list').append(basketofferitems);
});
if(offersFavorite.length > 0){
$('.basket-loading').css('display', 'none');
$('.basket-empty').css('display', 'none');
$('.basket').css('display', '');
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
} else {
var n = noty({
text: 'Произошла ошибка при загрузке избранных товаров. Попробуйте загрузить их еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
}
});
}
loadingOffersFavorite();
{% else %}
// первоначальная загрузка корзины избранных товаров
function loadingOffersFavorite(){
var favoriteData = getFavoriteData() || []; // вытаскиваем все данные корзины
//console.log(favoriteData);
/*{
tmp_pkid: ioGenPkid(), // pkid записи
company_pkid: 0, // pkid компании
goods_pkid: 0, // pkid товара
offer_number: 0, // номер предложения товара, уникальный во всей системе
tid: '', // ИНТ товара
}*/
// если что-то в корзине уже есть, начинаем формировать данные для вывода
if(favoriteData !== null){
$('.basket .basket-list').html('');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersFavorite.getData2Guest',
resultType: 'json',
params: {
offersFavorite: favoriteData,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var offersFavorite = obj.res.data || [];
$.each(offersFavorite, function(i, offer){
var basketofferitems = '';
$.each(offer.offers, function(j, offeritem){
var offer_poster = '{{template.path}}/img/bmcsales-logo.svg';
if(offeritem.images && offeritem.images.length > 0){
if(offeritem.images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].urlSmall;
} else {
if(offeritem.images[0].url){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].url;
}
}
} else {
if(offeritem.offer_images && offeritem.offer_images.length > 0){
if(offeritem.offer_images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].urlSmall;
} else {
{% if offeritem.offer_images.0.url %}
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].url;
{% endif %}
}
}
}
var offer_cost_per_unit_min = {value: 0, currency: 'KZT'};
var offer_cost_per_unit_max = {value: 0, currency: 'KZT'};
$.each(offeritem.offer_parameters, function(k, param){
var param_cost_per_unit = param.cost_per_unit;
param_cost_per_unit.value /= enum_si[offeritem.si_visible].coeff;
if(param_cost_per_unit.value > offer_cost_per_unit_max.value){
offer_cost_per_unit_max = param_cost_per_unit;
}
if(param_cost_per_unit.value < offer_cost_per_unit_min.value || offer_cost_per_unit_min.value == 0){
offer_cost_per_unit_min = param_cost_per_unit;
}
});
basketofferitems += (
'<div class="col-md-3">'+
'<div class="product product-sm-left">'+
'<ul class="product-labels">'+
/*'<li>-30%</li>'+
'<li>stuff pick</li>'+
'<li>hot</li>'+*/
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<li>-'+offeritem.offer_discount+'%</li>'
:'')+
'</ul>'+
'<div class="product-img-wrap">'+
'<img class="product-img" src="'+offer_poster+'" />'+
/*'<img class="product-img-primary" src="{{template.path}}/img/test_product/35.jpg" />'+
'<img class="product-img-alt" src="{{template.path}}/img/test_product/35-a.jpg" />'+*/
'</div>'+
'<a class="product-link" href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'"></a>'+
'<div class="product-caption">'+
'<ul class="product-caption-rating">'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li class="rated"><i class="fa fa-star"></i></li>'+
/*'<li class="rated"><i class="fa fa-star"></i></li>'+
'<li><i class="fa fa-star"></i></li>'+*/
'</ul>'+
'<h5 class="product-caption-title">'+(offeritem.goods_name['{{currentlang}}']||(offeritem.offer_name||''))+'</h5>'+
'<div class="product-caption-price">'+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<span class="product-caption-price-new">'+number_format(offer_cost_per_unit_min.value - ((offer_cost_per_unit_min.value / 100) * offeritem.offer_discount), 2, '.', ' ')+' '+offer_cost_per_unit_min.currency+'</span>'
:
'<span class="product-caption-price-new">'+number_format(offer_cost_per_unit_min.value, 2, '.', ' ')+' '+offer_cost_per_unit_min.currency+'</span>'
)+
/*'<span class="product-caption-price-old">$67</span>'+
'<span class="product-caption-price-new">$54</span>'+*/
'</div>'+
'<ul class="product-caption-feature-list">'+
/*'<li>1 left</li>'+
'<li>Free Shipping</li>'+*/
'</ul>'+
'</div>'+
'</div>'+
'</div>'
);
});
$('.basket .basket-list').append(basketofferitems);
});
if(offersFavorite.length > 0){
$('.basket-loading').css('display', 'none');
$('.basket-empty').css('display', 'none');
$('.basket').css('display', '');
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
} else {
var n = noty({
text: 'Произошла ошибка при загрузке избранных товаров. Попробуйте загрузить их еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
}
});
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
}
loadingOffersFavorite();
{% endif %}
}
</script>
<div class="global-wrapper clearfix" id="global-wrapper">
<div class="container">
<div class="basket-loading">
<div class="lds-css">
<div class="lds-spinner">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="text-center">
<p class="lead">Загрузка избранных товаров...</p>
</div>
</div>
<div class="basket-empty" style="display: none;">
<div class="text-center">
<i class="fa fa-heart-o empty-cart-icon"></i>
<p class="lead">Список Ваших избранных товаров пуст</p>
<a class="btn btn-primary btn-lg" href="{{link('/catalog')}}">Начать покупки <i class="fa fa-long-arrow-right"></i></a>
</div>
</div>
<div class="basket" style="display: none;">
<div class="row basket-list" data-gutter="15"></div>
</div>
<div class="gap"></div>
</div>
</div>