Здравствуйте!
В ходе выполнения заказа сделал небольшое решение для вывода последних просмотренных товаров посетителем, решил поделиться.
Товары (а точнее их 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;?> |