Проблема с offset у msProducts

Добрый день,

с помощью сниппета через ajax вывожу доп. продукты в магазине и сталкиваюсь со следующей проблемой. Из фронтенда в сниппет передается значение оффсета, для того чтобы не выводить товары повторно. Значение оффсета хранится во фронтенде и там же инкрементируется (шаг 12 товаров). Так вот если оффсет больше чем осталось товаров, то вместо оставшихся товаров и/или нуля, сниппет отдает мне код всей странички. Т.е. весь фронт моментально ломается вместо того чтобы просто ничего не выводить (или оставшиеся продукты). Подскажите пожалуйста это баг или фича? Или это я что-то не так делаю/понимаю?

Фронт:
$('#shopMoreProductsButton').click(function() {
	$.post('/', $(this).data(), function(response) {
		$response = $(response);
		$response.appendTo('#shopProducts').hide().fadeIn(2000);
		$('html, body').animate({
        scrollTop: $response.first().offset().top - 81
    }, 2000);
	})
	$(this).data()['offset'] += 12;
});

Сниппет:

<?php
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
    if (empty($_POST['action'])) {return;}

    $tpl = $modx->getOption('tpl', $scriptProperties, 'page-shop-products__item', true);
    $limit = (int) $modx->getOption('limit', $scriptProperties, 12, true);
    $offset = (int) (is_null($_POST['offset'])  ? $modx->getOption('offset', $scriptProperties, 12, true):$_POST['offset'];
    
    switch (strtolower($_POST['action'])) {
	    case 'loadmore':
	        $params = array();
                $params['offset'] = $offset;
                $params['limit'] = $limit;
                $res = $modx->runSnippet('msProducts', $params); 
        break;
    }
    
if (!empty($res)) {
    die($res);
}
Заранее благодарен.

Хей, кто нибудь?)
Oleg Cvetkov
22 сентября 2016, 07:11
modx.pro
803
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0