Чи є розширення, модулі Magento з відкритим кодом або підручники, які полегшують додавання кроку до оформлення замовлення на одну сторінку? Я декілька разів натискав на основний код, і, схоже, є багато важко закодованої крокової інформації.
Чи є розширення, модулі Magento з відкритим кодом або підручники, які полегшують додавання кроку до оформлення замовлення на одну сторінку? Я декілька разів натискав на основний код, і, схоже, є багато важко закодованої крокової інформації.
Відповіді:
Коротка відповідь на це запитання виявилася "Ні". З високого рівня означало додавання нового кроку оформлення замовлення
Додавання нового блоку на сторінку однокрокового оформлення замовлення
Маючи цей блок, зареєструйте себе як крок
З'єднайте цей блок із об'єктом-прототипом, який обробляв усі взаємодії
Переписання декількох основних методів Magento, щоб вставити блок як крок
Деякі хитрощі Ajax, щоб отримати роботу з прогресом.
Загальне висвітлення цього питання виходить за межі одного питання щодо переповнення стека. Підручник, пов’язаний з іншим питанням, містить багато того, що вам знадобиться, і я також створив нове комерційне розширення, щоб полегшити все це .
За замовчуванням magento дає кілька етапів оформлення замовлення. Але десь вам потрібно буде додати додаткову інформацію від замовника для подальшого ознайомлення. Поширене запитуване налаштування - це додавання спеціальної форми в процес оформлення замовлення за замовчуванням. Це недоцільна практика торкатися основних файлів. Це можна зробити за допомогою модулів, що переважають. У цьому прикладі Comapnyname - це Ipragmatech, а назва модуля - Checkoutstep .
Крок 1. Додайте спеціальний крок у процесі оформлення замовлення
Відкрийте Ipragmatech> Checkoutstep> Block> Onepage> File Checkoutstep.php та введіть наступний код
class Ipragmatech_Checkoutstep_Block_Onepage_Checkoutstep extends Mage_Checkout_Block_Onepage_Abstract
{
protected function _construct()
{
$this->getCheckout()->setStepData('checkoutstep', array(
'label' => Mage::helper('checkout')->__('Invitation to participation'),
'is_show' => true
));
parent::_construct();
}
}
Крок 2: Додайте кроки, які і де потрібно в процесі оформлення замовлення
Відкрийте Ipragmatech> Checkoutstep> Block> Onepage> File Checkoutstep.php та введіть наступний код
class Ipragmatech_Checkoutstep_Block_Onepage extends Mage_Checkout_Block_Onepage
{
public function getSteps()
{
$steps = array();
if (!$this->isCustomerLoggedIn()) {
$steps['login'] = $this->getCheckout()->getStepData('login');
}
$stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'checkoutstep', 'review');
foreach ($stepCodes as $step) {
$steps[$step] = $this->getCheckout()->getStepData($step);
}
return $steps;
}
}
Крок 3: Візьміть подане значення власної форми та встановіть значення користувацької форми
Відкрийте ipragmatech> Checkoutstep> контролери> OnepageController.php і напишіть наступне fucntion
public function saveCheckoutstepAction()
{
$this->_expireAjax();
if ($this->getRequest()->isPost()) {
//Grab the submited value
$_entrant_name = $this->getRequest()->getPost('entrant_name',"");
$_entrant_phone = $this->getRequest()->getPost('entrant_phone',"");
$_entrant_email = $this->getRequest()->getPost('entrant_email',"");
$_permanent_address = $this->getRequest() ->getPost('permanent_address',"");
$_address = $this->getRequest()->getPost('local_address',"");
Mage::getSingleton('core/session') ->setIpragmatechCheckoutstep(serialize(array(
'entrant_name' =>$_entrant_name,
'entrant_phone' =>$_entrant_phone,
'entrant_email' =>$_entrant_email,
'permanent_address' =>$_permanent_address,
'address' =>$_address
)));
$result = array();
$redirectUrl = $this->getOnePage()->getQuote()->getPayment() ->getCheckoutRedirectUrl();
if (!$redirectUrl) {
$this->loadLayout('checkout_onepage_review');
$result['goto_section'] = 'review';
$result['update_section'] = array(
'name' => 'review',
'html' => $this->_getReviewHtml()
);
}
if ($redirectUrl) {
$result['redirect'] = $redirectUrl;
}
$this->getResponse()->setBody(Zend_Json::encode($result));
}
}
Крок 4: Збережіть інформацію про власну форму
Коли checkout_onepage_controller_success washing викликається гачок події Відкрийте Ipragmatech> Checkoutstep> Model> Observer.php і напишіть наступне
class Ipragmatech_Checkoutstep_Model_Observer {
const ORDER_ATTRIBUTE_FHC_ID = 'checkoutstep';
public function hookToOrderSaveEvent() {
if (Mage::helper('checkoutstep')->isEnabled()) {
$order = new Mage_Sales_Model_Order ();
$incrementId = Mage::getSingleton ( 'checkout/session' )->getLastRealOrderId ();
$order->loadByIncrementId ( $incrementId );
// Fetch the data
$_checkoutstep_data = null;
$_checkoutstep_data = Mage::getSingleton ( 'core/session' )->getIpragmatechCheckoutstep ();
$model = Mage::getModel ( 'checkoutstep/customerdata' )->setData ( unserialize ( $_checkoutstep_data ) );
$model->setData ( "order_id",$order["entity_id"] );
try {
$insertId = $model->save ()->getId ();
Mage::log ( "Data successfully inserted. Insert ID: " . $insertId, null, 'mylog.log');
} catch ( Exception $e ) {
Mage::log ( "EXCEPTION " . $e->getMessage (), null, 'mylog.log' );
}
}
}
}
Magento - Додайте спеціальну форму в розширення Checkout - це повне рішення, щоб додати додатковий крок у процесі оформлення замовлення для вашого веб-сайту електронної комерції. Це дозволяє адміністратору експортувати дані з власної таблиці у форматі CSV.
Перейдіть за посиланням, щоб отримати це безкоштовне розширення http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html
Так, тут є хороший підручник з цього приводу " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "