E-mail sendOrder

boboo

Avatar: boboo

2011-02-21 15:30

Dziś po raz pierwszy otrzymałem zamówienie, w którym klient wpisał nazwę firmy w cudzysłowie "Firma_XXX".
W e-mailu przyszło:
Imię Nazwisko
Firma: "Firma_XXX"
...
Sprawdziłem zaraz na QC-4. To samo.
Wygląda paskudnie.
Rozwiązanie:
QC-3 i QC-4:
w pliku /core/orders.php na samym dole w funkcji sendEmailWithOrderDetails
pod linijką: $aData=$this->throwOrder($iOrder);
wpisać:
$aData['sCompanyName']=html_entity_decode($aData['sCompanyName']);
to samo (jeśli jest zainstalowany) w pluginie sendOrderToClient.

Można to też rozwiązać dodając w headerze e-maila w funkcji sendEmail (core/common.php) takie coś:
'Content-type:text/html;charset=UTF-8'
Ale wtedy trzeba dodatkowo pogrzebać w templatce orders_print.tpl
Inaczej e-mail się "rozjeżdża"
(po prostu trzeba wstawić w odpowiednie miejsca <br/> aby wszystkie dane zamówienia nie były w jednej linii)

» Quick.Cart v3.x

http://it-service.kimla.de

kuzco

Avatar: kuzco

2011-02-21 22:36

Can you please send this bug report again in english or german ?

boboo

Avatar: boboo

2011-02-21 22:51

Heute bekam ich eine Bestellung von einem Kunden, der seinen Firmenname in die Apostrophe einfügte: "Seine Firma"
In der angekommenen E-mail sah das häßlich aus: &quot;Seine Firma&quot;
Habe sofort im QC-4 probiert: das gleiche.
Die Lösung:
im core/orders.php ganz unten in der Funktion sendEmailWithOrderDetails
unter der Zeile: $aData=$this->throwOrder($iOrder);
muß man einfügen:
$aData['sCompanyName']=html_entity_decode($aData['sCompanyName']);
Das gleiche gilt, wenn das Plug-In sendOrderToClient installiert ist.
Man kann es auch anders lösen: im Header der mail Funktion (core/common.php) folgendes hinzufügen: 'Content-type:text/html;charset=UTF-8'
Aber dann ist noch Arbeit in der Template orders_print.tpl angesagt - in die richtigen Plätze <br/> hinzufügen, sonst kommt die E-mail ohne Zeilenumbrüche an.

http://it-service.kimla.de

K@mil

Avatar: K@mil

2012-06-14 20:39

Odkopuję....
Posiadam wersję 5.1 i jakoś nie chce mi to śmigać...

W pliku mam linijkę:
/core/orders.php

$aData $this->throwOrder$iOrder );



Zgodnie z instrukcją dodałem pod:

$aData['sCompanyName']=html_entity_decode($aData['sCompanyName']);




I nadal e-mail posiada zamiast " jest &quot;&quot;

boboo

Avatar: boboo

2012-06-14 22:33

W tamtym temacie pisałeś:
- nazwa produktu posiada znak " " -
Jak myślisz, czy nazwa produktu jest w zmiennej sCompanyName ?

qc-plugins.kimla.de

K@mil

Avatar: K@mil

2012-06-15 13:24

boboo - tak to jest jak ktoś jest nieogarnięty w pewnych sprawach :)
Mogę liczyć na pomoc?

boboo

Avatar: boboo

2012-06-15 19:48

Możesz :-)
Ale z mojej strony dopiero jutro. Tak koło południa.

qc-plugins.kimla.de

boboo

Avatar: boboo

2012-06-16 10:39

Jest w /core/orders.php funkcja: sendEmailWithOrderDetails
a w niej linijka:
$aSend['sMailContent'] = preg_replace( '/\|n\|/', "\n", $oTpl->tBlock( $sFile, 'ORDER_EMAIL_BODY' ) );

dodaj pod tą linijką:
$aSend['sMailContent']=html_entity_decode($aSend['sMailContent']);

Powinno zadziałać.

qc-plugins.kimla.de

exite

Avatar: exite

2012-10-07 13:03

hmm ja natomiast mam pytanie jak zrobić by w mailu wysyłanym nie było znaczników z HTMLa


Zamowione produkty
------------------------
KOSZULKA #5 - Cena: 40.<sup>00</sup> zł, Ilość: 1, Wartość:
40.<sup>00</sup
KOSZULKA #3 - Cena: 40.<sup>00</sup> zł, Ilość: 1, Wartość:
40.<sup>00</sup
KOSZULKA #1 - Cena: 40.<sup>00</sup> zł, Ilość: 1, Wartość:
40.<sup>00</sup

------------------------
Sposób dostawy i płatność
------------------------
Poczta Polska (Przelew) = 8.<sup>00</sup

