Jeden skrypt - dwie wersje językowe - jak rodzielić zamówienia?

grabek

Avatar: grabek

2009-08-28 11:01

Witam wszystkich bardzo serdecznie,

mam pytanie - w jaki sposób zmodyfikować skrypt, aby zamówienia składane na polskiej wersji językowej sklepu spływały na jeden adres e-mail, a z drugiej wersji językowej - na inny? A gdyby jeszcze ktoś wiedział, jak podzielić zamówienia, aby te składane na polskiej wersji językowej sklepu w panelu administracyjnym pokazywały się również tylko w polskiej wersji panelu, a te składane z drugiej wersji językowej - w odpowiedniej wersji językowej panelu, to byłoby super.
Jeśli chodzi o ID zamówień, to nie ma to dla mnie znaczenia - tu nie musi być podziału.

Pozdrawiam,
Jakub Grabowski

» Quick.Cart v3.x

info@grabek.net

Makaron

Avatar: Makaron

2009-08-28 15:59

Więc w katalogu db są pliki związane z zamówieniami zaczynające się od "orders" jest tych plików łącznie 10 razem ze schematami. Tworzymy kopie tych plików i dodajemy przedrostki językowe raz "en_" raz "pl_" w ten sposób, że otrzymujemy dwa komplety takich samych plików z innymi przedrostkami.
Edytujemy następnie plik config/general.php i zmieniamy linie:

$config_db['orders_temp']     = $config['dir_db'].'orders_temp.php';
$config_db['orders']          = $config['dir_db'].'orders.php';
$config_db['orders_products'] = $config['dir_db'].'orders_products.php';
$config_db['orders_comments'] = $config['dir_db'].'orders_comments.php';
$config_db['orders_status']   = $config['dir_db'].'orders_status.php';


na:

$config_db['orders_temp']     = $config['dir_db'].LANGUAGE.'_orders_temp.php';
$config_db['orders']          = $config['dir_db'].LANGUAGE.'_orders.php';
$config_db['orders_products'] = $config['dir_db'].LANGUAGE.'_orders_products.php';
$config_db['orders_comments'] = $config['dir_db'].LANGUAGE.'_orders_comments.php';
$config_db['orders_status']   = $config['dir_db'].LANGUAGE.'_orders_status.php';


Zamówienia podzielone zostają w ten sposób na wersje językowe.

grabek

Avatar: grabek

2009-08-28 16:33

A informacja o nowym zamówieniu na e-mail? Nadal będą przychodziły wszystkie powiadomienia na jeden adres, czy może da się to również jakoś rozdzielić? Nie musi być nawet możliwości definiowania obu tych adresów w panelu administracyjnym. Całkowicie moje potrzeby zaspokoi możliwość wpisania tych dwóch adresów ręcznie gdzieś w kod skryptu :)


Pozdrawiam,
Jakub Grabowski

info@grabek.net

Makaron

Avatar: Makaron

2009-08-31 16:26

Jest możliwość. Na przykład taka: trzeba przerobić funkcję sendEmailWithOrderDetails() dodać jej jeszcze jeden parametr, którą jeśli wywołamy w pliku actions_client/p.php z odpowiednim parametrem to wyśle na inny mail. Ten parametr to może być zmienna stała LANGUAGE, która przyjmuje wartości en czy pl domyślnie.

grabek

Avatar: grabek

2009-09-08 11:16

Witam ponownie,

a czy ktoś mógłby napisać dokładnie, jak przerobić tą funkcję? Rozumiem, że chodzi o ten fragment kodu:


// save and print order

$iOrder $oOrder->addOrder$_POST );

if( !empty( 
$config['orders_email'] ) ){

$oOrder->sendEmailWithOrderDetails'orders_print.tpl'$iOrder );

}




Pozdrawiam,
Jakub Grabowski

info@grabek.net

grabek

Avatar: grabek

2009-09-10 12:52

Jest problem z tym podziałem plików bazy danych na dwie wersje językowe. Teraz nie wyświetlają się zamówienia w panelu administracyjnym, w mailu, który jest wysyłany z powiadomieniem do właściciela sklepu nie ma danych klienta, a klient nie otrzymuje potwierdzenia na swój e-mail.

W panelu administracyjnym pojawia się taki oto błąd:

ERROR - NO FUNCTION pl_orders OR INDEX 0 IN file db/pl_orders.php
ERROR - NO FUNCTION pl_orders_comments OR INDEX 0 IN file db/pl_orders_comments.php

Czy ktoś wie co to znaczy?
Będę wdzięczny za pilną pomoc!


Pozdrawiam,
Jakub Grabowski

info@grabek.net

grabek

Avatar: grabek

2009-09-10 13:02

A klient po złożeniu zamówienia na stronie "zamówienie zostało złożone i zapisane" nie widzi swoich danych. Na górze strony pojawia mu się błąd:

ERROR - NO FUNCTION pl_orders OR INDEX 0 IN file db/pl_orders.php
ERROR - NO FUNCTION pl_orders_comments OR INDEX 0 IN file db/pl_orders_comments.php
ERROR - NO FUNCTION pl_orders OR INDEX 0 IN file db/pl_orders.php
ERROR - NO FUNCTION pl_orders_comments OR INDEX 0 IN file db/pl_orders_comments.php
ERROR - NO FUNCTION pl_orders OR INDEX 0 IN file db/pl_orders.php
ERROR - NO FUNCTION pl_orders_comments OR INDEX 0 IN file db/pl_orders_comments.php

W czym jest problem?


Pozdrawiam,
Jakub Grabowski

info@grabek.net

Makaron

Avatar: Makaron

2009-09-25 11:29

Ok więc funkcję przerabiamy w ten sposób. Wywołanie w pliku actions_client/p.php zmieniamy wywołanie tej funkcji z:

$oOrder->sendEmailWithOrderDetails'orders_print.tpl'$iOrder );


na:

$oOrder->sendEmailWithOrderDetails'orders_print.tpl'$iOrderLANGUAGE );


Natomiast w pliku core/ordes.php zmieniamy deklaracje funkcji z:

function sendEmailWithOrderDetails$sFile$iOrder )


na

function sendEmailWithOrderDetails$sFile$iOrder$sLang )


Teraz już w zależności od tego ile masz języków trzeba sobie zrobić klauzulę if może ona wyglądać tak:

    if( strcmp($sLang"pl") == )
        
$sMail "mailpolski@test.pl";
    else
        
$sMail "mailresztaswiata@test.com";


i na końcu zmieniamy linię, która wysyła maila z:

sendEmail$aSendnull$GLOBALS['config']['orders_email'] );


na

sendEmail$aSendnull$sMail );

Do góry
o nas | kontakt