[php] Magento - атрибут товара / заказа товара / товара на основе ввода пользователем



Answers

Можно добавить пользовательские поля в элемент Quote. Как добавить пользовательские поля для позиций заказа в Magento для начала работы. Я недавно использовал эту инструкцию, чтобы добавить настраиваемые поля в пункт Quote Magento, и концепция прекрасна, но в этой статье есть несколько практических примеров, которые невелики. Вещи, которые я буду делать по-другому:

  1. Используйте сценарий установки, чтобы добавлять поля в базу данных, а не делать это напрямую.
  2. Используйте объект запроса Magento, а не напрямую обращайтесь к $ _REQUEST.
  3. Используйте расширения и переписывайте, а не модифицируйте ядро ​​Magento.
  4. Внесите изменения в config.xml из расширения, а не в изменение ядра.

Как правило, лучше избегать модификации ядра Magento и применять свои настройки через модуль, поскольку это облегчает или улучшает возможности обновления в будущем. Если вы не создали свое собственное расширение до того, как moduleCreator поможет вам создать необходимый шаблон.

Question

Резюме

Я хочу создать атрибут продукта, который не сохраняется в продуктах, или отображается на странице редактирования продукта, как обычные атрибуты продукта. Вместо этого я хочу, чтобы он был сохранен в позиции заказа / котировки и отображался по заказам, счетам и тому подобным. Он также должен быть настроен клиентом в интерфейсе перед добавлением продукта в корзину.

Детали

  • Как и в случае с пользовательскими опциями , элемент формы должен быть добавлен на страницу продукта frontend.
    • В отличие от пользовательских параметров, это не фактический атрибут продукта. Он не должен отображаться на страницах продукта или наборов атрибутов администратора.
    • Клиент должен предоставить действительное значение. Мне нужно сделать проверку на стороне сервера.
    • Я хочу создать шаблон .phtml, создающий его html. В настоящее время я могу переопределить приложение / дизайн / frontend / base / default / catalog / product / view / type / default.phtml с удовлетворительными (проектными) результатами. Однако я не знаю, как захватить, подтвердить и в конечном итоге сохранить его ценность.
  • Значение этого элемента формы должно быть сохранено с помощью элемента товара quote / order.
    • Это значение должно отображаться на всех счетах, заказах, электронных почтовых отправлениях.
    • Я хочу управлять выходом с помощью шаблона или, по крайней мере, иметь возможность возвращать строку, которая используется для отображения значения

Мои вопросы

  1. Как проверить и, в конечном итоге, сохранить значение с <input> на странице продукта frontend в элементе котировки, когда продукт добавлен в корзину, а затем в процессе оформления заказа в элемент заказа?
  2. Как отобразить это значение в заказе, счете-фактуре, торговых письмах и таких страницах?
  3. Как я могу отфильтровать коллекцию заказов для извлечения заказов, у которых есть элементы с моим значением, заданным для определенного значения?

Обновление 1

Я обнаружил, что я могу запустить этот код в catalog/product модели catalog/product (и, вероятно, sales/quote_item ) во время таких событий, как sales_quote_item_qty_set_after

$infoBuyRequest = $product->getCustomOption('info_buyRequest');
$buyRequest = new Varien_Object(unserialize($infoBuyRequest->getValue()));
$myData = $buyRequest->getMyData();

Таким образом, я смог получить мои пользовательские данные, предоставленные клиентом, с моего <input> на странице продукта.

Я подозреваю, что этот info_buyRequest сохраняется с элементами котировки и заказа. Если это так, это частично разрешило мои проблемы 1 и 2. Однако я до сих пор не знаю, где это подходит для запуска этого кода, и я не знаю, как отображать его на страницах бэкэнда / цитаты / отчета. Кроме того, я считаю, что, поскольку это хранится как сериализованное значение в базе данных, будет очень сложно получить коллекции котировок / заказов на основе моих пользовательских данных.




Related



Tags

php php   magento