Kwota 
do zapłaty128.<sup>00</sup
------------------------

selekcjoner

Avatar: selekcjoner

2012-10-07 13:28

przy cenie chcesz grosze jako indeks górny? :) W oryginale przy wysyłaniu meila nie są obsługiwane znaczniki html, jeśli je dopisałeś i chcesz aby były wyświetlane to musisz zrobić zmiany w funkcji sendEmail

simlution.org

exite

Avatar: exite

2012-10-07 14:24

Chciałbym się ich pozbyć ponieważ na stronie głównej potrzebowałem tylko indeksu górnego a niestety otrzymałem efekt w całym skrypcie sklepu. Jest na to jakieś rozwiązanie ?

exite

Avatar: exite

2012-10-07 16:11

Myślałem żeby zrobić np na stronie głównej tam gdzie ma być indeks górny kopie tego czegoś co wyświetla cenę czyli: $aData[sPrice] np. żeby było $aData[sPrice2] a wtedy w całej pozostałości była by cena bez indeksu górnego. Tylko problem w tym że nie wiem gdzie tego szukać. Cenę z końcówką w indeksie górnym otrzymałem poprzez edycję pliku common.php za pomocą:

function displayPrice$mPrice ){
  
$cena explode("."$mPrice);
$cena[1] = ".<sup>" .$cena[1]. "</sup>";
$mPrice $cena[0].$cena[1];
return 
$mPrice;
}

selekcjoner

Avatar: selekcjoner

2012-10-07 16:36

spróbuj tak:
w common.php utwórz:


function normalizePrice2$mPrice ){
  
sprintf'%01.2f'str_replace',''.'$mPrice ) );
  
$cena explode("."$mPrice);
  
$cena[1] = ".<sup>" .$cena[1]. "</sup>";
  
$mPrice $cena[0].$cena[1];
  return 
$mPrice;
}



w products.php w funkcji generateCache znajdź:

$this->aProducts[$aValue['iProduct']] = $aValue;


i dodaj po tym:

$this->aProducts[$aValue['iProduct']]['sPrice2'] = normalizePrice2$aValue['mPrice'] );



oraz w pages_default.tpl ustaw zmienną $aData[sPrice2]

simlution.org

exite

Avatar: exite

2012-10-07 16:56

a to co utworzyłem w common.php ja to mam zostawic czy przywrocic oryginalną składnie ?

boboo

Avatar: boboo

2012-10-07 16:57

Jest w core/orders.php funkcja sendEmailWithOrderDetails
w niej jest:
$aData['sProducts']=$this->listProducts($sFile,$iOrder,'EMAIL_');
i tu dostajesz cenę z dobrodziejstwem inwentarza dodanego przez twoją funkcję displayPrice.
Dlatego pod tą linijką:
$aData['sProducts']=$this->listProducts($sFile,$iOrder,'EMAIL_');
dodaj linijkę czyszczącą z tagów html:
$aData['sProducts']=strip_tags($aData['sProducts']);
Nie testowałem, ale powinno zadziałać.

www.kimla.de

exite

Avatar: exite

2012-10-07 17:02

ZAJEB#^%*@ udało się !!! Nie wiem jak ci się mogę odwdzięczyć.
Bardzo mi pomogłeś tym rozwiązaniem.

exite

Avatar: exite

2012-10-07 17:04

Oczywiście mowie tu o użytkowniku Selekcjoner, dziękuje serdecznie boboo za chęć pomocy ale to rozwiązanie które dal Selekcjoner pomogło i spełniło moje oczekiwania. Jeszcze raz dziękuję i Selekcjoner i boboo.

3drings

Avatar: 3drings

2016-04-01 14:33

Cześć! To mój pierwszy post na tym forum więc witam wszystkich serdecznie!

Od razu przejdę do rzeczy, mam problem z funkcją:

$aData['sCompanyName']=html_entity_decode($aData['sCompanyName']);



Działa ona bardzo dobrze zamieniając &quot; na ", ale podczas gdy nie uzupełni się pola Firma na stronie oprócz normalnego potwierdzenia zamówienia wyświetlany jest napis: Notice: Undefined index: sCompanyName in /home/fasola/domains/hurtownia-kaletnicza.pl/public_html/core/orders.php on line 517

Czy znacie sposób jak pozbyć się tego błędu

Quick.Cart 6.7

selekcjoner

Avatar: selekcjoner

2016-04-01 20:06

Spróbuj zamienić na:

 $aData['sCompanyName'] = isset( $aData['sCompanyName'] ) ? html_entity_decode($aData['sCompanyName']) : null

3drings

Avatar: 3drings

2016-04-04 18:07

Dziękuję kolego selekcjoner! Funkcja działa poprawnie.

Do góry
o nas | kontakt