ich es geschafft Adresse Schritt zu verstecken, indem alle Aufträge an eine einzelne Adresse zuweisen und Entfernen der Adresse Schritt von Checkout-Prozess. Nehmen wir an, Sie haben eine Adresse mit ID = 2, mit dem Code unten, alle Bestellungen werden mit dieser Adresse erstellt.
Eine Adresse von BO, lassen Sie uns sagen, es hat id_address
= 2
Haken actionDispatcher unseren Warenkorb in Datenbank zu aktualisieren
und Haken Ihr Modul actionDispatcher
modules/yourmodule/yourmodule.php:
<?php
public function hookActionDispatcher($params = []){
// every time we go to a payment controller, we update current cart id_addresses to 2
$payments_controllers = [
'ps_wirepaymentvalidationModuleFrontController',
'ps_checkpaymentvalidationModuleFrontController',
];
if($params['controller_type'] == Dispatcher::FC_FRONT &&
in_array($params['controller_class'], $payments_controllers) &&
$params['is_module']){
$cart = new Cart($this->context->cookie->id_cart);
if($cart->id_address_delivery == 0 || $cart->id_address_invoice){
$cart->id_address_delivery = 2;
$cart->id_address_invoice = 2;
$cart->update();
}
}
}
- Überschreibungsadresse mit fest codierten id_address
Betätigung/classes/Address.php:
class Address extends AddressCore {
public static function getFirstCustomerAddressId($id_customer, $active = true){
return 2; // hardcoded id_address
}
}
- Aufschalten Wagen haben eine immer gültige Adresse
Betätigung/classes/Cart.php
class Cart extends CartCore {
public function checkAndUpdateAddresses(){
return true; // always valid
}
}
- Aufschalten OrderController Betätigung/Controller/Front/OrderController.php
class OrderController extends OrderControllerCore { protected function bootstrap(){ // copy everything from https://github.com/PrestaShop/PrestaShop/blob/1.7.2.x/controllers/front/OrderController.php#L90 // but comment those lines: // ->addStep(new CheckoutAddressesStep( // $this->context, // $translator, // $this->makeAddressForm() //)) } }
Adresse Schritt Adress Schritt aus der Kasse wird nun von der versteckten entfernen Front-office:
Wenn Sie nur Schritt tun 5, werden Sie zu checkout?step=1
becaus weitergeleitet e ps_wirepayment auf cart->id_address
bei Validierung einen Scheck tun: modules/ps_wirepayment/controllers/front/validation.php
if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->module->active){
Tools::redirect('index.php?controller=order&step=1');
}
Cheers,
Florian