Jump to content

"Lämna ett meddelande"


Recommended Posts

Hej,

 

Har nu försökt ett tag att hitta en lösning på detta, har installerat en "template editor" men det hjälpte inte till för att lösa detta problemet. Enligt den som jag installerade skulle jag lägga till "{message}" i html filen för new_order.html

 

När jag gjorde detta så ändrades inget för mig.

Har även testat att göra det på order_conf.html eller vad det nu var filen hette men detta hjälpte inte det heller, där visades dock texten som jag skrev. Men fick inte fram något meddelande, stod bara "Kommentar på order: {message}"

 

Det jag vill ha är alltså att när en kund beställer något på hemsidan så vill jag att meddelandet som kunden har skrivit ska synas på ordern som skickas till min mail.

När en kund lägger en beställning får jag ju ett mail till min inkorg, där jag ser vad kunden har beställt och leveransuppgifter osv. Detta mail skriver jag sedan ut och går och packar ordern till kunden. Men om jag ska kunna se i dagsläget om kunden har skrivit någon kommentar på sin order så måste jag sätta mig vid datorn och gå in på ordern i prestashop för att kunna se om kunden har skrivit något. Detta tar ju en del utav tiden som istället skulle kunna gå till att packa ordern snabbare och effektivt.

 

Så har lite frågor angående detta. Är det rätt fil som jag har försökt att editera i? "new_order.html"

Vad är det jag ska lägga till där för att ha möjlighet att direkt i det mailet jag får kunna se om kunden har lämnat en kommentar, och isåfall kunna läsa den direkt i mailet / pappert jag skriver ut?

 

Jag kör med Prestashop 1.4.7

Link to comment
Share on other sites

Ja, det är filen new_order.html som du ska redigera. Kolla i modules/mailalerts/mails/sv/new_order.html

 

Kollade i en fil från en installation med en 1.4.*-version, där ser koden ut så här:


		<tr>
			<td align="left" style="background-color:#DB3484; color:#FFF; font-size: 12px; font-weight:bold; padding: 0.5em 1em;">Meddelande från kund</td>
		</tr>
		<tr><td> </td></tr>
		<tr>
			<td align="left">
				<strong>{message}</strong>
			</td>
		</tr>
Link to comment
Share on other sites

Tack så hemskt mycket. Visste inte att det var där inne jag skulle ändra. Ändrade på fel ställe när jag försökte innan.

 

Har en fråga till som jag hoppas kunna få hjälp med. Hade även velat ha så att man kunde visa vilken grupp som kunderna tillhör när dom beställer.

 

Finns det något liknande {message} att skriva för att visa vilken grupp man tillhör, t.ex. {group_id} eller något sånt. Har försökt hitta en lista där alla dessa koder finns och vad dom används till men har inte hittat något än.

Link to comment
Share on other sites

Vad som skickas till template och som är tillgängligt där mellan { och } hittar du i mailalerts.php, leta efter $templateVars. Prova att ändra:

'{message}' => $message

till:

'{message}' => $message,
'{id_group}' => $customer->id_default_group

Tänk på att du i så fall ändrar i en standardmodul och att ändringarna kommer att skrivas över vid en uppgradering.

Link to comment
Share on other sites

  • 1 month later...

Har nu även försökt få med vilken grupp som användarna tillhör på mailen som skickas till mig vid order.

Detta verkade vara svårare än jag trodde från början. Har kommit så pass långt att jag har fått ut numret på gruppen som folk tillhör. Men vill att det ska visas namnet på gruppen.

 

Har kört med '{id_group}' => $customer->id_default_group,

 

Men det visar som sagt endast vilken grupp man tillhör med hjälp av siffror.

Texten för vilken grupp man tillhör visas ju i group_lang , under "name" , har försökt skriva en egen rad för det i mailalerts.php men verkar inte bli som jag vill, fältet blir blankt.

 

Har testat att skriva: '{id_group_name}' => $group_lang->name

Men detta fungerar som sagt inte.

 

Någon som vet vad jag ska skriva för att få fram rätt resultat?

Link to comment
Share on other sites

  • 4 weeks later...

 

Det här borde fungera. Dock har jag bara kodat för 1.5-1.6 tidigare, men det borde fungera i 1.4

$group = new Group($customer->id_default_group);

Placera koden ovan innan $templateVars

{group_name} => $group->name

Testade att lägga in det, men i mailen som jag får nu med den här koden så står det "Kundens grupp: Array"

Verka inte som det fungerar, kanske är jag som la in koden fel, vet inte riktigt.

 

Skrev in:

$group = new Group($customer->id_default_group);

precis ovanför raden:

