Как сделать форму быстрого заказа без подключения магазина

Аватар пользователя serafimm serafimm 24 марта в 18:34

Интересует вопрос есть ли модули быстрого заказа в друпал9? В друпал7 были такие модули по типу "купить в 1 клик", но они не распространяются на друпал 9. Или может как возможно связать форму с товаром для быстрой заявки без подключения магазина?

Комментарии

Аватар пользователя OldWarrior OldWarrior 24 марта в 19:39

Можно посмотреть в сторону paragraphs, как пользовательского набора полей для заказа/заявки. Или даже ноды отдельного типа для заказа. Или и то, и другое вместе. Но всё равно нужен будет некий кастом в виде кода.

PS. О, про webform же забыл. А много товаров? И сколько разных может быть в одной заявке/заказе?

Аватар пользователя serafimm serafimm 24 марта в 20:13

Товаров не больше 10ти. Какая связать вебформу и ноду товара? Знаю что через токены можно. Но не знаю как и куда технически токен вбивать, какие поля использовать для токенов. И дт. Да и форма в друпал9 по конструкции сложнее чем в друпал7

Аватар пользователя serafimm serafimm 25 марта в 8:41

Нужен функционал такой, карточка товара с кнопкой заказа, нажимаем на кнопку заказать, открывается модальное окно с полями телефон, имя. После ввода своих данных, клиент нажимает кнопку "отправить". На почту приходит заказ с наименованием товара и данными заказчика имя, телефон.

Аватар пользователя gun_dose gun_dose 25 марта в 9:17
1

OldWarrior wrote: Можно посмотреть в сторону paragraphs

Нет, нельзя! Причём тут вообще параграфы? Почему все так любят пришить параграфы вот прямо везде, не думаю об уместности этого действа?

serafimm wrote: Какая связать вебформу и ноду товара?

В отправлении вебформы всегда есть поле страницы, откуда её отправили. Если этого недостаточно, то добавить виджет entity_reverence_autocomplete, записать токен в значение по умолчанию. И добавить там же в через админку формы display:none.

serafimm wrote: Да и форма в друпал9 по конструкции сложнее чем в друпал7

И что? Компьютер сложнее, чем счёты, поэтому давайте будем пользоваться счётами вместо компьютеров

Аватар пользователя serafimm serafimm 25 марта в 9:25

Дело в том что веб форма по функционалу в друпал9 стала сложнее, хотя понятно что и лучше. Но и разобраться стало сложнее, поэтому и пишу сюда в надежде на конструктивную помощь

Аватар пользователя OldWarrior OldWarrior 25 марта в 9:25

gun_dose wrote: Причём тут вообще параграфы?

Да просто самая простая основа сущности. Как бы - универсальная. Я, к слову, когда-то собирал магазин на параграфах.

gun_dose wrote: В отправлении вебформы всегда есть поле страницы, откуда её отправили.

А если все товары размещены только на одной странице?

Аватар пользователя marassa marassa 25 марта в 10:10

OldWarrior wrote: Да просто самая простая основа сущности

А что такое "основа сущности"? Может мне тоже надо?

Аватар пользователя OldWarrior OldWarrior 25 марта в 10:21

Надеюсь, это не сарказм Smile

На самом деле удобная особенность параграфов - возможность строить inline-формы этих сущностей с множественными рядами. То есть, например в гипотетической ноде заказа имеем поле типа entity_reference_revision, ссылающееся на сущность параграфа. Каждый связанный параграф в свою очередь является описателем заказанного товара с помощью кастомного набора полей: например, ID, название, вес, кол-во в заказе, цена, признак скидки и т.д. и т.п... Соответственно, все выбранные товары сохраняется вместе с нодой заказа.

Это как очень поверхностный пример реализации самого простого магазина-витрины без установки монстров типа Commerce. Да, тут без некоторого кодирования не обойтись, я уже писал об этом выше.

Аватар пользователя gun_dose gun_dose 25 марта в 10:26

Основа параграфа в том, что у него нет контроллера и его довольно затруднительно просмотреть в отрыве от родительской сущности. Это значит, что нужно анониму дать права на создания параграфов в ноде товара. Это значит, что каждый раз нода будет пересохраняться. А когда её купит 1000 человек, она будет грузиться 10 секунд.

А ещё давайте не будем забывать, что в магазине, помимо покупателя, есть ещё и продавец, который наверняка хотел бы получать уведомления о заказах.

Аватар пользователя OldWarrior OldWarrior 25 марта в 11:15

Да, всё написанное вами абсолютно верно. Нужно писать контроллер (впрочем, не такой уж сложный) и я его писал. Нужно уведомлять админа и тут я тоже писал код. И ещё ряд вещей решается программно. То есть - кодить всё же нужно.

А так - всё верно, за исключением (в моём случае) некоторых моментов. Самое основное: нода - не товар, а заказ. Для товара служат отдельные ноды (содержащие, к слову тот же тип экземпляр параграфа - описателя товара). А вот в заказ (т.е. в конечную ноду) при оформлении копируется значение параграфа из ноды товара.

Кажется сложно, но те же манипуляции с Commerce здесь были бы сложнее, а совсем простые решения а-ля webform не покрывают все нужды этого конкретного проекта. Там по сути есть всего несколько товаров, но они изготавливаются под заказ с рядом сложных параметров.

Аватар пользователя marassa marassa 25 марта в 10:28

Понял, спасибо. Просто термин "основа сущности" показался непонятным, вот и спросил.

Аватар пользователя gun_dose gun_dose 25 марта в 10:27

serafimm wrote: Но и разобраться стало сложнее

Там всё очень просто. Спрашивайте лучше, с чем именно в вебформах вы не можете разобраться.

Аватар пользователя serafimm serafimm 25 марта в 10:30

если делать связку товара с фебформой для быстрой заявки как технически происходит связка?

Аватар пользователя gun_dose gun_dose 25 марта в 10:48

Самый простой способ - одна вебформа для всех товаров. Блок с вебформой помещаем на страницу товара. Этого уже достаточно для того, чтобы в отправлении вебформы была указана ссылка на страницу товара.
Если нужно ещё какие-то данные из товара передавать в форму, можно добавить в форму поля типа hidden, задать им значения по умолчанию через токены.

Аватар пользователя serafimm serafimm 25 марта в 10:54

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