UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: Exorcist от 22 Ноября 2011, 04:55:52

Название: Статусы заказов и шаблоны писем
Отправлено: Exorcist от 22 Ноября 2011, 04:55:52
Как мне изменить существующий список статусов заказов? Там есть лишние по умолчанию.
И еще при изменении статуса заказа, я хочу чтобы к каждому статусу шло своё письмо , различные по содержанию
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 22 Ноября 2011, 07:44:17
в системе предусмотрена отсылка писем при оформлении письма и при изменении статуса оплаты\доставки если ты хочешь написать свои варианты уведомлений, то пиши event на изменение статуса заказа, разбирай что это за заказ и отправляй то письмо которое хочешь, для того чтобы понять что именно писать посмотри файл /classes/modules/emarket/__notification.php можешь еще в event файлы в этой же папке заглянуть
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 22 Ноября 2011, 07:45:39
насчте изменения существующих статусов заказа, это просто справочник, в который ты можешь добавить свои элементы, можешь даже попробовать убрать некоторые существующие, но экспериментируй аккуратно, они могу использоваться в коде)
Название: Re:Статусы заказов и шаблоны писем
Отправлено: Exorcist от 22 Ноября 2011, 08:17:30
насчте изменения существующих статусов заказа, это просто справочник, в который ты можешь добавить свои элементы, можешь даже попробовать убрать некоторые существующие, но экспериментируй аккуратно, они могу использоваться в коде)
Спасиб.Вот хотел убрать, а как не могу найти. Добавить плюсик есть, а убрать все перерыл.

За совет спасибо.Буду разбираться.
Название: Re:Статусы заказов и шаблоны писем
Отправлено: Exorcist от 25 Ноября 2011, 07:33:25
Значит дошел до статусов.

Как я понял вот массив с данным что передается в письмо в файле _notification.php
$param = array();
$param["order_id"]   = $order->id;
$param["order_name"] = $order->name;
$param["order_number"] = $order->number;
$param["status"]     = $statusString;

И есть в папке tpls/emarket/mail/default.tpl
$FORMS['status_notification'] = <<<END
    Добрый день,
    Бла бла бла.
    Номер заказа #%order_number%
END;

Но мне  4-ёх параметров мало . Я хочу еще в письме указать, адрес доставки что указал человек, товар который он заказал и его контактные данные.

Как их добавить в мой выше массив  $param. ?
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 25 Ноября 2011, 09:51:42
создайте еще param["new_data"] = $new_data в /classes/modules/emarket/__notification.php а в шаблоне tpls/emarket/mail/default.tpl сделайте вывод
$FORMS['status_notification'] = <<<END
   Добрый день,
   Бла бла бла. %new_data%
   Номер заказа #%order_number%
END;

по поводу того как получить данные из заказа, там есть одна заковыкра. В функциях файла /classes/modules/emarket/__notification.php данные вытягиваются преимущественно из объекта $order ($order->name, $order->payment_id), но этот объект $order не содержит в себе все поля Заказа, а является как-бы урезанной копией, так что если хотите вытянуть  значение любого поля данного заказа вначале переопределите объект заказа

$full_order = umiObjectsCollection::getInstance()->getObject($order->id);
$delivery_address_id = $full_order ->delivery_address;
if($delivery_address_id) {
       $delivery_address = umiObjectsCollection::getInstance()->getObject($delivery_address_id);
       if($delivery_address) {
             $delivery_address_index = $delivery_address->index;
             $delivery_address_city = $delivery_address->city;
             // и так далее вытягиваете значение нужных вам полей
       }

код писал налету, так что отсутствие ошибок не гарантирую, но принцип такой
Название: Re:Статусы заказов и шаблоны писем
Отправлено: Exorcist от 25 Ноября 2011, 12:10:17
Понял спасибо. А вот какой принцип или как узнать как доставать данные.
Про delivery_adress понятно на примере.
1)А вот информацию о пользователе( он не регистрируясь вбивает данные) ФИО
2)Товары заказа ( наименование, количество, цена)
3) Способ доставки
4) Способ оплаты

Может где почитать архитектуру БД или типо того
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 25 Ноября 2011, 12:35:01
открой заказ в админке и посмотри его в xml варианте (допиши .xml в адресной строке), там отобразятся все заполненные поля, как они называются и являются ли они прикрепленными объектами (как в случае с доставкой) или просто полями, как в случае с ответственным менеджером или датой заказа.

