Создайте обработчик события добавления в корзину. Вот примерный код обработчика (я не проверял его) для D7. Для старого ядра есть тоже события там несколько иначе, но суть та же. Подключите на событие и он будет дополнять название и добавлять свойства, полагаю, товар встанет разными строками (но не уверен)
| Код |
|---|
use Bitrix\Main\Application;
static function OnSaleBasketItemSaved(\Bitrix\Main\Event $event)
{
$request = Application::getInstance()->getContext()->getRequest();
// предположим, что текст для печати у вас в $_GET['print']
$print = htmlspecialchars($request->getQuery("print"));
if ($print != '')
{
$parameters = $event->getParameters();
/** @var Sale\BasketItem $basketItem */
$basketItem = $parameters['ENTITY'];
$isNew = $parameters['IS_NEW'];
if ($isNew)
{
if (!$basketItem instanceof \Bitrix\Sale\BasketItem)
{
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
new \Bitrix\Sale\ResultError(\Bitrix\Main\Localization\Loc::getMessage('SALE_EVENT_COMPATIBILITY_WRONG_BASKET'), 'SALE_EVENT_COMPATIBILITY_BASKET_ITEM_BEFORE_CHANGE_WRONG_BASKET'),
'sale'
);
}
$obCollection = $basketItem->getPropertyCollection();
$arProps = $obCollection->getPropertyValues();
// Делаем уникаьное название товару в корзине
// доавляя туда текст для печати
$newName = $basketItem->getField('NAME').' '.$print;
// добавляем дополнительные свойства
$arProps = [];
$arProps[] = array( "NAME" => 'Текст для печати', "CODE"=> 'PRINT', "VALUE" =>$print, "SORT" => 1 );
$arProps[] = array( "NAME" => 'Еще нужное вам свойтво', "CODE"=> 'YOURPROP', "VALUE" =>'value_of_your_prop', "SORT" => 2 );
$basketItem->setField('NAME', $newName);
$obCollection->setProperty($arProps);
$basketItem->save();
}
}
}
|
Есть проблема с ЧПУ умного фильтра. Голосуйте за