first commit
This commit is contained in:
72
templates_user/shop-category/blog-category-products.php
Normal file
72
templates_user/shop-category/blog-category-products.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?
|
||||
global $lang_id;
|
||||
$hash = md5( time() . rand( 0, 9999999999 ) );
|
||||
?>
|
||||
<div class="products-box-<?= $hash;?>">
|
||||
<div class="swiper">
|
||||
<div class="swiper-wrapper">
|
||||
<?
|
||||
foreach ( $this -> products as $product ):
|
||||
$product_obj = \shop\Product::getFromCache( (int)$product, $lang_id );
|
||||
if ( $product_obj -> status ):
|
||||
echo \Tpl::view( 'shop-product/product-mini', [
|
||||
'product' => $product_obj,
|
||||
'class' => 'item',
|
||||
'product_mini_class' => 'swiper-slide'
|
||||
] );
|
||||
endif;
|
||||
endforeach;
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="swiper-button-next products-box-<?= $hash;?>-next"></div>
|
||||
<div class="swiper-button-prev products-box-<?= $hash;?>-prev"></div>
|
||||
</div>
|
||||
<script class="footer" type="text/javascript">
|
||||
$( function()
|
||||
{
|
||||
if( $( ".products-box-<?= $hash;?> .swiper").length ) {
|
||||
const swiper<?= $hash;?> = new Swiper(".products-box-<?= $hash;?> .swiper", {
|
||||
slidesPerView: 6,
|
||||
spaceBetween: 30,
|
||||
initialSlide : 1,
|
||||
centeredSlides: true,
|
||||
lazy: true,
|
||||
pagination: {
|
||||
el: ".swiper-pagination",
|
||||
clickable: true,
|
||||
},
|
||||
navigation: {
|
||||
nextEl: ".products-box-<?= $hash;?>-next",
|
||||
prevEl: ".products-box-<?= $hash;?>-prev",
|
||||
},
|
||||
|
||||
breakpoints: {
|
||||
1400: {
|
||||
slidesPerView: 6,
|
||||
},
|
||||
1200: {
|
||||
slidesPerView: 5,
|
||||
},
|
||||
991: {
|
||||
slidesPerView: 4,
|
||||
},
|
||||
576: {
|
||||
slidesPerView: 3,
|
||||
},
|
||||
300: {
|
||||
slidesPerView: 2,
|
||||
},
|
||||
200: {
|
||||
slidesPerView: 1,
|
||||
}
|
||||
},
|
||||
on: {
|
||||
slideChange: function() {
|
||||
observer.observe();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
76
templates_user/shop-category/category-infinitescroll.php
Normal file
76
templates_user/shop-category/category-infinitescroll.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<? global $lang_id; ?>
|
||||
<? if ($this->query) : ?>
|
||||
<div class="box-title">
|
||||
<?= \S::lang('wyniki-wyszukiwania-dla-zapytania') . ': <strong>' . $this->query . '</strong>'; ?>
|
||||
</div>
|
||||
<? endif; ?>
|
||||
<?
|
||||
if ($this->category_additional_text) :
|
||||
echo \Tpl::view('shop-category/_partials/category-additional-text', [
|
||||
'category' => $this->category
|
||||
]);
|
||||
endif;
|
||||
?>
|
||||
<div class="category-content">
|
||||
<? if (is_array($this->products)) : foreach ($this->products as $product_id) :
|
||||
$product = new \shop\Product($product_id);
|
||||
echo \Tpl::view('shop-product/product-mini', [
|
||||
'product' => new \shop\Product($product_id, $lang_id)
|
||||
]);
|
||||
endforeach;
|
||||
endif; ?>
|
||||
</div>
|
||||
<?
|
||||
if ($this->category_description) :
|
||||
echo \Tpl::view('shop-category/category-description', [
|
||||
'category' => $this->category
|
||||
]);
|
||||
endif;
|
||||
?>
|
||||
<script type="text/javascript" class="footer">
|
||||
$(document).ready(function() {
|
||||
let offset = 0;
|
||||
const limit = 8;
|
||||
let isLoading = false;
|
||||
const $categoryContent = $('.category-content');
|
||||
|
||||
function loadProducts() {
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
isLoading = true;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
cache: false,
|
||||
url: '/shopProduct/lazy_loading_products',
|
||||
data: {
|
||||
offset: offset,
|
||||
category_id: <?= $this -> category['id'] ?>
|
||||
},
|
||||
beforeSend: function() {
|
||||
|
||||
},
|
||||
success: function( response ) {
|
||||
response = jQuery.parseJSON( response );
|
||||
if ( response.html.length > 0 ) {
|
||||
$categoryContent.append( response.html );
|
||||
offset += limit;
|
||||
isLoading = false;
|
||||
} else {
|
||||
$( document) .off( 'scroll', checkScroll );
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function checkScroll() {
|
||||
if( $(window).scrollTop() >= $('.category-content').offset().top + $('.category-content').outerHeight() - window.innerHeight - 250 ) {
|
||||
loadProducts();
|
||||
}
|
||||
}
|
||||
|
||||
$( document ).on( 'scroll', checkScroll );
|
||||
loadProducts();
|
||||
});
|
||||
</script>
|
||||
76
templates_user/shop-category/category.php
Normal file
76
templates_user/shop-category/category.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<? global $lang_id; ?>
|
||||
<? if ($this->query) : ?>
|
||||
<div class="box-title">
|
||||
<?= \S::lang('wyniki-wyszukiwania-dla-zapytania') . ': <strong>' . $this->query . '</strong>'; ?>
|
||||
</div>
|
||||
<? endif; ?>
|
||||
<?
|
||||
if ($this->category_additional_text) :
|
||||
echo \Tpl::view('shop-category/_partials/category-additional-text', [
|
||||
'category' => $this->category
|
||||
]);
|
||||
endif;
|
||||
?>
|
||||
<div class="category-content">
|
||||
<? if (is_array($this->products)) : foreach ($this->products as $product_id) :
|
||||
$product = new \shop\Product($product_id);
|
||||
echo \Tpl::view('shop-product/product-mini', [
|
||||
'product' => new \shop\Product($product_id, $lang_id)
|
||||
]);
|
||||
endforeach;
|
||||
endif; ?>
|
||||
</div>
|
||||
<?
|
||||
if ($this->category_description) :
|
||||
echo \Tpl::view('shop-category/category-description', [
|
||||
'category' => $this->category
|
||||
]);
|
||||
endif;
|
||||
?>
|
||||
<script type="text/javascript" class="footer">
|
||||
$(document).ready(function() {
|
||||
let offset = 12;
|
||||
const limit = 8;
|
||||
let isLoading = false;
|
||||
const $categoryContent = $('.category-content');
|
||||
|
||||
function loadProducts() {
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
isLoading = true;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
cache: false,
|
||||
url: '/shopProduct/lazy_loading_products',
|
||||
data: {
|
||||
offset: offset,
|
||||
category_id: <?= $this -> category['id'] ?>
|
||||
},
|
||||
beforeSend: function() {
|
||||
|
||||
},
|
||||
success: function( response ) {
|
||||
response = jQuery.parseJSON( response );
|
||||
if ( response.html.length > 0 ) {
|
||||
$categoryContent.append( response.html );
|
||||
offset += limit;
|
||||
isLoading = false;
|
||||
} else {
|
||||
$( document) .off( 'scroll', checkScroll );
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function checkScroll() {
|
||||
if( $(window).scrollTop() >= $('.category-content').offset().top + $('.category-content').outerHeight() - window.innerHeight - 250 ) {
|
||||
loadProducts();
|
||||
}
|
||||
}
|
||||
|
||||
$( document ).on( 'scroll', checkScroll );
|
||||
loadProducts();
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user