Có bất kỳ tiện ích mở rộng, mô-đun Magento nguồn mở hoặc hướng dẫn nào giúp việc thêm một bước vào kiểm tra một trang dễ dàng hơn không? Tôi đã chọc mã lõi cho điều này một vài lần và có vẻ như có rất nhiều thông tin bước mã hóa cứng.
Có bất kỳ tiện ích mở rộng, mô-đun Magento nguồn mở hoặc hướng dẫn nào giúp việc thêm một bước vào kiểm tra một trang dễ dàng hơn không? Tôi đã chọc mã lõi cho điều này một vài lần và có vẻ như có rất nhiều thông tin bước mã hóa cứng.
Câu trả lời:
Câu trả lời ngắn cho câu hỏi này đã kết thúc là "Không". Từ cấp độ cao, thêm một bước thanh toán mới có nghĩa là
Thêm một Khối mới vào trang thanh toán một bước
Có khối đó đăng ký chính nó như là một bước
Kết nối khối đó với một đối tượng nguyên mẫu xử lý tất cả các tương tác
Viết lại một số phương thức Magento cốt lõi để chèn khối như một bước
Một số thủ thuật ajax để có được công cụ tiến độ làm việc.
Bao gồm điều này trong tổng số vượt quá phạm vi của một câu hỏi Stack Overflow duy nhất. Hướng dẫn được liên kết trong một câu hỏi khác có rất nhiều thứ bạn sẽ cần và tôi cũng đã tạo một tiện ích mở rộng thương mại mới để làm cho tất cả điều này dễ dàng hơn .
Theo mặc định magento cung cấp một số bước thanh toán. Nhưng đôi khi bạn cần thêm thông tin từ khách hàng để tham khảo trong tương lai. Một tùy chỉnh được yêu cầu phổ biến là thêm Biểu mẫu tùy chỉnh trong quy trình thanh toán mặc định. Đây không phải là thực hành tốt để chạm vào các tập tin cốt lõi. Bạn có thể làm điều này thông qua các mô-đun ghi đè. Trong ví dụ này, Comapnyname là Ipragmatech và Tên mô-đun là Checkoutstep .
Bước 1: Thêm bước Tùy chỉnh trong quy trình thanh toán
Mở tệp Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php và viết mã sau đây
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();
}
}
Bước2: Thêm các bước mà và nơi bạn muốn trong quy trình thanh toán
Mở tệp Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php và viết mã sau đây
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;
}
}
Bước 3: Lấy giá trị đã gửi của biểu mẫu tùy chỉnh và đặt các giá trị của biểu mẫu tùy chỉnh
Mở ipragmatech> Checkoutstep> bộ điều khiển> OnepageControll.php và viết fucntion sau
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));
}
}
Bước 4: Lưu thông tin Mẫu tùy chỉnh
Khi hook sự kiện checkout_onepage_controll_success_action được gọi. Mở Ipragmatech> Checkoutstep> Model> Observer.php và viết như sau
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 - Thêm biểu mẫu tùy chỉnh trong tiện ích mở rộng Checkout là một giải pháp hoàn chỉnh để thêm bước bổ sung trong quy trình Checkout cho trang web thương mại điện tử của bạn. Nó cho phép quản trị viên xuất dữ liệu từ bảng tùy chỉnh ở định dạng CSV.
Truy cập liên kết để nhận tiện ích mở rộng miễn phí này http: //www.magentoc Commerce.com/magento-connect/custom-form-in-checkout.html
vâng, có một hướng dẫn tốt về điều này ở đây " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "