Dodajemy obrazek (logo) do metody płatności zapłać gotówką płatność przy odbiorze (Cash on delivery – COD) w Prestashop 8, 1.7

Dwa ostatnie artykuły poświęciliśmy modułowi Płatności elektroniczne, pierwszy artykuł był poświęcony jego prawidłowej konfiguracji, drugi ulepszeniom (m.in dodawaliśmy obrazek w karcie zamówienia dla tej metody płatności). Dzisiaj zajmiemy się innym modułem płatności – Płatność przy odbiorze (Cash on delivery – COD).

W zakresie konfiguracji, nie ma tutaj czego analizować, moduł nie udostępnia dodatkowych ustawień, ale dokładnie tak jak w przypadku modułu Płatności elektroniczne możemy pokazać jak go nadpisać aby dodać do niego obrazek w karcie zamówienia (checkout).

Nadpisanie będzie tutaj wyglądało w analogiczny sposób jak poprzednio. Jeśli masz wątpliwości po prostu wróć do artykułu gdzie nadpisywaliśmy moduł Płatności elektroniczne – pracowaliśmy wówczas w celu uzyskania tego samego efektu i opisaliśmy to trochę bardziej szczegółowo.

Zaczynajmy,

Plik, który tym razem nas interesuje to ps_cashondelivery.php, znajduje się oczywiście w głównym katalogu modułu ps_cashondelivery – podajemy ścieżkę do tego pliku:

../modules/ps_cashondelivery/ps_cashondelivery.php

W pliku modułu ps_cashondelivery.php szukamy funkcji hookPaymentOptions, wklejamy ją w całości w nowej klasie nadpisującej Ps_CashondeliveryOverride.

Całość poprzedzamy:

use PrestaShop\PrestaShop\Core\Payment\PaymentOption;

Aby wyświetlić obrazek (logo), korzystamy setLogo, obrazek cashondelivery.jpg wrzucamy do katalogu ../upload w Prestashop:

->setLogo('../upload/cashondelivery.jpg')

całość linijki wklejamy przed poniższym fragmentem kodu w funkcji hookPaymentOptions:

->setCallToActionText($this->trans('Pay by Cash on Delivery', array(), 'Modules.Cashondelivery.Shop'))

Nadpisanie wrzucamy do poniższego katalogu (wcześniej oczywiście tradycyjnie tworzymy całą strukturę folderów):

../override/modules/ps_cashondelivery/ps_cashondelivery.php

Gotowy kod nadpisania do wklejenia znajdziesz poniżej:

<?php

use PrestaShop\PrestaShop\Core\Payment\PaymentOption;


class Ps_CashondeliveryOverride extends Ps_Cashondelivery
{
  
    public function hookPaymentOptions($params)
    {
        if (!$this->active) {
            return;
        }

        // Check if cart has product download
        if ($this->hasProductDownload($params['cart'])) {
            return;
        }

        $newOption = new PaymentOption();
        $newOption->setModuleName($this->name)
            ->setLogo('../upload/cashondelivery.jpg')
            ->setCallToActionText($this->trans('Pay by Cash on Delivery', array(), 'Modules.Cashondelivery.Shop'))
            ->setAction($this->context->link->getModuleLink($this->name, 'validation', array(), true))
            ->setAdditionalInformation($this->fetch('module:ps_cashondelivery/views/templates/hook/ps_cashondelivery_intro.tpl'));

        $payment_options = [
            $newOption,
        ];
        return $payment_options;
    }


}

Testujemy odświeżając kartę zamówienia. Jeśli obrazek nie jest wyświetlany, wyczyść Pamięć podręczną, sprawdź też ustawienia kompilacji szablonu.

Ustawienia kompilacji szablonu


Jeśli ustalasz obrazek tylko dla modułu Płatność przy odbiorze (COD) i nie skorzystałeś wcześniej z naszego poradnika Jak dodać obrazek (logo) do metody płatności zapłać przelewem przelew bankowy w Prestashop 1.7 – ulepszamy UX modułu Płatności elektroniczne, doklej poniższe reguły css do pliku custom.css w szablonie dziecku:

../themes/child_classic/assets/css/custom.css

Poniższe reguły poprawią kontekst wizualny całości modyfikacji. Jeśli wklejałeś je przy okazji artykułu na ten sam temat ale dotyczącego modułu Płatności elektroniczne, pomiń ten krok:

body#checkout section.checkout-step .payment-options .payment-option {
display: flex;
align-items: center;
}

body#checkout section.checkout-step .payment-options label {
display: flex;
align-items: center;
margin-bottom: 0rem;
}

body#checkout section.checkout-step .payment-options label img {
margin-left: 0.7rem;
border: 1px solid #ccc;
}

Odświeżamy, jeśli zmiany nie są widoczne – czyścimy Pamięć podręczną (Zaawansowane – Wydajność – przycisk Wyczyść pamięć podręczną).

GOTOWE! Modyfikacja wygląda jak poniżej:

Obrazek dla metody płatności Płatność przy odbiorze Cash on Delivery COD Prestashop 1.7




Przewiń do góry