Пытаюсь решить такую задачу
Есть товар - софт.
При его покупке к каждому покупаемому экземпляру надо сделать так, чтобы покупатель вводил некоторый уникальный для товара код.
Пытаюсь прикрутить к сущности "Товар" текстовое поле, куда пользователь должен буде ввести код.
Без кода товар продаваться не должен, т.е. код разрешает купить товар.
Проверка кода - отдельная песня, может быть что и кастомным модулем.
Но сейчас заткнулся на том, чтобы поле выводилось редактируемым - либо до нажатия кнопки "Добавить корзину", либо позже при оформлении заказа.
Есть ли какие идеи или альтернативные решения?
Комментарии
На мой взгляд наиболее просто решается кастомным модулем.
Вешаем hook_form_alter() на commerce_add_to_cart_form, в нем добавляем поле, и дополнительную кастомную функцию валидации. В функции валидации проверяем совпадение введенного кода, и при необходимости выдаем пишем в массив ошибок формы сообщение, что введен не правильный код. При таком подходе поле для ввода кода будет показываться вместе с кнопкой "Добавить в корзину".
Плюс: проверка кода прямо на этапе добавления в корзину. Если товар пошел в корзину, потом на этапе оформления заказа не нужно проверять никаких полей, а также не нужно ничего добавлять к сущности товара. Т. е. минимизируем проверки, и уменьшаем размер сущности.
Минус: без кода покупатель товар в корзину не положит. Тут уже по юзабилити нужно смотреть.
Может чем то поможет
http://vimeo.com/31460419 - пример: кастомное поле Donation
http://drupal.org/project/commerce_coupon - купон. В принципе тот же код. Валидацию можно в правилах сделать
Пробовал но отказался. Что-то не получалось...
Устанавливаем модуль custom line item, включаем...
После этого (до этого нельзя), заходим магазин> конфигурация > типы позиций > свой товар > управление полями
Создаешь нужное поле, например текстовое (у меня целые числа влияют на ценообразование и при перемножении они становятся количеством), настраиваешь. Ну и все, у товара есть поле, которое необходимо пользователю заполнить до добавления в корзину, сделай его обязательным. Во вьювсах настрой вывод этого поля в корзине.
Вот этот вариант я реализовал.
Код можно вводить в поле (текст), можно увидеть в корзине (включил через вьювс), дальше вопрос как его обрабатывать?
Хотел обрабатывать Рулесами, чтобы не создавать еще-один-раз-нужный модуль.
Пока безуспешно - не могу добраться до этого поля и выполнить проверку хотя бы на не-пустое поле
В смысле? Что обрабатывать?
У меня два поля (целые числа), ширина и высота заказываемого материала, минимальное значение 100см в каждом, максимально 500, пока пользователь не введет значения товар в корзину не добавляется. В правилах ценообразования значения полей перемножаются и результат делится на 10000 (перевожу в м.кв.) Полученное значение заменяю на количество товара. Цена у товара указана за 1 м.кв. Т.е. в корзине полный расклад по заказу. Я уверен у вас намного проще задача, так что делайте, получится...