Цитата |
---|
Алексей Кузнецов пишет: Александр, а почему именно этот компонент? Как отправить что-то на почту - понятно. Я не понял как, например, при клике на определенном товаре на кнопку "заказ" в форму будут передаваться параметры именно этого товара (наименование, цвет и пр.) |
Ну это подход который я бы назвал классическим) Инфоблок "заказы", где каждый элемент - это заказ. У инфоблока "заказы" есть свойство - привязка к элементам инфоблока "товары"
Более подробно могу описать примерно так:
У вас есть детальная страница товара с компонентом catalog.element.detail, в шаблоне которого есть кнопка "купить"
На кнопку купить навешиваете открытие fancybox в режиме ajax, передавая через POST id элемента (товара который покупаем)
Fancybox открывает в попап-окне страницу с компонентом iblock.element.add.form без визуальной части хедера и футера шаблона сайта, где в hidden input (как раз то свойство-привязка) уже забит id переданного через POST элемента. Очень желательно еще проверить чтобы этот ID принадлежал именно инфоблоку товаров, т.к. его можно легко подменить.
Юзер вбивает необходимые данные для связи с ним в поля формы компонента добавления элемента инфоблока "заказы". (это могут быть свойства или такие поля как анонсный текст, подробный текст и т.д.)
Юзер нажимает ОК, в сразу после этого происходит добавление элемента (заказа) в инфоблок "заказы" со всей необходимой информацией о покупателе, и, что самое главное, с привязанным элементом-товаром.
Чтобы отправилось письмо в отдел продаж , необходимо создать почтовое событие, шаблон почтового события и обработчик события добавления элемента инфоблока наприме OnAfterIBlockElementAdd(); В котором вы отправляете все данные заказа по почте через почтовое событие битрикса, например:
Код |
---|
function OnAfterIBlockElementAddHandler($arFields)
{
if (CModule::IncludeModule("iblock")):
if ($arFields["IBLOCK_ID"] == 6) {
$arSend = array(
'ID' => $arFields['ID'],
'NAME' => $arFields['NAME'],
'ORDER' => $arFields['PREVIEW_TEXT'],
'COMMENTS' => $arFields['DETAIL_TEXT'],
'PHONE' => $arFields['PROPERTY_VALUES'][28],
'ADDRESS' => $arFields['PROPERTY_VALUES'][29],
'EMAIL' => $arFields['PROPERTY_VALUES'][30]
);
CEvent::Send('ADD_ORDER ',SITE_ID,$arSend);
}
endif;
} |
Можно делать и без свойства-привязки, а со строковым свойством (просто наименование элемента в текстовое поле какое-нибудь передавать).
UPD Можно и без аякса сделать, например в component_epliog карточки товара выводить попап (display:none) с компонентом добавления инфоблока и уже с нужным параметром ID, но думаю это не комильфо)