партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Универсальная галерея - модуль для битрикс
Это форум по решению для битрикс «Модуль Быстрый заказ (архив)».
Страницы: 1
Ответить
RSS
Компонент быстрого заказа на странице корзины
 
Добрый день.  Хочу купить Ваш модуль «Быстрый заказ», но мне нужна помощь в его настройке.
У меня на сайте два шаблона, которые включаются в зависимости от доменного имени (один для местной торговли, другой для торговли в другие города).
На одном шаблоне работает стандартный модуль корзины  bitrix:eshop.sale.basket.basket с которого, при нажатии «оформить заказ» осуществляется переход на bitrix:sale.order.ajax.
А вот на второй шаблон хочу установить Ваш модуль, чтобы он вызывался при нажатии кнопки «оформить заказ» в модуле корзины bitrix:eshop.sale.basket.basket. Естественно для разных шаблонов магазина будут разные шаблоны в bitrix:eshop.sale.basket.basket. Да и еще, не каких дополнительных кнопок «Быстрый заказ» в магазине быть не должно.
Что мне нужно прописать в настройках bitrix:eshop.sale.basket.basket  в строке «Страница оформления заказа:» и какие изменения нужно внести в сам модуль «быстрый заказ»
 
Алексей, здравствуйте! Если вы хотите на странице с корзиной разместить компонент, то все что вам нужно - это в шаблоне компонента корзины вытащить ID всех товаров в массив (это можно, например, сделать в файле result_modifier.php в шаблоне), а потом подставить этот массив в параметр PRODUCT_ID компонента "Быстрый заказ". Т.е. разместить компонент "Быстрый заказ" прямо в шаблоне корзины.

Вот, например, код, который соберет в массив $arResult["PRODUCT_ID"] идентификаторы всех товаров в шаблоне sale.basket.basket:

Код

$arResult["PRODUCT_ID"] = Array();


if(
$arResult["ShowReady"]=="Y"
   foreach(
$arResult["ITEMS"]["AnDelCanBuy"] as $arBasketItems)
      if(
$arBasketItems["PRODUCT_ID"])
          
$arResult["PRODUCT_ID"][] = $arBasketItems["PRODUCT_ID"];

А потом просто в файле template.php в шаблоне вы сможете подставить $arResult["PRODUCT_ID"] в параметр PRODUCT_ID в коде размещения компонента "Быстрый заказ".
 
Этот код не учитывал количество товаров в корзине, вследствие чего добавлялась только одна единица каждого товара. В версии 1.2.0 к компоненту добавлен параметр QUANTITY, в котором может содержаться количество каждого товара соответственно.

Код в шаблоне корзины, учитывающий количество, при этом должен быть таким:

Код

$arResult["PRODUCT_ID"] = Array();

$arResult["QUANTITY"] = Array();

if(
$arResult["ShowReady"]=="Y") {
   foreach(
$arResult["ITEMS"]["AnDelCanBuy"] as $arBasketItems) {
   if(
$arBasketItems["PRODUCT_ID"]) {
       
$arResult["PRODUCT_ID"][] = $arBasketItems["PRODUCT_ID"];
        
$arResult["QUANTITY"][] = $arBasketItems["QUANTITY"];
       }
   }
}

Соответственно $arResult["QUANTITY"] нужно подставить в параметр компонента QUANTITY.
 
Сергей! Спасибо за оперативную реакцию на обращение! А то уже сам нахардкодил...

Кстати у вас в коде модуля все равно идет выборка всех товаров из корзины для сохранения во временную переменную. Можно было бы оттуда заполнять PRODUCT_ID и QUANTITY если в параметрах компонента передан флаг говорящий о том, что надо заказать всю корзину, а не отдельный товар (например ALL_BASKET true/false). Тогда нет необходимости определять заранее массивы PRODUCT_ID и QUANTITY перед вызовом компонента если надо положить в заказ всю корзину. Это облегчило бы задачу по интеграции для простых пользователей. Ведь в том же Битронике это (покупка всей корзины без регистрации) не реализовано.

Прошу простить, если умничаю )))

Еще пара моментов с которыми я столкнулся:

При оформлении от зарегистрированного пользователя:
Имя и e-mail подставляется, но каждый раз просит ввести номер телефона. Из какого поля он его может брать автоматически? Поля юзера с телефонами все заполнял, не помогает.

При оформлении от НЕзарегистрированного пользователя:
Если ввести e-mail который уже вводил раньше не дает оформить заказ с ошибкой: такое e-mail уже существует. Тут вроде все ясно, но! Допустим я первый раз покупаю в один клик - указал e-mail и телефон, купил, получил уведомление на почту. В админке создался пользователь с генерируемым логином и указанным e-mail. Я как клиент в это не вникаю. Второй раз хочу купить в 1клик, указываю те же данные, но получаю ошибку, что такой e-mail уже существует, что для пользователя непонятно, он ведь купил без регистрации. Может делать проверку пользователя и если почта совпадает создавать заказ от имени уже существующего? Или просто использовать указанный e-mail только для уведомления пользователя, а не для регистрации в базе. Наверное правильнее не плодить сгенерированных пользователей и привязывать заказы к одному и тому же проверяя по e-mail и телефону.

Заранее спасибо
 
