Здравствуйте!
В ходе выполнения заказа сделал небольшое решение для вывода последних просмотренных товаров посетителем, решил поделиться.
Товары (а точнее их ID) запоминаются через Cookie и благодаря этому мы создаём цикл с вызовом компонента catalog.element, указав полученный ID.
П.С. Если вы знаете более лучшее решение пишите в комментариях.
Установка (большое слово для этого)):
1. Поместите ниже приведённый код в шаблон детального просмотра товара (catalog.element ->template.php), где $latest_all - общее количество запоминаемых товаров:
2. Создайте ещё один шаблон для детального просмотра товара в которым вы должны указать, как будет выводиться один просмотренный товар.
3. Пропишите в нужном месте вывода последних просмотренных товаров код компонента bitrix:catalog.element, с указанием шаблона из п.(2) и с ID товара: $_COOKIE['latest'.$k] ("ELEMENT_ID" => $_COOKIE['latest'.$k],)
4. Поместите перед кодом компонента из п.(3).
4.5. Закройте цикл после кода из п.(3):
5. Вуаля)
* У меня 3-4 сделано так:
Удачи!
В ходе выполнения заказа сделал небольшое решение для вывода последних просмотренных товаров посетителем, решил поделиться.
Товары (а точнее их ID) запоминаются через Cookie и благодаря этому мы создаём цикл с вызовом компонента catalog.element, указав полученный ID.
П.С. Если вы знаете более лучшее решение пишите в комментариях.
Установка (большое слово для этого)):
1. Поместите ниже приведённый код в шаблон детального просмотра товара (catalog.element ->template.php), где $latest_all - общее количество запоминаемых товаров:
<?
//By Dmitry Ruban
$latest_all=4;
if ($latest_all > 0) {
if((isset($_COOKIE['latest'.$latest_all])) AND (isset($_COOKIE['latest1']))) {
if (isset($_COOKIE['old_latest'])) $g=$_COOKIE['old_latest']+1;
else $g=1;
if ($_COOKIE['old_latest']==$latest_all) {
$_COOKIE['old_latest']=1;
SetCookie('old_latest',1,time()+36000, "/");
$g=1;
}
for ($i=$g; $i<=$latest_all; $i++) {
$f=1;
for ($m=1; $m<=$latest_all; $m++) {
if ($_COOKIE['latest'.$m]==$arResult['ID']) {
$f=0;
}
}
if ($f==1) {
SetCookie('latest'.$i,$arResult['ID'],time()+30600, "/");
$_COOKIE['latest'.$i]=$arResult['ID'];
SetCookie('old_latest',$i,time()+36000, "/");
}
}
}
for ($i=1; $i<=$latest_all; $i++) {
$f=1;
for ($m=1; $m<=$latest_all; $m++) {
if ($_COOKIE['latest'.$m]==$arResult['ID']) {
$f=0;
}
}
if (!(isset($_COOKIE['latest'.$i])) AND ($f==1)) {
SetCookie('latest'.$i,$arResult['ID'],time()+36000, "/");
$_COOKIE['latest'.$i]=$arResult['ID'];
}
}
}
?> |
3. Пропишите в нужном месте вывода последних просмотренных товаров код компонента bitrix:catalog.element, с указанием шаблона из п.(2) и с ID товара: $_COOKIE['latest'.$k] ("ELEMENT_ID" => $_COOKIE['latest'.$k],)
4. Поместите перед кодом компонента из п.(3).
<?
$latest_real=1;
while ($_COOKIE['latest'.$latest_real]!="") {
$latest_real++;
}
if ($latest_real>0) for ($k=1; $k<$latest_real; $k++):?>
Код вывода компонента bitrix:catalog.element.
|
Код вывода компонента bitrix:catalog.element. <?endfor;?> |
* У меня 3-4 сделано так:
<?
$latest_real=1;
while ($_COOKIE['latest'.$latest_real]!="") {
$latest_real++;
}
if ($latest_real>0) for ($k=1; $k<$latest_real; $k++):?>
<?$APPLICATION->IncludeComponent("bitrix:catalog.element", "latest", array(
"IBLOCK_TYPE" => "catalog",
"IBLOCK_ID" => "5",
"ELEMENT_ID" => $_COOKIE['latest'.$k],
"ELEMENT_CODE" => "",
"SECTION_ID" => $_REQUEST["SECTION_ID"],
"SECTION_CODE" => "",
"PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"OFFERS_FIELD_CODE" => array(
0 => "",
1 => "",
),
"OFFERS_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"OFFERS_SORT_FIELD" => "sort",
"OFFERS_SORT_ORDER" => "asc",
"SECTION_URL" => "",
"DETAIL_URL" => "",
"BASKET_URL" => "/personal/basket.php",
"ACTION_VARIABLE" => "action",
"PRODUCT_ID_VARIABLE" => "id",
"PRODUCT_QUANTITY_VARIABLE" => "quantity",
"PRODUCT_PROPS_VARIABLE" => "prop",
"SECTION_ID_VARIABLE" => "SECTION_ID",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_GROUPS" => "Y",
"META_KEYWORDS" => "-",
"META_DESCRIPTION" => "-",
"BROWSER_TITLE" => "-",
"SET_TITLE" => "Y",
"SET_STATUS_404" => "N",
"ADD_SECTIONS_CHAIN" => "N",
"PRICE_CODE" => array(
),
"USE_PRICE_COUNT" => "N",
"SHOW_PRICE_COUNT" => "1",
"PRICE_VAT_INCLUDE" => "Y",
"PRICE_VAT_SHOW_VALUE" => "N",
"USE_PRODUCT_QUANTITY" => "N",
"OFFERS_CART_PROPERTIES" => array(
),
"LINK_IBLOCK_TYPE" => "",
"LINK_IBLOCK_ID" => "",
"LINK_PROPERTY_SID" => "",
"LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#"
),
false
);?>
<?endfor;?> |