Nom du client dans titre e-mail de commande

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #106882

Bonjour,

Je n'arrive pas à afficher un champs personnalisé dans le titre de l'e-mail de Notification de commande à l'administrateur.

Le numéro de commande, j'y arrive.

Merci.

Last edit: 10 years 10 months ago by oliv. Reason: réglé

Please Log in or Create an account to join the conversation.

  • Posts: 12953
  • Thank you received: 1778
10 years 10 months ago #106887

Bonjour,

Je pense que vous trouverez quelques réponses ici :

Custom order fields will be included in the email to the administrator automatically.
For the email sent to the user, you will have to edit the "order creation notification" email via the menu System->Emails and add the code below in it if you want the user to also have the information in his email :
$fieldsClass = hikashop::get('class.field');
$fields = $fieldsClass->getFields('frontcomp',$data,'order','');
foreach($fields as $fieldName => $oneExtraField) {
echo "\r\n".$fieldsClass->trans($oneExtraField->field_realname).' : '.$fieldsClass->show($oneExtraField,$data->$fieldName);
}

En espérant que cela vous sera utile.

Last edit: 10 years 10 months ago by Mohamed Thelji.
The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107057

Merci Mohamed,

Je n'ai pas trouvé la réponse à ma question.

Je précise que c'est dans le titre, aurais-je dû écrire "le sujet", que je voudrais inclure cette donnée.

Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
10 years 10 months ago #107085

Bonjour,

Une solution possible est de supprimer le sujet de votre mail.
Ensuite, dans le fichier order.php de administrator/components/com_hikashop/classes trouvez la ligne:

$order->mail->subject = JText::sprintf('NEW_ORDER_SUBJECT',$order->order_number,HIKASHOP_LIVE);

Il vous suffit alors de trouver la traduction dans le fichier de langue pour l'adapter à vos besoins, les %s de la traduction étant remplacées par les variables du sprintf()

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107094

J'y suis presque il me manque le terme à rentrer pour remplacer "HIKASHOP_LIVE" par mon champs "address_company".
J'arrive pas à le trouver.
Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
10 years 10 months ago #107119

C'est là qu'il faut utiliser le code donné plus haut par Mohamed.

$fieldsClass = hikashop::get('class.field');
$fields = $fieldsClass->getFields('frontcomp','address','');

Cela vous permet de récupérer tous les champs personnalisés de type adresse. Le foreach vous permettra de les parcourir, trouver celui qui vous intéresse et afficher sa valeur. Par exemple:
$theField='';
foreach($fields as $fieldName => $oneExtraField) {
  if($fieldName=='addresse_title'){
    $theField=$oneExtraField->field_realname;
  }
}

C'est un exemple bien sur, il faut remplacer "address" par la valeur du "table" de votre champ et la condition du if par son namekey.

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107124

Merci mais mon niveau débutant en php ne me permet pas de comprendre où il faut coller ces codes.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
10 years 10 months ago #107125

Il suffit de les mettre au dessus de la ligne

$order->mail->subject = JText::sprintf('NEW_ORDER_SUBJECT',$order->order_number,$theField);

Vous remarquerez que j'ai remplacé HIKASHOP_LIVE par le champ personnalisé récupérer précédemment.

Last edit: 10 years 10 months ago by Eliot.
The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107131

Merci je me rapproche mais je ne sais si le chemin est encore long. Voici le code collé, il y surement quelque chose qui cloche?

if(empty($order->mail->subject)) {
								$theField='';
								foreach($fields as $fieldName => $oneExtraField) {
								  if($fieldName=='address_company'){ 
								    $theField=$oneExtraField->Company;
									  }
										}
								$order->mail->subject = JText::sprintf('NEW_ORDER_SUBJECT',$order->order_number,$theField);
							}
Et voici un bout de la bdd où je dois sûrement trouver les infos nécessaires?



Merci.

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
10 years 10 months ago #107195

Ce n'est pas
$theField=$oneExtraField->Company;

mais
$theField=$data->address_company;

qu'il faut utiliser.

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107426

Merci Nicolas,

J'ai bien le numéro de la commande mais ce fameux champs toujours pas.

Sujet de l'e-mail reçu : "Nouvelle commande No. F1L25 créée sur"

Je n'ai pas d'autre piste.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
10 years 10 months ago #107451

Bonjour,

Comme l'a dit Nicolas, avez vous essayé directement avec $data->address_company à la place de $theField dans la ligne:

$order->mail->subject = JText::sprintf('NEW_ORDER_SUBJECT',$order->order_number,$theField);

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107456

Bonjour Eliot,

Ca ne marche toujours pas voici où j'en suis :

	$order->mail->subject = trim($order->mail->subject);
							if(empty($order->mail->subject)) {
								$theField='';
								foreach($fields as $fieldName => $oneExtraField) {
								  if($fieldName=='address_company'){ 
								    $data->address_company;
									  }
										}
								$order->mail->subject = JText::sprintf('NEW_ORDER_SUBJECT',$order->order_number,$data->address_company);
							}

Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
10 years 10 months ago #107501

rajoutez la ligne:
var_dump($data);

et regardez ce que vous avez dans $data et ensuite il suffit d'utiliser l'attribut correspondant à la valeur que vous voulez...

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107570

Bonjour,

Où dois-je rajouter cette ligne?

Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
10 years 10 months ago #107579

Vous pouvez l'ajouter n'importe ou dans votre email (une partie visible tout de même).

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107581

Je l'ai mis à la fin du fichier order.php et j'ai rien à la fin de l'e-mail.
Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
10 years 10 months ago #107606

Bonjour,

Il faut l'ajouter dans l'email en question, en passant par Système > Email et ajouter le var_dump dans le corps de l'email.

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

  • Posts: 257
  • Thank you received: 7
10 years 10 months ago #107631

Au retour de l'e-mail je trouve bien mon résultat :

["address_company"]=> string(13) "Société XXX"

C'est "Société XXX" que j'aimerais retrouver dans le sujet de l'e-mail.

A la re-lecture de cette discussion, je ne vois pas ce que je peux faire de ce résultat.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
10 years 10 months ago #107647

Voici la ligne qu'il vous faut:

$order->mail->subject = JText::sprintf('NEW_ORDER_SUBJECT',$order->order_number,$data['address_company']);

The following user(s) said Thank You: oliv

Please Log in or Create an account to join the conversation.

Time to create page: 0.125 seconds
Powered by Kunena Forum