В настоящий момент приобретение модуля возможно только напрямую у разработчика – Артмикс
<?$APPLICATION->IncludeComponent( "artmix:catalog.buyoneclick", ".default", array( "COMPONENT_TEMPLATE" => ".default", "IBLOCK_TYPE" => "catalog", "IBLOCK_ID" => "2", "ORDER_SITE_ID" => "s1", "BUYER_TYPE_ID" => "1", "COMMENTS" => "Быстрая покупка. Имя: #NAME#, телефон: #PHONE#", "SUCCESS_MESSAGE" => "<div class=\"ax-buyoneclick-form-msg-success-row\">Заказ №#ORDER_ID# успешно создан.</div>", "PAY_SYSTEM_ID" => "1", "DELIVERY_ID" => "", "LOCATION_ID" => "", "PRICE_ID" => "1", "CURRENCY_ID" => "", "FIELDS" => array( 0 => "NAME", 1 => "PHONE", ), "REQUIRED_FIELDS" => array( 0 => "PHONE", 1 => "", ), "PRODUCT_ID" => "", "INCLUDE_PRIMARY_JS" => "Y", "WINDOW_TYPE" => "P", "LOGOUT_CREATED_USER" => "Y", "PRODUCT_PROPERTIES" => array( ), "OFFERS_CART_PROPERTIES" => array( 0 => "COLOR_REF", 1 => "SIZES_SHOES", 2 => "SIZES_CLOTHES", ), "SEND_MAIL_SALE_NEW_ORDER" => "Y", "SEND_MAIL_ARTMIX_BUY_ONE_CLICK_SALE_NEW_ORDER" => "N", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000" ), false );?> |
<?php if (isset($arResult['OFFERS']) && !empty($arResult['OFFERS'])) { ?><a class="bx_big bx_bt_button bx_cart js-ax-buyoneclick-button" data-product-id="" href="jav * ascript:void(0)" data-obj-var-name="<?php echo $strObName; ?>" rel="nofollow">Купить в 1 клик</a><?php } else { ?><a class="bx_big bx_bt_button bx_cart js-ax-buyoneclick-button" data-product-id="<?php echo $arResult['ID'] ?>" href="jav * ascript:void(0)" rel="nofollow">Купить в 1 клик</a><?php } ?> |
<?php foreach ($arResult['ITEMS'] as $key => $arItem) { if (!isset($arItem['OFFERS']) || empty($arItem['OFFERS'])) { // ... ?> <div class="bx_catalog_item_controls"><? if ($arItem['CAN_BUY']) { // ... ?><a class="bx_bt_button bx_medium js-ax-buyoneclick-button" data-product-id="<?php echo $arItem['ID'] ?>" href="jav * ascript:void(0)" rel="nofollow">Купить в 1 клик</a><?php } ?></div><?php } else { if ('Y' == $arParams['PRODUCT_DISPLAY_MODE']) { ?><a class="bx_bt_button bx_medium js-ax-buyoneclick-button" data-product-id="" href="jav * ascript:void(0)" data-obj-var-name="<?php echo $strObName; ?>" rel="nofollow">Купить в 1 клик</a><?php } } } |
function SetOfferExample () { // Какой-то ваш код if (!!window.axBuyOnClick) { // Устанавливаем ID товара для покупки в 1 клик axBuyOnClick.setProductId(ID_ТОВАРА); } } |
<?$APPLICATION->IncludeComponent( "artmix:catalog.buyoneclick", ".default", array( "COMPONENT_TEMPLATE" => ".default", "IBLOCK_TYPE" => "catalog", "IBLOCK_ID" => "2", "ORDER_SITE_ID" => "s1", "BUYER_TYPE_ID" => "1", "COMMENTS" => "Быстрая покупка. Имя: #NAME#, телефон: #PHONE#", "SUCCESS_MESSAGE" => "<div class=\"ax-buyoneclick-form-msg-success-row\">Заказ №#ORDER_ID# успешно создан.</div>", "PAY_SYSTEM_ID" => "1", "LOCATION_ID" => "", "PRICE_ID" => "1", "CURRENCY_ID" => "", "FIELDS" => array( 0 => "NAME", 1 => "PHONE", ), "REQUIRED_FIELDS" => array( 0 => "PHONE", 1 => "", ), "PRODUCT_ID" => "", "INCLUDE_PRIMARY_JS" => "Y", "WINDOW_TYPE" => "P", "LOGOUT_CREATED_USER" => "Y", "PRODUCT_PROPERTIES" => array( ), "OFFERS_CART_PROPERTIES" => array( 0 => "COLOR_REF", 1 => "SIZES_SHOES", 2 => "SIZES_CLOTHES", ), "USE_BASKET" => "Y", "SEND_MAIL_SALE_NEW_ORDER" => "Y", "SEND_MAIL_ARTMIX_BUY_ONE_CLICK_SALE_NEW_ORDER" => "N", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000" ), false );?> |
<a class="bx_big bx_bt_button bx_cart js-ax-buyoneclick-button" href="jav * ascript:void(0)" rel="nofollow">Оформить в 1 клик</a> |
'useBasket' => $arParams['USE_BASKET'] === 'Y' ? true : false, |
<script> <?php if ($arParams['INCLUDE_PRIMARY_JS']) { ?> (function () { if (!!window.axBuyOnClick) { axBuyOnClick.setConfig(<?php echo CUtil::PhpToJSObject( array( 'requiredFields' => $arParams['REQUIRED_FIELDS'], 'productId' => (int) $arParams['PRODUCT_ID'], 'useBasket' => $arParams['USE_BASKET'] === 'Y' ? true : false, 'windowType' => is_string($arParams['WINDOW_TYPE']) ? (string) $arParams['WINDOW_TYPE'] : (bool) $arParams['WINDOW_TYPE'], 'windowContentSelector' => '#aboc-catalog-buyoneclick-wrapper', 'scrollIntoViewButton' => true, 'focusFirstRequiredField' => true, 'showUserAgreeBlock' => (bool) $arParams['SHOW_USER_AGREE_BLOCK'], 'tplErrorRow' => Loc::getMessage('ACBOC_JS_ERROR_ROW_TPL'), 'tplErrorEmailRow' => Loc::getMessage('ACBOC_JS_ERROR_EMAIL_ROW_TPL'), 'tplErrorOrderRow' => Loc::getMessage('ACBOC_JS_ERROR_ORDER_ROW_TPL'), 'tplSuccessMessage' => isset($arParams['~SUCCESS_MESSAGE']) && strlen(trim($arParams['~SUCCESS_MESSAGE'])) ? $arParams['~SUCCESS_MESSAGE'] : Loc::getMessage('ACBOC_JS_SUCCESS_MESSAGE_TPL'), 'tplErrorUserAgreeRow' => isset($arParams['~USER_AGREE_ERROR_MESSAGE']) && strlen(trim($arParams['~USER_AGREE_ERROR_MESSAGE'])) ? $arParams['~USER_AGREE_ERROR_MESSAGE'] : Loc::getMessage('ACBOC_JS_USER_AGREE_ERROR_MESSAGE_TPL') ), false, true ); ?>); } })(); <?php } ?> </script> |
<span class="btn ax-whatsapp-button js-ax-buywhatsapp-button" <?if ($haveOffers){?>data-obj-var-name="<?php echo $obName; ?>" <?}else{?>data-product-id="<?php echo $arResult['ID'] ?>"<?}?>> Купить в WhatsApp </span> |
<span class="btn ax-whatsapp-button js-ax-buywhatsapp-button"> Купить в WhatsApp </span> |
.ax-whatsapp-button { cursor: pointer; background-color: #2CB641; color: #fff; } .ax-whatsapp-button:hover { background-color: #48C658; color: #fff; } |
<sc ript> BX.addCustomEvent('onAxBuyOnClickAfterCheckingFormFields', function (errors) { console.log(['onAxBuyOnClickAfterCheckingFormFields', errors]); }); BX.addCustomEvent('onAxBuyOnClickOrderSuccessResponse', function (response) { console.log(['onAxBuyOnClickOrderSuccessResponse', response]); }); BX.addCustomEvent('onAxBuyOnClickBeforeSendOrder', function (dataPost) { }); </sc ript> |
<sc ript> <?php if ($arParams['INCLUDE_PRIMARY_JS']) { ?> var axBuyOnClickGlobalConfig = {noInit : true}; BX.loadScript('/bitrix/js/artmix.buyoneclick/buyoneclick.js', function () { var axBuyOnClickConfig, formBuyOnClick, nameFieldBuyOnClick, phoneFieldBuyOnClick; if (!!window.axBuyOnClick) { axBuyOnClick.setConfig(<?php echo CUtil::PhpToJSObject( array( 'requiredFields' => $arParams['REQUIRED_FIELDS'], 'productId' => (int) $arParams['PRODUCT_ID'], 'windowType' => is_string($arParams['WINDOW_TYPE']) ? (string) $arParams['WINDOW_TYPE'] : (bool) $arParams['WINDOW_TYPE'], 'windowContentSelector' => '#aboc-catalog-buyoneclick-wrapper', 'scrollIntoViewButton' => true, 'focusFirstRequiredField' => true, 'tplErrorRow' => Loc::getMessage('ACBOC_JS_ERROR_ROW_TPL'), 'tplErrorEmailRow' => Loc::getMessage('ACBOC_JS_ERROR_EMAIL_ROW_TPL'), 'tplErrorOrderRow' => Loc::getMessage('ACBOC_JS_ERROR_ORDER_ROW_TPL'), 'tplSuccessMessage' => isset($arParams['~SUCCESS_MESSAGE']) && strlen(trim($arParams['~SUCCESS_MESSAGE'])) ? $arParams['~SUCCESS_MESSAGE'] : Loc::getMessage('ACBOC_JS_SUCCESS_MESSAGE_TPL') ), false, true ); ?>); axBuyOnClick.unBindEvents(); axBuyOnClick.bindEvents(); axBuyOnClickConfig = axBuyOnClick.getParams(); formBuyOnClick = document.getElementById(axBuyOnClickConfig.form_id); if (!!formBuyOnClick) { nameFieldBuyOnClick = formBuyOnClick.querySelector('input[name="NAME"]'); phoneFieldBuyOnClick = formBuyOnClick.querySelector('input[name="PHONE"]'); if (!!nameFieldBuyOnClick) { nameFieldBuyOnClick.focus(); } if (!!phoneFieldBuyOnClick) { $(phoneFieldBuyOnClick).mask('+7 (999) 999-99-99'); } } } }); <?php } ?> </sc ript> |
<sc ript> BX.addCustomEvent('onAxBuyOnClickOrderSuccessResponse', function (response) { if ( response && response.STATUS && response.STATUS == 'OK' && !!response.ORDER && !!response.SITE && !!response.PRODUCTS && response.PRODUCTS.length > 0 ) { ga('require', 'ecommerce', 'ecommerce.js'); ga('ecommerce:addTransaction', { 'id': response.ORDER.ACCOUNT_NUMBER, 'affiliation': response.SITE.NAME, 'revenue': response.ORDER.PRICE, 'shipping': response.ORDER.PRICE_DELIVERY, 'tax': '' }); for (var p = 0; p < response.PRODUCTS.length; p++) { ga('ecommerce:addItem', { 'id': response.ORDER.ACCOUNT_NUMBER, 'name': response.PRODUCTS[p].NAME, 'sku': response.PRODUCTS[p].PRODUCT_ID, 'category': response.PRODUCTS[p].CATEGORY, 'price': response.PRODUCTS[p].PRICE, 'quantity': response.PRODUCTS[p].QUANTITY }); } ga('ecommerce:send'); } }); </sc ript> |
<input class="js-ax-buyoneclick-product-quantity" type="number" name="quantity" value="" data-product-id="<?php echo $arResult['ID'] ?>"> |
<sc ript> BX.addCustomEvent('onAxBuyOnClickBeforeSendOrder', function (dataPost) { var productId = 0; for (let key in dataPost) { if(dataPost[key].name == 'product_id'){ productId = dataPost[key].value; break; } } var quantity = document.querySelector('.js-ax-buyoneclick-product-quantity[data-product-id="'+ productId +'"]'); if (!!quantity && quantity.value) { dataPost[dataPost.length] = { name: 'aboc_quantity', value: quantity.value }; } }); </sc ript> |
\Bitrix\Main\EventManager::getInstance()->addEventHandler('artmix.buyoneclick', 'onBeforeCalculatedPriceProduct', function (\Bitrix\Main\Event $e) { $productQuantity = Bitrix\Main\Context::getCurrent()->getRequest()->getPost('aboc_quantity'); if (isset($productQuantity) && floatval($productQuantity) > 0) { return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, [ 'QUANTITY' => floatval($productQuantity), ] ); } } ); |
\Bitrix\Main\EventManager::getInstance()->addEventHandler('artmix.buyoneclick', 'onBeforeGetCurrentUserId', function (\Bitrix\Main\Event $e) { global $USER; if (!(is_object($USER) && $USER instanceof \CUser)) { $USER = new \CUser(); } // Какая-то логика $USER->Authorize(16); } ); |
<sc ript> // Скрываем форму, после успешной отправки BX.addCustomEvent('onAxBuyOnClickOrderSuccessResponse', function (response) { var formWrap, j; if (response && response.STATUS && response.STATUS == 'OK') { formWrap = document.querySelectorAll('.js-ax-buyoneclick-form .form-field-wrap'); if (!!formWrap) { for (j = 0; j < formWrap.length; ++j) { formWrap[j].style.display = 'none'; } } } }); // Показываем форму, если она была скрыта BX.addCustomEvent('onAfterPopupShow', function (popupWindow) { var formWrap, j; if ( popupWindow && !!popupWindow.contentContainer ) { formWrap = popupWindow.contentContainer.querySelectorAll('.js-ax-buyoneclick-form .form-field-wrap'); if (!!formWrap) { for (j = 0; j < formWrap.length; ++j) { if (formWrap[j].style.display == 'none') { formWrap[j].style.display = ''; } } } } }); </sc ript> |
<script> BX.addCustomEvent('onAxBuyOnClickOrderSuccessResponse', function (result) { var popup; if ( result && result.STATUS && result.STATUS === 'OK' && !!window.axBuyOnClick && !!window.axBuyOnClick.getPopupObject && (popup = window.axBuyOnClick.getPopupObject()) ) { setTimeout(BX.proxy(popup.close, popup), 2000); } }); </script> |
<?php \Bitrix\Main\Localization\Loc::loadMessages($_SERVER['DOCUMENT_ROOT'] . '/bitrix/components/artmix/catalog.buyoneclick/.parameters.php'); if (!(isset($arTemplateParameters) && is_array($arTemplateParameters))) { $arTemplateParameters = array(); } $arTemplateParameters['FIELDS'] = array( 'NAME' => GetMessage('ACBOC_CP_FIELDS'), 'TYPE' => 'LIST', 'MULTIPLE' => 'Y', 'PARENT' => 'BASE_GROUP', 'VALUES' => array( 'NAME' => GetMessage('ACBOC_CP_FIELDS_NAME'), 'PHONE' => GetMessage('ACBOC_CP_FIELDS_PHONE'), 'EMAIL' => GetMessage('ACBOC_CP_FIELDS_EMAIL'), 'USER_DESCRIPTION' => GetMessage('ACBOC_CP_FIELDS_USER_DESCRIPTION'), 'ADDRESS' => GetMessage('ACBOC_CP_FIELDS_ADDRESS'), ), 'DEFAULT' => array( 'NAME', 'PHONE', ), ); |
<?php /** global array $MESS */ $MESS['ACBOC_CP_FIELDS_ADDRESS'] = 'Адрес [ADDRESS]'; |
$formsParams = array( 'TEXTAREA_FIELDS' => array( 'USER_DESCRIPTION', ), 'PHONE_FIELDS' => array( 'PHONE', ), 'PHONE_MASK_FIELDS' => array( 'PHONE', ), 'EMAIL_FIELDS' => array( 'EMAIL', ), ); |
$formsParams = array( 'TEXTAREA_FIELDS' => array( 'USER_DESCRIPTION', 'ADDRESS', ), 'PHONE_FIELDS' => array( 'PHONE', ), 'PHONE_MASK_FIELDS' => array( 'PHONE', ), 'EMAIL_FIELDS' => array( 'EMAIL', ), ); |
$MESS['ACBOC_FORM_ADDRESS'] = 'Адрес'; |
Внимание! Повторная установка в демо-режиме приведет к окончанию демо‑режима и невозможности использовать модуль.