$templateVars = array(

Dvs just nu så står det såhär i min mailalerts.php:

        $group = new Group($customer->id_default_group);
        $templateVars = array(
Link to comment
Share on other sites

Hej.

 

Nej det verkar som om 1.4.7 skiljer sig för mycket från 1.5 för att det ska funka så. Men testa och ändra till

{group_name} => print_r($group->name)

så får vi se om du får något i arrayen, eller som den är tom.

Annars kanske jag har en annan lösning.

Link to comment
Share on other sites

Hej.

 

Nej det verkar som om 1.4.7 skiljer sig för mycket från 1.5 för att det ska funka så. Men testa och ändra till

{group_name} => print_r($group->name)

så får vi se om du får något i arrayen, eller som den är tom.

Annars kanske jag har en annan lösning.

Nu står det inte Array längre, istället så får jag siffran på vilken grupp jag tillhör. Dock så är det fel siffra, jag får att jag tillhör grupp nr 1 men jag tillhör grupp 2

Link to comment
Share on other sites

Okey. Ska försöka hinna skriva en ny kod senare idag, måste packa alla odrar först.

Tack så hemskt mycket för att du försöker hjälpa!

 

Anledningen att jag hellre vill ha namnet på gruppen än ID på gruppen är för att minimera risken att någon ny som ska skriva fakturor skriver fel när de ska skapa fakturan i vårt faktureringsprogram. Har hänt vid ett tillfälle redan att någon har skrivit en vanlig faktura trotts att de egentligen skulle ha en företagsfaktura. Detta gör ju såklart att kunderna blir irriterade när det kommer fel fakturor till dem.

Därför vill jag hellre ha "Kunden tillhör: Standardkund" samt "Kunden tillhör: Företagskund" t.ex.

Kan som sagt bli lite rörigt så som det ser ut idag när det står "Kunden tillhör: 1" och "Kunden tillhör: 2"

Edited by GrezZeR (see edit history)
Link to comment
Share on other sites

Snabb hack för att stödja enbart 2st grupper.

{group_name} => ($customer->id_default_group == 1 ? 'Standard' : 'Företag');

Detta gör, om kund är i grupp 1, skriv Standard, annars Företag

Fungerar dock inte om du har gäst funktionen aktiverad, då gäster kommer skrivas som Företag då.

 

Skriver en ordentlig kod, som fungerar med flera grupper och gäster senare.

Edited by PhpMadman (see edit history)
Link to comment
Share on other sites

Snabb hack för att stödja enbart 2st grupper.

{group_name} => ($customer->id_default_group == 1 ? 'Standard' : 'Företag');

Detta gör, om kund är i grupp 1, skriv Standard, annars Företag

Fungerar dock inte om du har gäst funktionen aktiverad, då gäster kommer skrivas som Företag då.

 

Skriver en ordentlig kod, som fungerar med flera grupper och gäster senare.

Ah okej, då får jag vänta tills du har skrivit den andra koden. Har dessvärre gästkassan öppen så kan inte använda denna då.

Kan ju även vara bra precis som du säger att kunna använda fler grupper. Man vet ju aldrig vad som händer i framtiden om man behöver lägga till fler grupper. Då blir det bättre att ha en kod som klarar av att hantera flera grupper samtidigt utan problem.

 

Åter igen, tack så mycket för att du hjälper till!

Link to comment
Share on other sites

Okey. Helt otestad kod, men borde funka.

Vi behöver en ny funktion, så scrolla upp i mailalets.php tills du kommer till hookNewOrder

Borde ligga runt 50-60 rader ovanför $templateVars.

Lägg in min _getGroup kod där.

    private function _getGroup($id_group, $id_lang)
    {
        $result = Db::getInstance()->ExecuteS('
            SELECT gl.`name`
            FROM '._DB_PREFIX_.'group_lang gl
            WHERE gl.`id_group` = '.(int)$id_group.' AND gl.`id_lang` = '.$id_lang);
        return $result;
    }
    
    public function hookNewOrder($params)
    {

Sen i templateVars ska ska vi nu använda

{group_name} => $this->_getGroup($customer->id_default_group, $id_lang)

Det borde funka för alla kundgrupper.

 

Link to comment
Share on other sites

Okey. Helt otestad kod, men borde funka.

Vi behöver en ny funktion, så scrolla upp i mailalets.php tills du kommer till hookNewOrder

Borde ligga runt 50-60 rader ovanför $templateVars.

Lägg in min _getGroup kod där.

    private function _getGroup($id_group, $id_lang)
    {
        $result = Db::getInstance()->ExecuteS('
            SELECT gl.`name`
            FROM '._DB_PREFIX_.'group_lang gl
            WHERE gl.`id_group` = '.(int)$id_group.' AND gl.`id_lang` = '.$id_lang);
        return $result;
    }
    
    public function hookNewOrder($params)
    {

Sen i templateVars ska ska vi nu använda

{group_name} => $this->_getGroup($customer->id_default_group, $id_lang)

Det borde funka för alla kundgrupper.

Nu får jag "Array" igen i mailet, förstår inte varför det inte vill fungera.

Link to comment
Share on other sites

 

Kör en med print_r, så får jag se vad du får för resultat.

{group_name} => print_r($this->_getGroup($customer->id_default_group, $id_lang))

Nu står det "Grupp: 1" istället för Array, dock så tillhör jag grupp 2, så det står fel grupp nu också.

Link to comment
Share on other sites

Okey. Det innebär att print_r inte fungerar att anropa så.

Men om du tar bort print_r igen, och sen ändrar ExecuteS till getValue

Underbart nu verkar det fungera perfekt. Måste kolla igenom allt igen innan jag med 100% säkerhet kan säga att det fungerar precis som det ska. Men nu står det "Företagskunder" istället för 1,2 eller Array.

 

Tusen tack för hjälpen!

Är det okej om jag skickar dig ett PM eller skriver här i tråden om det skulle uppstå något mer frågetecken kring denna funktion?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...