или в модуле шаблон данных найди тип данных "Заказ" и посмотри какие поля у него есть и что они из себя представляют
Название: Re:Статусы заказов и шаблоны писем
Отправлено: Exorcist от 25 Ноября 2011, 13:01:23
Спасиб. малость не догадался. Кстати если зайти в xml для заказа то ни данных покпателя ни адресов мы не увидим
http://site.ru/admin/emarket/order_edit/1076/.xml

если зайти в отредактировать адрес доставки

http://site.ru/admin/emarket/delivery_address_edit/1081/.xml

то еще что то увидим.

Но другие группы объектов нельзя отредактировать и следовательно через .xml мы ничего не увидим.

Буду пытать через шаблон данных заказ, смотреть группы объектов и их названия. Потом отпишусь.
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 26 Ноября 2011, 13:13:45
что бы просматривать данные, которые прикреплены как объекты (данные пользователя, адреса доставки) обратите внимание на атрибут у этих полей xhref:link вида "uobject://3456" это ссылка на сам объект данного пользователя, то есть если у вас открыт просмотр протокола uobject через http, то вы можете ввести в адресной строке site.ru/uobject://3456 и увидите информацию (и в том числе её структуру) о данном пользователе
Название: Re:Статусы заказов и шаблоны писем
Отправлено: Exorcist от 05 Декабря 2011, 08:39:18
Более менее разобрался. Все данные вытащил.

Но вот не могу вытащить список товаров в заказе( наименование, кол-во,цена)

Такие макросы как  %emarket order(%order_id%)% не канает. Так как они тащут всю ненужную информацию.

Не поможете?

P.S. Разобрался
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 29 Февраля 2012, 17:37:55
Все-таки разъясните, пожалуйста, как правильно выводить товары в письме.
Как вытащить их в __notification.php я понял, а как их правильно передать в $param и как их потом отобразить в tpls/emarket/mail/default.tpl ?
Вытаскивать каждый параметр товара отдельно и передавать отдельным параметром? А если товаров несколько?
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 29 Февраля 2012, 22:32:11
достаточно в письма сделать вызов макроса %emarket order(%order_id%)%

%order_id% у вас уже изначально есть, а вызвав макрос вывода информации о заказе, вы сможете используя привычный шаблон настроить как будет выглядеть список товаров и т.п.
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 01 Марта 2012, 12:16:32
Спасибо!
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 01 Марта 2012, 15:48:09
Товары выводятся. Только с выводом цены в них непонятная проблема.
Вывожу в нужном месте цену товара макросом %price%
Согласно документации
"%price%
Цена за единицу товара. Для вывода цены необходимо присутствие блоков price_original (исходная цена) и price_actual (актуальная цена)."
оба блока присутствуют.
Однако эти блоки не задействуются и у меня всегда выводится такой текст: "Российский рубль11Российский рубльруб1157"
Если посмотреть xml для этого заказа, то можно увидеть блок
"<price name="Российский рубль" rate="1" nominal="1" suffix="руб">
<actual>1157</actual>
</price>"
т.е. просто выводятся все значения атрибутов price и в конце цена.

Что делать? Что-то поменяли опять?
В каком файле php можно посмотреть, как заполняются эти параметры?
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 01 Марта 2012, 16:06:10
скорее всего %price% есть и у переменных для шаблона письма и для шаблона товара, может их перекрывает, мехонизм в php можно посмотреть в /calsses/modules/emarket/__purchasing.php (%emarket order()%) и /calsses/modules/emarket/__notification.php (там идет отправка письма)
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 01 Марта 2012, 17:30:27
%price% нет у переменных шаблона письма. Перерыл все шаблоны с %price%, так и не понял по какому шаблону это выводится, похоже, что ни по какому.

Получается, что в __purchasing.php в price записывается массив вот здесь:

            $item_arr['price'] = $this->formatCurrencyPrice(array(
               'original'   => $plainPriceOriginal,
               'actual'   => $plainPriceActual
            ));

В функции formatCurrencyPrice как раз и записывают все эти значения:

         $result = array(
            'attribute:name'      => $currency->name,
            'attribute:rate'      => $currency->rate,
            'attribute:nominal'      => $currency->nominal,
            'void:currency_name'   => $currency->name
         );

Которые потом просто выводятся подряд в письме при вызове %price%
Не понимаю.

