Commerce: ввод в поле товара перед покупкой

Главные вкладки

Аватар пользователя Nick Fedchik Nick Fedchik 8 февраля 2013 в 17:55

Пытаюсь решить такую задачу

Есть товар - софт.
При его покупке к каждому покупаемому экземпляру надо сделать так, чтобы покупатель вводил некоторый уникальный для товара код.

Пытаюсь прикрутить к сущности "Товар" текстовое поле, куда пользователь должен буде ввести код.
Без кода товар продаваться не должен, т.е. код разрешает купить товар.
Проверка кода - отдельная песня, может быть что и кастомным модулем.
Но сейчас заткнулся на том, чтобы поле выводилось редактируемым - либо до нажатия кнопки "Добавить корзину", либо позже при оформлении заказа.

Есть ли какие идеи или альтернативные решения?

Комментарии

Аватар пользователя Sun-fire Sun-fire 8 февраля 2013 в 19:54

На мой взгляд наиболее просто решается кастомным модулем.

Вешаем hook_form_alter() на commerce_add_to_cart_form, в нем добавляем поле, и дополнительную кастомную функцию валидации. В функции валидации проверяем совпадение введенного кода, и при необходимости выдаем пишем в массив ошибок формы сообщение, что введен не правильный код. При таком подходе поле для ввода кода будет показываться вместе с кнопкой "Добавить в корзину".

Плюс: проверка кода прямо на этапе добавления в корзину. Если товар пошел в корзину, потом на этапе оформления заказа не нужно проверять никаких полей, а также не нужно ничего добавлять к сущности товара. Т. е. минимизируем проверки, и уменьшаем размер сущности.

Минус: без кода покупатель товар в корзину не положит. Тут уже по юзабилити нужно смотреть.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 8 февраля 2013 в 20:05

"Nick Fedchik" wrote:
При его покупке к каждому покупаемому экземпляру надо сделать так, чтобы покупатель вводил некоторый уникальный для товара код.

Может чем то поможет

http://vimeo.com/31460419 - пример: кастомное поле Donation
http://drupal.org/project/commerce_coupon - купон. В принципе тот же код. Валидацию можно в правилах сделать

Аватар пользователя Nick Fedchik Nick Fedchik 13 февраля 2013 в 16:40

<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>][quote="Nick Fedchik" wrote:
http://drupal.org/project/commerce_coupon - купон. В принципе тот же код. Валидацию можно в правилах сделать

Пробовал но отказался. Что-то не получалось...

Аватар пользователя vitaboss vitaboss 8 февраля 2013 в 20:16

"Nick Fedchik" wrote:
Но сейчас заткнулся на том, чтобы поле выводилось редактируемым - либо до нажатия кнопки "Добавить корзину", либо позже при оформлении заказа.

Устанавливаем модуль custom line item, включаем...
После этого (до этого нельзя), заходим магазин> конфигурация > типы позиций > свой товар > управление полями

Создаешь нужное поле, например текстовое (у меня целые числа влияют на ценообразование и при перемножении они становятся количеством), настраиваешь. Ну и все, у товара есть поле, которое необходимо пользователю заполнить до добавления в корзину, сделай его обязательным. Во вьювсах настрой вывод этого поля в корзине.

Аватар пользователя Nick Fedchik Nick Fedchik 13 февраля 2013 в 16:42

vitaboss wrote:
"Nick Fedchik" wrote:
Но сейчас заткнулся на том, чтобы поле выводилось редактируемым - либо до нажатия кнопки "Добавить корзину", либо позже при оформлении заказа.

Устанавливаем модуль custom line item, включаем...
После этого (до этого нельзя), заходим магазин> конфигурация > типы позиций > свой товар > управление полями

Создаешь нужное поле, например текстовое (у меня целые числа влияют на ценообразование и при перемножении они становятся количеством), настраиваешь. Ну и все, у товара есть поле, которое необходимо пользователю заполнить до добавления в корзину, сделай его обязательным. Во вьювсах настрой вывод этого поля в корзине.


Вот этот вариант я реализовал.
Код можно вводить в поле (текст), можно увидеть в корзине (включил через вьювс), дальше вопрос как его обрабатывать?
Хотел обрабатывать Рулесами, чтобы не создавать еще-один-раз-нужный модуль.
Пока безуспешно - не могу добраться до этого поля и выполнить проверку хотя бы на не-пустое поле

Аватар пользователя vitaboss vitaboss 14 февраля 2013 в 14:56

"Nick Fedchik" wrote:
дальше вопрос как его обрабатывать?

В смысле? Что обрабатывать?

"Nick Fedchik" wrote:
не могу добраться до этого поля и выполнить проверку хотя бы на не-пустое поле

"vitaboss" wrote:
сделай его обязательным

У меня два поля (целые числа), ширина и высота заказываемого материала, минимальное значение 100см в каждом, максимально 500, пока пользователь не введет значения товар в корзину не добавляется. В правилах ценообразования значения полей перемножаются и результат делится на 10000 (перевожу в м.кв.) Полученное значение заменяю на количество товара. Цена у товара указана за 1 м.кв. Т.е. в корзине полный расклад по заказу. Я уверен у вас намного проще задача, так что делайте, получится...