У меня есть шаблон постраничной навигации, не стандартный, его доделывали.
Проблема в том, иногда бывает что товар дублируется, тоесть:
Я открываю раздел Краски, у меня там 4 страницы красок, так вот, последний товар на первой странице, и первый товар на второй странице, очень часто бывает одинаковым(нет это не дубликат т.к. ид товара одинаковый, урл одинаковый) т.е. скрипт как,то ошибается либо в нем есть сбой. Пытался разобраться но не могу найти в чем ошибка, может кто поможет. При использовании стандартных шаблонов, то все ок.
Template.php[CODE]<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
$this->setFrameMode(true);
if (!$arResult["NavShowAlways"]) {
if ($arResult["NavRecordCount"] == 0 || ($arResult["NavPageCount"] == 1 && $arResult["NavShowAll"] == false))
return;
}
?>
<?
$strNavQueryString = ($arResult["NavQueryString"] != "" ? $arResult["NavQueryString"] . "&" : "");
$strNavQueryStringFull = ($arResult["NavQueryString"] != "" ? "?" . $arResult["NavQueryString"] : "");
?>
<div class="b-pagination">
<? if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]): ?>
<div class="view_more">
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"
class="btn"><?=GetMessage("LIKEE_ESTORE_POKAZATQ_ESE")?></a>
</div>
<? endif; ?>
<div class="pages">
<?
if ($arResult["bDescPageNumbering"] === true):
$bFirst = true;
if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]):
if ($arResult["bSavePage"]):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
if ($arResult["NavPageCount"] == ($arResult["NavPageNomer"] + 1)):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
endif;
endif;
if ($arResult["nStartPage"] < $arResult["NavPageCount"]):
$bFirst = false;
if ($arResult["bSavePage"]):
?>
<a class="cp_first"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["NavPageCount"] ?>">1</a>
<?
else:
?>
<a class="cp_first" href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>">1</a>
<?
endif;
if ($arResult["nStartPage"] < ($arResult["NavPageCount"] - 1)):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= intVal($arResult["nStartPage"] + ($arResult["NavPageCount"] - $arResult["nStartPage"]) / 2) ?>">...</a>
<?
endif;
endif;
endif;
do {
$NavRecordGroupPrint = $arResult["NavPageCount"] - $arResult["nStartPage"] + 1;
if ($arResult["nStartPage"] == $arResult["NavPageNomer"]):
?>
<a class="<?= ($bFirst ? "cp_first " : "") ?>active" oncl ick="return false;"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= $NavRecordGroupPrint ?></a>
<?
elseif ($arResult["nStartPage"] == $arResult["NavPageCount"] && $arResult["bSavePage"] == false):
?>
<a href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"
class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $NavRecordGroupPrint ?></a>
<?
else:
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["nStartPage"] ?>"<?
?> class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $NavRecordGroupPrint ?></a>
<?
endif;
$arResult["nStartPage"]--;
$bFirst = false;
} while ($arResult["nStartPage"] >= $arResult["nEndPage"]);
if ($arResult["NavPageNomer"] > 1):
if ($arResult["nEndPage"] > 1):
if ($arResult["nEndPage"] > 2):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= round($arResult["nEndPage"] / 2) ?>">...</a>
<?
endif;
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=1"><?= $arResult["NavPageCount"] ?></a>
<?
endif;
?>
<a class="arrow right"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] - 1) ?>"><?= GetMessage("nav_next") ?></a>
<?
endif;
else:
$bFirst = true;
if ($arResult["NavPageNomer"] > 1):
if ($arResult["bSavePage"]):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] - 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
if ($arResult["NavPageNomer"] > 2):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] - 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= GetMessage("nav_prev") ?></a>
<?
endif;
endif;
if ($arResult["nStartPage"] > 1):
$bFirst = false;
if ($arResult["bSavePage"]):
?>
<a class="cp_first"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=1">1</a>
<?
else:
?>
<a class="cp_first" href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>">1</a>
<?
endif;
if ($arResult["nStartPage"] > 2):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= round($arResult["nStartPage"] / 2) ?>">...</a>
<?
endif;
endif;
endif;
do {
if ($arResult["nStartPage"] == $arResult["NavPageNomer"]):
?>
<a class="<?= ($bFirst ? "cp_first " : "") ?>active" oncl ick="return false;"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= $arResult["nStartPage"] ?></a>
<?
elseif ($arResult["nStartPage"] == 1 && $arResult["bSavePage"] == false):
?>
<a href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"
class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $arResult["nStartPage"] ?></a>
<?
else:
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["nStartPage"] ?>"<?
?> class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $arResult["nStartPage"] ?></a>
<?
endif;
$arResult["nStartPage"]++;
$bFirst = false;
} while ($arResult["nStartPage"] <= $arResult["nEndPage"]);
if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]):
if ($arResult["nEndPage"] < $arResult["NavPageCount"]):
if ($arResult["nEndPage"] < ($arResult["NavPageCount"] - 1)):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= round($arResult["nEndPage"] + ($arResult["NavPageCount"] - $arResult["nEndPage"]) / 2) ?>">...</a>
<?
endif;
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["NavPageCount"] ?>"><?= $arResult["NavPageCount"] ?></a>
<?
endif;
?>
<a class="arrow right"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"><?= GetMessage("nav_next") ?></a>
<?
endif;
endif;
if ($arResult["bShowAll"]):
if ($arResult["NavShowAll"]):
?>
<a class="cp_all"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>SHOWALL_<?= $arResult["NavNum"] ?>=0"><?= GetMessage("nav_paged") ?></a>
<?
else:
?>
<a class="cp_all"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>SHOWALL_<?= $arResult["NavNum"] ?>=1"><?= GetMessage("nav_all") ?></a>
<?
endif;
endif
?>
</div>
</div>
[/CODE]
Script.js[CODE]$(function () {
$('body').on('click', '.b-pagination .view_more a', function (e) {
e.preventDefault();
var container = $(this).closest('.b-pagination-container'),
pages = $(this).closest('.b-pagination'),
url = $(this).attr('href'),
view_more = $(this).closest('.view_more');
view_more.addClass('loading');
$.post(url, {catalog_reload: 'y'}, function (response) {
var offset = pages.offset().top,
items = $('.item', response),
nav = $('.b-pagination', response);
view_more.removeClass('loading');
if (history.pushState) {
history.pushState({}, document.title, url);
}
pages.remove();
container.append(items);
container.append(nav);
$('input.quantity', container).Quantity();
$('body').animate({scrollTop: offset - 50}, 500);
});
return false;
});
});
[/CODE]
Проблема в том, иногда бывает что товар дублируется, тоесть:
Я открываю раздел Краски, у меня там 4 страницы красок, так вот, последний товар на первой странице, и первый товар на второй странице, очень часто бывает одинаковым(нет это не дубликат т.к. ид товара одинаковый, урл одинаковый) т.е. скрипт как,то ошибается либо в нем есть сбой. Пытался разобраться но не могу найти в чем ошибка, может кто поможет. При использовании стандартных шаблонов, то все ок.
Template.php[CODE]<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
$this->setFrameMode(true);
if (!$arResult["NavShowAlways"]) {
if ($arResult["NavRecordCount"] == 0 || ($arResult["NavPageCount"] == 1 && $arResult["NavShowAll"] == false))
return;
}
?>
<?
$strNavQueryString = ($arResult["NavQueryString"] != "" ? $arResult["NavQueryString"] . "&" : "");
$strNavQueryStringFull = ($arResult["NavQueryString"] != "" ? "?" . $arResult["NavQueryString"] : "");
?>
<div class="b-pagination">
<? if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]): ?>
<div class="view_more">
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"
class="btn"><?=GetMessage("LIKEE_ESTORE_POKAZATQ_ESE")?></a>
</div>
<? endif; ?>
<div class="pages">
<?
if ($arResult["bDescPageNumbering"] === true):
$bFirst = true;
if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]):
if ($arResult["bSavePage"]):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
if ($arResult["NavPageCount"] == ($arResult["NavPageNomer"] + 1)):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
endif;
endif;
if ($arResult["nStartPage"] < $arResult["NavPageCount"]):
$bFirst = false;
if ($arResult["bSavePage"]):
?>
<a class="cp_first"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["NavPageCount"] ?>">1</a>
<?
else:
?>
<a class="cp_first" href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>">1</a>
<?
endif;
if ($arResult["nStartPage"] < ($arResult["NavPageCount"] - 1)):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= intVal($arResult["nStartPage"] + ($arResult["NavPageCount"] - $arResult["nStartPage"]) / 2) ?>">...</a>
<?
endif;
endif;
endif;
do {
$NavRecordGroupPrint = $arResult["NavPageCount"] - $arResult["nStartPage"] + 1;
if ($arResult["nStartPage"] == $arResult["NavPageNomer"]):
?>
<a class="<?= ($bFirst ? "cp_first " : "") ?>active" oncl ick="return false;"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= $NavRecordGroupPrint ?></a>
<?
elseif ($arResult["nStartPage"] == $arResult["NavPageCount"] && $arResult["bSavePage"] == false):
?>
<a href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"
class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $NavRecordGroupPrint ?></a>
<?
else:
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["nStartPage"] ?>"<?
?> class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $NavRecordGroupPrint ?></a>
<?
endif;
$arResult["nStartPage"]--;
$bFirst = false;
} while ($arResult["nStartPage"] >= $arResult["nEndPage"]);
if ($arResult["NavPageNomer"] > 1):
if ($arResult["nEndPage"] > 1):
if ($arResult["nEndPage"] > 2):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= round($arResult["nEndPage"] / 2) ?>">...</a>
<?
endif;
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=1"><?= $arResult["NavPageCount"] ?></a>
<?
endif;
?>
<a class="arrow right"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] - 1) ?>"><?= GetMessage("nav_next") ?></a>
<?
endif;
else:
$bFirst = true;
if ($arResult["NavPageNomer"] > 1):
if ($arResult["bSavePage"]):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] - 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
if ($arResult["NavPageNomer"] > 2):
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] - 1) ?>"><?= GetMessage("nav_prev") ?></a>
<?
else:
?>
<a class="arrow left"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= GetMessage("nav_prev") ?></a>
<?
endif;
endif;
if ($arResult["nStartPage"] > 1):
$bFirst = false;
if ($arResult["bSavePage"]):
?>
<a class="cp_first"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=1">1</a>
<?
else:
?>
<a class="cp_first" href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>">1</a>
<?
endif;
if ($arResult["nStartPage"] > 2):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= round($arResult["nStartPage"] / 2) ?>">...</a>
<?
endif;
endif;
endif;
do {
if ($arResult["nStartPage"] == $arResult["NavPageNomer"]):
?>
<a class="<?= ($bFirst ? "cp_first " : "") ?>active" oncl ick="return false;"
href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"><?= $arResult["nStartPage"] ?></a>
<?
elseif ($arResult["nStartPage"] == 1 && $arResult["bSavePage"] == false):
?>
<a href="<?= $arResult["sUrlPath"] ?><?= $strNavQueryStringFull ?>"
class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $arResult["nStartPage"] ?></a>
<?
else:
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["nStartPage"] ?>"<?
?> class="<?= ($bFirst ? "cp_first" : "") ?>"><?= $arResult["nStartPage"] ?></a>
<?
endif;
$arResult["nStartPage"]++;
$bFirst = false;
} while ($arResult["nStartPage"] <= $arResult["nEndPage"]);
if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]):
if ($arResult["nEndPage"] < $arResult["NavPageCount"]):
if ($arResult["nEndPage"] < ($arResult["NavPageCount"] - 1)):
/*?>
<span class="modern-page-dots">...</span>
<?*/
?>
<a class="cp_dots"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= round($arResult["nEndPage"] + ($arResult["NavPageCount"] - $arResult["nEndPage"]) / 2) ?>">...</a>
<?
endif;
?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= $arResult["NavPageCount"] ?>"><?= $arResult["NavPageCount"] ?></a>
<?
endif;
?>
<a class="arrow right"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"><?= GetMessage("nav_next") ?></a>
<?
endif;
endif;
if ($arResult["bShowAll"]):
if ($arResult["NavShowAll"]):
?>
<a class="cp_all"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>SHOWALL_<?= $arResult["NavNum"] ?>=0"><?= GetMessage("nav_paged") ?></a>
<?
else:
?>
<a class="cp_all"
href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>SHOWALL_<?= $arResult["NavNum"] ?>=1"><?= GetMessage("nav_all") ?></a>
<?
endif;
endif
?>
</div>
</div>
[/CODE]
Script.js[CODE]$(function () {
$('body').on('click', '.b-pagination .view_more a', function (e) {
e.preventDefault();
var container = $(this).closest('.b-pagination-container'),
pages = $(this).closest('.b-pagination'),
url = $(this).attr('href'),
view_more = $(this).closest('.view_more');
view_more.addClass('loading');
$.post(url, {catalog_reload: 'y'}, function (response) {
var offset = pages.offset().top,
items = $('.item', response),
nav = $('.b-pagination', response);
view_more.removeClass('loading');
if (history.pushState) {
history.pushState({}, document.title, url);
}
pages.remove();
container.append(items);
container.append(nav);
$('input.quantity', container).Quantity();
$('body').animate({scrollTop: offset - 50}, 500);
});
return false;
});
});
[/CODE]