Wie überspringe ich die Überfahreinformationen des Onepage -Checkouts?
-
16-10-2019 - |
Frage
Ich habe eine neue Option als erstellt als pickup @ office
im Abschnitt zur Abrechnungsabteilung von Onepage anstelle der beiden anderen Optionen Ship to this address
Ship to different address
. Wenn der Kunde dies auswählt pickup @ office
Option er kann jede Adresse für die Abrechnungsadresse verwenden. Die Versandadresse wird jedoch progametisch festgelegt. Ich habe diesen Schritt gemacht. Was ich als nächstes tun möchte, ist, direkt zur shipping methods
Abschnitt durch Überspringen shipping address
. Denn dies gibt es einen besseren Weg, außer OnepageController.php zu überschreiben.
Alle Vorschläge werden geschätzt. Danke im Voraus.
Lösung
Schließlich war dies die einzige Lösung, die ich finden konnte. Müssen den Controller überschreiben Mage_Checkout_OnepageController
config.xml
<config>
. . . . . .
<global>
<rewrite>
<test_cart> <!--This can be any unique id -->
<from><![CDATA[#^/checkout/onepage/#]]></from> <!-- the URL which u want to override-->
<to>/mymodule/onepage/</to> <!-- destination url -->
</test_cart>
</rewrite>
. . . . .
</global>
. . . . . .
</config>
app code local myNameSpace MyModule Controllers OnepageController.php
<?php
require_once 'Mage/Checkout/controllers/OnepageController.php';
class Mynamespace_Mymodule_OnepageController extends Mage_Checkout_OnepageController
{
public function saveBillingAction()
{
if ($this->_expireAjax()) {
return;
}
if ($this->getRequest()->isPost()) {
// $postData = $this->getRequest()->getPost('billing', array());
// $data = $this->_filterPostData($postData);
$data = $this->getRequest()->getPost('billing', array());
$customerAddressId = $this->getRequest()->getPost('billing_address_id', false);
if (isset($data['email'])) {
$data['email'] = trim($data['email']);
}
$result = $this->getOnepage()->saveBilling($data, $customerAddressId);
if (!isset($result['error'])) {
/* check quote for virtual */
if ($this->getOnepage()->getQuote()->isVirtual()) {
$result['goto_section'] = 'payment';
$result['update_section'] = array(
'name' => 'payment-method',
'html' => $this->_getPaymentMethodsHtml()
);
} elseif (isset($data['use_for_shipping']) && $data['use_for_shipping'] == 1) {
$result['goto_section'] = 'shipping_method';
$result['update_section'] = array(
'name' => 'shipping-method',
'html' => $this->_getShippingMethodsHtml()
);
$result['allow_sections'] = array('shipping');
$result['duplicateBillingInfo'] = 'true';
} else {
$result['goto_section'] = 'shipping_method'; // set the checkout step which you want to move
}
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
}
}
}