wdrożenia PrestaShop

2 problemy: wybór płatności oraz wybranie miejsca odbioru osobistego

  • 1 Odpowiedzi
  • 5052 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline kornolio

  • Stały użytkownik
  • ***
  • 54
  • 0
    • www.krzysztofkossek.pl
Witam,
W jednym wątku napiszę o moich dwóch bolączkach, z którymi niestety nie mogę sobie poradzić w preście 1.4.9.0.

1. WYBÓR METODY PŁATNOŚCI


Mam dwie możliwości: albo Płatne przy odbiorze lub Zapłać przez PayU.pl.
Domyślnie moduły są zrobione tak by wyświetlał się obrazek w wielkim bloku. Postanowiłem to zmienić na pola wyboru typu input radio oraz dołożenie przycisku Potwierdzam, który ma za zadanie przenieść nas na odpowiednią stronę w zależności od dokonanego wyboru.


W templatce order-payment.tpl wyrzuciłem <div id="HOOK_PAYMENT">{$HOOK_PAYMENT}</div>, a zamist jego wpisałem poniższy kod:
<form method="get" name="platnosc">
  <table>
    <tr>
     <td class="carrier_action radio"><input type="radio" name="platnosc" id="platnosc" value="odbior" onclick="java script:second_choice('odbior');" checked="checked"  /></td>
  <td><a style="padding-left: 10px; color: #444444; text-decoration: none; font: normal normal 400 11px/16px Tahoma;" href="{$this_path_ssl}validation.php" title="{l s='Pay with cash on delivery (COD)' mod='cashondelivery'}">{l s='Płatne przy odbiorze ' mod='cashondelivery'}</a></td>
    </tr>
    <tr style="background-color: #F1F2F4; text-align: left;">
     <td class="carrier_action radio"><input type="radio" name="platnosc" id="platnosc" value="c_payu" onclick="java script:second_choice('c_payu');" /></td>
     <td style="padding-left: 10px; width: 100%; height: 40px;"><a style="color: #444444; text-decoration: none; font: normal normal 400 11px/16px Tahoma; padding: 0 10 10 1px" href="{$module_dir}payment.php" title="{l s='Zapłać przez PayU.pl' mod='payu'}" style="overflow: hidden" >Zapłać przez PayU.pl</a></td>
    </tr>
  </table>
</form>
 
  <div id="choice_odbior"  >
     <div style="display:block; float:left; width:100%; height:60px; padding:10px; clear:both; ">
    <a href="{$this_path_ssl}validation.php" class="button_large" style=" display:block; float:left; clear:left; background:#99CC00; width:130px; height:30px; line-height:30px;padding:0 10px;">{l s='Potwierdzam' mod='cashondelivery'}</a>   
    </div>
  </div>
  <div id="choice_payu" style="display:none;">
      <div style="display:block; float:left; width:100%; height:60px; padding:10px; clear:both; ">
    <a href="{$module_dir}payment.php" class="button_large" style=" display:block; float:left; clear:left; background:#99CC00; width:130px; height:30px; line-height:30px;padding:0 10px;">{l s='Potwierdzam' mod='cashondelivery'}</a>   
    </div>
  </div>

<script type="text/javascript">
function second_choice(type)
{
var choice_odbior = document.getElementById('choice_odbior');
var choice_payu = document.getElementById('choice_payu');

switch(type)
{
case 'c_payu':
choice_odbior.style.display = 'none';
choice_payou.style.display = 'block';
break;

case 'odbior':

choice_odbior.style.display = 'block';
choice_payu.style.display = 'none';
break;
}
}
</script>


Czyli w założeniu polegać ma na tym, że po zaznaczeniu odpowiedniego pola, ma się pojawiać blok z odpowiednim przyciskiem choice_odbior lub choice_payu. Probelm polega na tym, że bloki się nie zmieniają, cały czas wyświetla się ten, który nie jest ukryty. A ja niestety nie mam pojęcia co jest nie tak :(


2. WYBÓR MIEJSCA ODBIORU OSOBISTEGO

Drugi problem polega na tym, że chciałem zrobić przy wyborze Odbioru osobistego listę rozwijaną z nazwą miasta, w której miałby być towar odebrany i adres placówki automatycznie byłby wysłany do klienta po złożeniu zamówienia. Z naczytanych się tematów, doszedłem jednak do wniosku, że z tym jest więcej problemu niż pożytku, więc wpadłem na inny pomysł.
Otóż, w założeniu chciałbym aby po złożeniu zamówienia, w informacji jaka zostanie przesłana klientowi był również adres sklepu najbliżej jego zamieszkania. Wykombinowałem, że można by było wykorzystać {delivery_postal_code} oraz {carrier}w /mails/order_conf.html zaraz pod polem Wysyłka.
Ogólny zaryz algorytmu:
if ( {carrier} == odbiór osobisty) {
   if ( {delivery_postal_code} == 55 | 59 | 57 )   // sprawdza tylko dwie pierwsze liczby i porównuje
             echo "odbierz paczkę we wrocławiu;
   if ( {delivery_postal_code} == 62 | 64 )
            echo "odbierz paczkę w poznaniu;
   if ( {delivery_postal_code} == 06 | 26 | 25 )
           echo "odbierz paczkę w warszawie;
}
else
{carrier}


Niestety nie wiem jak się dobrać do tych danych. A nawet jak się dobiorę, to aby się wykonał kod PHP muszę zmienić rozszerzenie pliku z html na php, co za sobą ciągnie, jak podejrzewam zmienienie również funkcji odpowiadającej za wysłanie, której to nie wiem gdzie się znajduje i co tam zmienić by się nie wysypało.
Pomysł wydaje mi się ok, i jest chyba bardziej bezpieczny od kombinowania z listą rozwijaną przy odbiorze osobistym. A może się mylę?


Także jeśli ktoś wie, to prosiłbym o wskazówki jak rozwiązać te dwa punkty.
 

*

Offline west

  • Administrator
  • Mieszkaniec
  • *****
  • 5,292
  • 106
  • Płeć: Mężczyzna
  • Europasaz.pl
    • PrestaShop, Wordpress, SMF, Woocomerce
  • PrestaShop: 8.0
  • Status: Programista
Odp: 2 problemy: wybór płatności oraz wybranie miejsca odbioru osobistego
« Odpowiedź #1 dnia: Czerwiec 11, 2013, 10:35:57 pm »
Jeśli chcesz uruchomić php to musisz dopisać funkcję do klasy "/classes" Następnie wywołać ją w pliku tpl, tam, gdzie potrzebujesz. Tak jak można dobrać się do numeru zamówienia itd. Zaś jeśli chodzi o formularz nie patrzyłem w kod ale jeśli po zaznaczeniu wywołasz zdarzenie takie jak przy wyborze płatności w standardzie to powinno być ok.
MODUŁY | https://europasaz.pl |  SKLEPY INTERNETOWE | WSPARCIE TECHNICZNE | HOSTING | https://europasaz.pl