2017-11-10 2 views

Antwort

0

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.

  1. Eine Adresse von BO, lassen Sie uns sagen, es hat id_address = 2

  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(); 
    } 
    } 
} 
  1. Ü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 
    } 
} 
  1. Aufschalten Wagen haben eine immer gültige Adresse

Betätigung/classes/Cart.php

class Cart extends CartCore { 
    public function checkAndUpdateAddresses(){ 
    return true; // always valid 
    } 
} 
  1. 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: no address confirmed

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

Verwandte Themen