Tek sayfalık ödeme işlemine bir adım eklemeyi kolaylaştıran herhangi bir uzantı, açık kaynaklı Magento modülü veya öğretici var mı? Bunun için birkaç kez çekirdek kodu poked ve sabit kodlanmış adım bilgileri bir sürü gibi görünüyor.
Tek sayfalık ödeme işlemine bir adım eklemeyi kolaylaştıran herhangi bir uzantı, açık kaynaklı Magento modülü veya öğretici var mı? Bunun için birkaç kez çekirdek kodu poked ve sabit kodlanmış adım bilgileri bir sürü gibi görünüyor.
Yanıtlar:
Bu sorunun kısa cevabı "Hayır" oldu. Yüksek bir seviyeden, yeni bir ödeme adımı eklemek
Tek adımlı ödeme sayfasına yeni bir Blok ekleme
Bu bloğun bir adım olarak kendini kaydettirmesi
Bu bloğu, tüm etkileşimleri işleyen bir prototip nesnesiyle bağlayın
Bloğu adım olarak eklemek için birkaç temel Magento yöntemini yeniden yazma
Bazı ajax hile ilerleme şeyler işe almak için.
Toplamı kapsamak, tek bir Stack Overflow sorusunun kapsamı dışındadır. Başka bir soruya bağlı öğretici , ihtiyacınız olan şeylerin çoğuna sahiptir ve ayrıca tüm bunları kolaylaştırmak için yeni bir ticari uzantı oluşturdum .
Varsayılan olarak magento bazı ödeme adımları verir. Ancak bazen ileride başvurmak üzere müşteriden ek bilgi eklemeniz gerekir. Sıkça istenen bir özelleştirme, Özel Form'u varsayılan ödeme işlemine eklemektir. Temel dosyalara dokunmak iyi bir uygulama değildir. Bunu Modülleri geçersiz kılarak yapabilirsiniz. Bu örnekte Comapnyname Ipragmatech ve Modül adı Checkoutstep'dir .
Adım 1: Ödeme işlemine Özel adım ekleyin
Ipragmatech> Checkoutstep> Engelle> Sayfa>> Checkoutstep.php dosyasını açın ve aşağıdaki kodu yazın
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();
}
}
Adım 2: Ödeme işleminde istediğiniz ve istediğiniz adımları ekleyin
Ipragmatech> Checkoutstep> Engelle> Sayfa>> Checkoutstep.php dosyasını açın ve aşağıdaki kodu yazın
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. Adım: Özel formun gönderilen değerini alın ve Özel formun değerlerini ayarlayın
İpragmatech> Checkoutstep> denetleyiciler> OnepageController.php dosyasını açın ve aşağıdaki işlevi yazın
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. Adım: Özel Form bilgilerini kaydedin
Checkout_onepage_controller_success_action olay kancası çağrıldığında. Ipragmatech> Checkoutstep> Model> Observer.php dosyasını açın ve aşağıdakileri yazın
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 Uzantısında Özel Form Ekle, e-ticaret web siteniz için Checkout işlemine ek adım eklemek için eksiksiz bir çözümdür. Yöneticinin CSV biçiminde özel tablodan veri dışa aktarmasına izin verir.
Bu ücretsiz uzantıyı edinmek için bağlantıyı ziyaret edin http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html
evet burada bu konuda iyi bir öğretici var " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "