Привет,
В этом посте опишу реализацию некой "плюшки" - предоставление покупателю просмотреть детально выбранные для покупки товары, не уходя со страницы корзины.[spoiler]
Конечно, задачу можно решить "старым дедовским" способом - запихнуть максимум информации в таблицу корзины, тем самым нагромоздить страницу, увеличить количество запросов на ней и соответственно замедлить её загрузку. Я же опишу на мой взгляд более изящное решение.
Описывать решение задачи подробно не буду. Отмечу лишь основные моменты, приправлю скриншотами результатов и выложу пример готовой реализации на десерт:D
И так, кастомизируем компонент корзины и её шаблон. В папку с шаблоном компонента bitrix:sale.basket.basket кладём файлик element.php c таким содержимым:
В файле выполняется подключение компонента детального просмотра элемента каталога bitrix:catalog.element c шаблоном info (у меня так шаблон называется). Теперь создаём файл ajax.php с вызовом компонента корзины с параметром "AJAX_ITEM_CALL"=>"Y":
Для чего я передаю этот параметр, можно посмотреть в код component.php. Его также нужно подправить.
В папку \bitrix\components\<NAME_SPACE>\sale.basket.basket\templates\.default\bitrix\catalog.element\ помещаем свой шаблон компонента детального просмотра элемента каталога. У меня это папка info.
Далее в папке шаблон создаём script.js и описываем функцию ShowInfo(), которая будет делать запрос на ajax.php, генерировать форму просмотра и показывать покупателю информацию о товаре.
Теперь дело за малым в всех файлах шаблона корзины заменяем значение атрибута href у всех ссылок, которые введут на страницу детального просмотра, вызовом ShowInfo(). Входящий параметр один - идентификатор товара.
Результаты:

При нажатии на ссылку товара в корзине, появляется окно в детальной информацией о нём, без всяких прыжков по страницам. В своей реализации я сделал окно с фиксированным позиционированием в верхнем правом углу - будет бегать за вами при скроле, пока его не закроют.
Кому нравится, качаем компонент по ссылке.
Всем пока, берегите себя(с)
8)
В этом посте опишу реализацию некой "плюшки" - предоставление покупателю просмотреть детально выбранные для покупки товары, не уходя со страницы корзины.[spoiler]
Конечно, задачу можно решить "старым дедовским" способом - запихнуть максимум информации в таблицу корзины, тем самым нагромоздить страницу, увеличить количество запросов на ней и соответственно замедлить её загрузку. Я же опишу на мой взгляд более изящное решение.
Описывать решение задачи подробно не буду. Отмечу лишь основные моменты, приправлю скриншотами результатов и выложу пример готовой реализации на десерт:D
И так, кастомизируем компонент корзины и её шаблон. В папку с шаблоном компонента bitrix:sale.basket.basket кладём файлик element.php c таким содержимым:
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
CModule::IncludeModule('iblock');
$el=CIBlockElement::GetByID($_REQUEST['ID'])->Fetch();
if($el)
{
$res = CIBlock::GetProperties($el['IBLOCK_ID'], Array(), Array());
while($res_arr = $res->Fetch())
$arPropertyCodes[]=$res_arr["CODE"];
}
$APPLICATION->IncludeComponent("bitrix:catalog.element", "info", array(
"IBLOCK_ID" => $el['IBLOCK_ID'],
"ELEMENT_ID" => $_REQUEST['ID'],
"SECTION_ID" => $el["IBLOCK_SECTION_ID"],
"ACTION_VARIABLE" => "action_ololo_qweqweqweqwe",
"PRODUCT_ID_VARIABLE" => "id_ololo_qweqweqweqwe",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "3600",
"PRODUCT_PROPERTIES" => array(
),
"PROPERTY_CODE"=>$arPropertyCodes,
),
$component
);
?>
|
<?
define("STOP_STATISTICS", true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->IncludeComponent("bitrix:sale.basket.basket", "", array(
"AJAX_ITEM_CALL"=>"Y"
),
false
);
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
?> |
В папку \bitrix\components\<NAME_SPACE>\sale.basket.basket\templates\.default\bitrix\catalog.element\ помещаем свой шаблон компонента детального просмотра элемента каталога. У меня это папка info.
Далее в папке шаблон создаём script.js и описываем функцию ShowInfo(), которая будет делать запрос на ajax.php, генерировать форму просмотра и показывать покупателю информацию о товаре.
Теперь дело за малым в всех файлах шаблона корзины заменяем значение атрибута href у всех ссылок, которые введут на страницу детального просмотра, вызовом ShowInfo(). Входящий параметр один - идентификатор товара.
Результаты:

При нажатии на ссылку товара в корзине, появляется окно в детальной информацией о нём, без всяких прыжков по страницам. В своей реализации я сделал окно с фиксированным позиционированием в верхнем правом углу - будет бегать за вами при скроле, пока его не закроют.
Кому нравится, качаем компонент по ссылке.
Всем пока, берегите себя(с)
8)