А можно, кстати, менять файлы __purchasing.php, __currency.php ? Или они затрутся при следующем обновлении?
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 01 Марта 2012, 18:40:45
затрутся при обновлении, такое чуdство что у те,я система пытается вывести данные для xslt шаблонизатора, несмотря на то что у тебя включен tpl шаблонизатор (если я правильно понимаю)
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 01 Марта 2012, 23:37:13
Нет :)
В том то и дело, что у меня на xslt все.
Но, если я правильно понял, шаблон письма в любом случае формируется по tpl -  tpls\emarket\mail\default.tpl ?
В документации вроде так написано.
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 02 Марта 2012, 00:02:57
система шаблонизации старая или пробуешь новую, когда все в одной папке?
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 02 Марта 2012, 00:20:47
Все по разным папкам - значит старая, видимо
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 02 Марта 2012, 01:17:04
в версии 2.8.5 сделали свой шаблонизатор xslt'ый , поэтому просто использовать tpl шаблон письма не получается. Но у меня вопрос не затрагивал новый механизм, я использую скрипт, который формирует все что может понадобиться для письма. Достаточно кастомный и не выглаженный, но суть в том что для версии 2.8.5 его пришлось немного модифицировать. Пришлось перед началом работы с tpl шаблоном, по которому формируется письмо насильно отключить xslt режим шаблонизатора, а в конце функцции вернуть все обратно

примерно вот так это выглядело

public function example(){
....
$xslTemplater = xslTemplater::getInstance();
$xslInited = $xslTemplater->setIsInited(false);
list($template) = def_module::loadTemplates("tpls/emarket/mail/custom_default.tpl", "neworder_notification");
...
$xslTemplater->setIsInited($xslInited);
}
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 02 Марта 2012, 09:45:31
в версии 2.8.5 сделали свой шаблонизатор xslt'ый , поэтому просто использовать tpl шаблон письма не получается.
О как!
И как мне использовать xslt-шаблон? У меня 2.8.5, я ничего не менял и у меня вызывается шаблон tpl - tpls/mail/default.tpl.
Но при этом получается, что данные передаются xslt?
С xslt мне привычнее работать. Как же его подключить для формирования письма, в каком файле он формируется?

Пришлось перед началом работы с tpl шаблоном, по которому формируется письмо насильно отключить xslt режим шаблонизатора, а в конце функцции вернуть все обратно
примерно вот так это выглядело
А эти вызовы куда нужно впихнуть? в __notification.php получается?
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 02 Марта 2012, 11:43:16
в моем случае, я делал небольшую хитрость, чтобы не править системные файлы, я писал свой обработчик event для события "оформления заказа", который дублировал системную функцию отправки письма, там и вписывал сточки с переназначением текущего шаблонизатора. А чтобы дефолтный метод не отрабатывался, я переименовывал файл tpls/emarket/mail/default.tpl и дефолтный метод не найдя шаблон, не посылал письмо. В своей custom функции, я конечно использовал другой файл ('defaut_custo.tpl'), который создавал конечно в той же папке /tpls/emarket/mail/
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 02 Марта 2012, 13:48:09
По tpl понятно, спасибо.
А как все-таки использовать xslt-шаблон для письма?
Если я правильно понял эту фразу: "в версии 2.8.5 сделали свой шаблонизатор xslt'ый , поэтому просто использовать tpl шаблон письма не получается."
Название: Re:Статусы заказов и шаблоны писем
Отправлено: penelite от 02 Марта 2012, 18:09:47
Разобрался.

Может кому пригодится:
нужно в config.ini выставить параметр use-old-templater = "0".
В этом случае письмо будет формироваться не по tpl, а по xslt шаблону.
Название: Re:Статусы заказов и шаблоны писем
Отправлено: Vyrd от 24 Апреля 2012, 15:09:07
у меня тоже  всегда выводится такой текст: "Российский рубль11Российский рубльруб1157"

Подскажите плиз как исправить?

P/S Шаблон письма TPL
Название: Re:Статусы заказов и шаблоны писем
Отправлено: korogan от 21 Ноября 2012, 21:00:55
Люди добрые!

Не получается разобраться.
Если кто то сделал и Вам не трудно объясните пожалуйста по подробнее что и как сделать нужно что бы можно было получать все данные  в письме о заказе совершенном пользователем.

Точнее что бы ему приходило на почту
Название: Re:Статусы заказов и шаблоны писем
Отправлено: admin от 22 Ноября 2012, 12:11:23
у вас xslt или tpl шаблонизатор используется?
Название: Re:Статусы заказов и шаблоны писем
Отправлено: korogan от 27 Ноября 2012, 14:32:27
Используется TPL шаблонизатор.

Буду очень признателен если сможет объяснить подробно как это можно реализовать.

Это очень нужно, думаю очень большому кол-ву людей.

Большое спасибо.