А саме замініть рядок
$ Event-> Send ( "SALE_NEW_ORDER", SITE_ID, $ arFields);
на наступний шматок коду:
$ EventName = "SALE_NEW_ORDER";
$ BSend = true;
$ Db_events = GetModuleEvents ( "sale", "OnOrderNewSendEmail");
while ($ arEvent = $ db_events-> Fetch ())
if (ExecuteModuleEventEx ($ arEvent, Array ($ arResult # 91; "ORDER_ID" # 93 ;, $ EventName, $ ArFields)) === false)
$ BSend = false;
if ($ bSend)
$ Event-> Send ( "SALE_NEW_ORDER", SITE_ID, $ arFields);
Чи не заробив даний метод і в order.ajax цієї події теж немає.
Зате знайшов готовий модуль "Розширення повідомлень про замовлення" - прекрасно виводить властивості замовлення.
Мені потрібно було вивести ще службу доставки та платіжну систему тому трохи дописав файл:
modules> shopolia.emailfields> classes> mysql> CShopoliaEmailFieldsHandlers.php
Знаходимо поштовий шаблон:
if ($ event == "SALE_NEW_ORDER" AND $ arFields # 91; 'ORDER_ID' # 93;> 0)
І дописуємо в нього потрібні елементи:
На виході отримуємо крім стандартних функцій модуля ще кілька змінних, які можна використовувати в шаблоні:
Можна легко окультурити при необхідності.
Використовував цей спосіб і зіткнувся з однією проблемою. Проблема ця грунтується на тому, що Бітрікс ще не дописали свою функцію CSaleOrder :: GetByID. а саме не додав туди STORE_ID для визначення який пункт видачі обраний, погодьтеся що цю інформацію теж було б непогано додати в поштове повідомлення. Поколупався, і ось що зробив:
1. У поштові шаблони і тип п. Події додаємо тег # DELIVERY_DESCRIPTION # - опис доставки
2. Поточний код за визначенням способу доставки
Замінюємо на наступний:
P.S. рішення тимчасове, тому що коли допишуть основну функцію можна буде зробити простіше
P.S. а купувати модуль за 1500 вважаю нерозумно навіть для тих хто не сильний в програмуванні, тому що вони все одно виконують функціонал не так як треба замовнику і все одно доводиться звертатися до програмістів або самим мозок мучити.