Уведомление менеджеру о заказе, со всем необходимыми данными (emarket) TPL

Материал из Umicms
Перейти к:навигация, поиск

Бывает необходима такая функциональность как отправка менеджеру письма, со всеми данными о заказе сделанном на сайте. Далее будет описан небольшой кастомный макрос и некоторые нюансы его работы, в результате которых мы сможем получить такие данные:

- Персональные данные о покупателе

- Способ доставки

- Адрес доставки

Для реализации поставленной задачи, пропишем в файле classes/modules/custom.php, после слов //TODO: Write your own macroses here, новый макрос:

public function orderinfo($order_id, $ide){
  if(!$order_id) return false; 
  $inst = umiObjectsCollection::getInstance();
  $object = $inst->getObject($order_id);
  $id_value = $object->getValue($ide);
  if($ide == 'delivery_id') return $inst->getObject($id_value)->getName();
  if($ide == 'order_discount_id'){
    if(!$id_value) return "";
    // Получаем значение поля "Описание" в скидке
    $description_discount = $inst->getObject($id_value)->getValue('description');
    $value_disc = $object->total_price - $object->total_original_price;
    return "Скидка на заказ: {$name_disc} ({$value_disc} руб.)";	
  }	
  return "%data getEditForm({$id_value},'order')%";  
}

Создадим в папке tpls/data/reflection/ шаблон order.tpl, примерно такого же содержания как и стандартный шаблон default.tpl, только заменим тэги <input>, <textarea> и им подобные на макрос %value%. Это необходимо из-за того, что мы будем использовать макрос data getEditForm() только для вывода уже существующей информации об объектах (адрес доставки, регистрационные данные и т.д.).

Как наверно уже всем известно, шаблон письма, которое отправляется менеджеру, строится по блоку 'neworder_notification', шаблона tpls/emarket/mail/default.tpl. В данном блоке можно использовать макрос emarket order(%order_id%,‘mail’), благодаря которому мы получим информацию о заказанных товарах. Необходимо настроить в необходимом виде шаблон tpls/emarket/mail.tpl, который будет использоваться макросом emarket order().

В шаблоне tpls/emarket/mail/default.tpl, в блоке neworder_notification, помимо стандартных записей, можно прописать запросы по дополнительной информации, в итоге получим блок примерно следующего содержания:

Поступил новый заказ #%order_number% (<a href="http://%domain%/admin/emarket/order_edit/%order_id%/">Просмотр</a>)
<br/><br/>
Способ оплаты: %payment_type%<br/>
Статус оплаты: %payment_status%<br/>
Сумма оплаты:  %price%<br/>
Информация о товаре в заказе:<br/>
%emarket order(%order_id%)%
Данные о покупателе:<br/>
%custom orderinfo(%order_id%,'customer_id')%
Способ доставки:
%custom orderinfo(%order_id%,'delivery_id')%<br/>
Адрес доставки:<br/>
%custom orderinfo(%order_id%,'delivery_address')%

Такие идентификаторы полей как: customer_id, delivery_id и delivery_address получены из типа данных "Заказ" (модуль "Шаблоны данных"). В итоге, при такой начинке блока 'neworder_notification' менеджеру будет отправлено информационное письмо, со всеми необходимыми данными о заказе и покупателе.