Уведомление менеджеру о заказе, со всем необходимыми данными (emarket) XSLT — различия между версиями
Строка 35: | Строка 35: | ||
В шаблоне tpls/emarket/mail/default.tpl, в блоке neworder_notification, помимо стандартных записей, можно прописать запросы по дополнительной информации, в итоге получим блок примерно следующего содержания: | В шаблоне tpls/emarket/mail/default.tpl, в блоке neworder_notification, помимо стандартных записей, можно прописать запросы по дополнительной информации, в итоге получим блок примерно следующего содержания: | ||
<pre> | <pre> | ||
− | + | <xsl:variable select="document(concat('uobject://',order_id))//property[@name='customer_id']/value/item/@id" name="customer1"/> | |
− | < | + | <xsl:text>Имя: </xsl:text> |
− | + | <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='fname']/value" /><br /> | |
− | + | <xsl:text>Фамилия: </xsl:text> | |
− | + | <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='lname']/value" /><br /> | |
− | + | <xsl:text>Отчество: </xsl:text> | |
− | + | <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='father_name']/value" /><br /> | |
− | + | <xsl:text>E-mail: </xsl:text> | |
− | + | <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='email']/value" /><br /> | |
− | + | <xsl:text>Телефон: </xsl:text> | |
− | + | <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='phone']/value" /><br /> | |
− | Адрес доставки:< | + | <xsl:text>Адрес доставки: </xsl:text> |
− | + | <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='delivery_addresses']/value" /><br /> | |
</pre> | </pre> | ||
Такие идентификаторы полей как: customer_id, delivery_id и delivery_address получены из типа данных "Заказ" (модуль "Шаблоны данных"). В итоге, при такой начинке блока 'neworder_notification' менеджеру будет отправлено информационное письмо, со всеми необходимыми данными о заказе и покупателе. | Такие идентификаторы полей как: customer_id, delivery_id и delivery_address получены из типа данных "Заказ" (модуль "Шаблоны данных"). В итоге, при такой начинке блока 'neworder_notification' менеджеру будет отправлено информационное письмо, со всеми необходимыми данными о заказе и покупателе. |
Версия 08:59, 11 июня 2013
СТАТЬЯ НА СТАДИИ РЕДАКТИРОВАНИЯ Актуально для версии 2.9 Бывает необходима такая функциональность как отправка менеджеру письма, со всеми данными о заказе сделанном на сайте. Далее будет описан небольшой кастомный макрос и некоторые нюансы его работы, в результате которых мы сможем получить такие данные:
- Персональные данные о покупателе
- Способ доставки
- Адрес доставки
Для реализации поставленной задачи, пропишем в файле 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')%";
}
Создадим в папке xslt/modules/data/reflection/ шаблон order.xsl, примерно такого же содержания как и стандартный шаблон default.xsl, только заменим тэги <input>, <textarea> и им подобные на макрос <xsl:value-of select="." />. Это необходимо из-за того, что мы будем использовать макрос data getEditForm() только для вывода уже существующей информации об объектах (адрес доставки, регистрационные данные и т.д.).
Шаблон письма, которое отправляется менеджеру, строится в файле xslt/emarket/mail/default.xsl в шаблоне <xsl:template match="neworder_notification"> В данном блоке можно использовать макрос emarket order(%order_id%,‘mail’), благодаря которому мы получим информацию о заказанных товарах. Необходимо настроить в необходимом виде шаблон tpls/emarket/mail.tpl, который будет использоваться макросом emarket order().
В шаблоне tpls/emarket/mail/default.tpl, в блоке neworder_notification, помимо стандартных записей, можно прописать запросы по дополнительной информации, в итоге получим блок примерно следующего содержания:
<xsl:variable select="document(concat('uobject://',order_id))//property[@name='customer_id']/value/item/@id" name="customer1"/> <xsl:text>Имя: </xsl:text> <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='fname']/value" /><br /> <xsl:text>Фамилия: </xsl:text> <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='lname']/value" /><br /> <xsl:text>Отчество: </xsl:text> <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='father_name']/value" /><br /> <xsl:text>E-mail: </xsl:text> <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='email']/value" /><br /> <xsl:text>Телефон: </xsl:text> <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='phone']/value" /><br /> <xsl:text>Адрес доставки: </xsl:text> <xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='delivery_addresses']/value" /><br />
Такие идентификаторы полей как: customer_id, delivery_id и delivery_address получены из типа данных "Заказ" (модуль "Шаблоны данных"). В итоге, при такой начинке блока 'neworder_notification' менеджеру будет отправлено информационное письмо, со всеми необходимыми данными о заказе и покупателе.