Существует свойство, от которого должна зависеть возможность купить товар. Это дата.
Т.е. до определенной даты товар можно купить, а после - уже нет. Я так понимаю, необходимо изменить значение CAN_BUY на => "N"
И если в шаблонах компонентов можно просто выводить кнопку "Купить" в зависимости от этого свойства, то как реализовать зависимость в корзине?
Получается пользователь добавляет товар в корзину и забывает о покупке. За это время наступила дата окончания покупки.
Как заблокировать возможность покупки уже добавленного в корзину товара в зависимости от свойства? И в каком файле это лучше делать?
Пробовала так - прямо в шаблоне корзины:
[CODE]$db_props = CIBlockElement::GetProperty("3", $arBasketItems["PRODUCT_ID"], "sort", "asc", Array("CODE"=>"SPECOFFER_END" );
if($ar_props = $db_props->Fetch())
{
$action_end = MakeTimeStamp($ar_props["VALUE"], FORMAT_DATETIME);
$date_now = time();
if ($action_end < $date_now)
{
$arBasketItems["CAN_BUY"] = "N";
$arBasketItems["~CAN_BUY"] = "N";
}
else
{
$arBasketItems["CAN_BUY"] = "Y";
$arBasketItems["~CAN_BUY"] = "Y";
}
}
[/CODE]Для проверки вывожу значение CAN_BUY[CODE]echo $arBasketItems["CAN_BUY"]; [/CODE]
При этом в форме в списке элементов выводит значение "N", для тех элементов, у которых дата уже прошла.
Но при
<?
echo "<pre>";
print_r($arResult);
echo "</pre>";
?>
[CAN_BUY] => Y у всех елементов
Пробовала вносить изменения в самом компоненте корзины:
[CODE]$dbBasketItems = CSaleBasket::GetList(
array(),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"ORDER_ID" => "NULL",
"ID" => $id,
),
false,
false,
array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "CURRENCY")
);
if($arBasket = $dbBasketItems->Fetch())
{
$db_props = CIBlockElement::GetProperty("3", $arBasket["PRODUCT_ID"], "sort", "asc", Array("CODE"=>"SPECOFFER_END"));
if($ar_props = $db_props->Fetch())
{
$action_end = MakeTimeStamp($ar_props["VALUE"], FORMAT_DATETIME);
$date_now = time();
if ($action_end < $date_now)
CSaleBasket::Update($arBasket["ID"], Array("CAN_BUY" => "N"));
} [/CODE] Не получается ((((
Думаю, что изменения необходимо производить в компоненте или в result_modifier.php
Но не хватает знаний, чтобы это реализовать.
Подскажите, пожалуйста, как лучше сделать?