Я занимаюсь доработкой кнопки "Оформить заказ", почему вы советуете изменять шаблон "bitrix:eshop.sale.basket.basket" ? Это шаблон, который перезапишется, при обновлении битрикса и менять его нельзя. Я его копирую в папку с текущей темой, так, как сказано в вашей документации, а битрикс его просто игнорирует. С другими компонентами у меня такое получилось. Почему этот может игнорироваться?
 
Цитата
Глеб пишет:
Я занимаюсь доработкой кнопки "Оформить заказ", почему вы советуете изменять шаблон "bitrix:eshop.sale.basket.basket" ? Это шаблон, который перезапишется, при обновлении битрикса и менять его нельзя.
Глеб, я, конечно, не советую менять системный шаблон, только копировать его в шаблон сайта, а потом изменять.

Цитата
Глеб пишет:
Я его копирую в папку с текущей темой, так, как сказано в вашей документации, а битрикс его просто игнорирует.
Посмотрите, может у вас в шаблоне сайта по умолчанию (.default) уже есть такой шаблон, или проверьте имя шаблона.
 
Подскажите пожалуйста, может я что-то не правильно делаю, у меня такая структура http://joxi.ru/poi9Uv3JTJAqQVQFC0Q
Попытался для другого компонента сюда-же скопировать - сработало. .default шаблон у меня такой http://joxi.ru/NYm9Uv3JTJAeQZQXAgc
Заранее спасибо!
 
Цитата
Глеб пишет:
Подскажите пожалуйста, может я что-то не правильно делаю, у меня такая структура http://joxi.ru/poi9Uv3JTJAqQVQFC0Q
Глеб, да, неправильно, у вас там папка templates совсем ненужная, шаблон (т.е. сама папка .default) должен быть прямо в папке eshop.sale.basket.basket. Вы скопировали компонент туда, где должны быть шаблоны.
 
Цитата
Кстати у вас в коде модуля все равно идет выборка всех товаров из корзины для сохранения во временную переменную. Можно было бы оттуда заполнять PRODUCT_ID и QUANTITY если в параметрах компонента передан флаг говорящий о том, что надо заказать всю корзину, а не отдельный товар (например ALL_BASKET true/false). Тогда нет необходимости определять заранее массивы PRODUCT_ID и QUANTITY перед вызовом компонента если надо положить в заказ всю корзину. Это облегчило бы задачу по интеграции для простых пользователей. Ведь в том же Битронике это (покупка всей корзины без регистрации) не реализовано.
Я подумаю над этим, в битронике не знаю на счет покупки без регистрации, если там используется стандартный компонент заказа sale.order.ajax, то можно включить в настройках компонента возможность покупки без регистрации, правда тогда все равно придется заполнять все поля как при обычном оформлении заказа.

Цитата
Имя и e-mail подставляется, но каждый раз просит ввести номер телефона. Из какого поля он его может брать автоматически? Поля юзера с телефонами все заполнял, не помогает.
Этот момент проверю при разработке следующей версии, правда все равно в интернет-магазинах поле с телефоном в профиле мало кто заполняет...

Цитата
Если ввести e-mail который уже вводил раньше не дает оформить заказ с ошибкой: такое e-mail уже существует. Тут вроде все ясно, но! Допустим я первый раз покупаю в один клик - указал e-mail и телефон, купил, получил уведомление на почту. В админке создался пользователь с генерируемым логином и указанным e-mail. Я как клиент в это не вникаю. Второй раз хочу купить в 1клик, указываю те же данные, но получаю ошибку, что такой e-mail уже существует, что для пользователя непонятно, он ведь купил без регистрации. Может делать проверку пользователя и если почта совпадает создавать заказ от имени уже существующего?
Просто у вас наверно стоит галочка в настройках главного модуля "Проверять E-mail на уникальность при регистрации". Если ее снять, то проблемы не будет в принципе. Проверять по E-mail и привязывать к существующему - я думаю так не стоит делать все-таки, потому что если человек случайно укажет чужой E-mail, то владелец того емейла сможет зайти в аккаунт, восстановив пароль, и увидеть этот заказ, в общем тут продумывать надо...
 
Цитата
Сергей Эстрин пишет:
Глеб, да, неправильно, у вас там папка templates совсем ненужная, шаблон (т.е. сама папка .default) должен быть прямо в папке eshop.sale.basket.basket. Вы скопировали компонент туда, где должны быть шаблоны.
Разобрался, спасибо!
 
Добрый день. Не получается добавить компонент при оформлении заказа. Делаю как указано выше. Компонент появляется в меню но полностью не отображается. Прошу более подробную инструкцию.
 
Алексей, если вы не программист, наймите программиста битрикс, он разберется. Подробную инструкцию для не-программистов не имеет смысла делать, т.к. достаточно много нюансов. Я делал на одном сайте, но код у меня не сохранился, к сожалению, иначе бы выложил.
 
предыдущий вопрос касался реализации быстрого заказа в битроник
 
Сергей, а Вы могли бы выполнить эту работу?
 
Алексей, ответил вам выше, битроник или нет- это не важно.
 
Цитата
Алексей пишет:
Сергей, а Вы могли бы выполнить эту работу?
Да, могу, пишите через контакты.
Страницы: 1
Ответить
Читают тему
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки