Не работают переменные в шаблоне письма.

Тема в разделе "PrestaShop", создана пользователем Serij_85, 9 фев 2016.

  1. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    Помогите, пожалуйста, решить проблему: мне было необходимо отключить автоматическую отправку письма "Подтверждение заказа" и настроить этот процесс вручную.
    Отключил закодировав. Подробнее в теме http://wmasteru.org/threads/Оплата-после-подтверждения-заказа.8562/
    Настроил созданием отдельного статуса и подключением к нему шаблона письма order_conf.
    В ходе попыток наладить данный процесс удалял файлы шаблона данного письма с хостинга (из папки mails в корне и из папки mails в теме). Конечно же сохранял копии на компе. Потом запихнул их обратно на хостинг.
    В результате всех этих манипуляций в шаблоне письма order_conf перестали работать переменные, отвечающие за подстановку данных. А точнее
    Заказ:201625 Оформлен {date}
    Способ оплаты:{payment}
    {products}
    {discounts}
    Товары {total_products}
    Скидки {total_discounts}
    Подарочная упаковка {total_wrapping}
    Доставка {total_shipping}
    Всего НДС {total_tax_paid}
    Перевозчик:{carrier}
    Способ оплаты:{payment}
    {delivery_block_html}
    {invoice_block_html}

    При этом некоторые переменные работают. Такие как: {firstname}, {lastname}, {shop_name}, {order_name}, {total_paid},
    Шаблон письма не редактировал!
    Подскажите, пожалуйста, как решить данную проблему?
    С меня симпатия))
     
  2. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    Потому что за отправку писем с изменением статуса заказа и писем с подтверждением отвечают разные части скрипта. При изменении статуса нет таких переменных, это надо переписывать/дописывать код.
     
    Serij_85 нравится это.
  3. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    Подскажи, пожалуйста, с каким файлом работать? И из какой его части брать инфу и в какую вставлять? Т.е. как решить данную проблему?
     
  4. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    Переписываете функцию postProcess в AdminOrdersController чтобы она подхватывала те же переменные в письмах что и функция validateOrder из PaymentModule
     
    Serij_85 нравится это.
  5. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    Спасибо. А не знаете есть модуль упрощающий данную работу? А то больно много операций для изменения такой простой вещи.
     
  6. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    Вряд ли
     
    Serij_85 нравится это.
  7. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    AdminOrdersController нет такого файла((( есть папка "order". Может быть в ней какой-то документ?
     
  8. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    в папке \controllers\admin
     
    Serij_85 нравится это.
  9. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    duke1999 помоги, пожалуйста, разобраться что и куда нужно дописать, чтобы функция postProcess в AdminOrdersController подхватывала те же переменные в письмах что и функция validateOrder из PaymentModule.
    Я нашёл функцию public function postProcess(). Она начинается на строке 450 и заканчивается 1526 строкой.
    Разделена на:
    строка 452 - // If id_order is sent, we instanciate a new Order object - // Если id_order отправляется, мы instanciate новыйпорядокобъекта
    461 - /* Update shipping number */ - /* Обновление номер отгрузочной накладной */
    512 - /* Changeorderstatus, addanewentryinorderhistoryandsendane-mailtothecustomerifneeded */ - /* Изменить статус заказа, добавить новую запись в историю заказа и отправьте по электронной почте клиенту, если это необходимо */
    562 - /* Addanewmessageforthecurrentorderandsendane-mailtothecustomerifneeded */ - /* Добавить новое сообщение для текущего заказа и отправьте по электронной почте клиенту, если это необходимо */
    648 - /* Partial refund from order */ - /* Частичный возврат из заказа */
    831 - /* Cancel product from order */ - /* Отмена продукта из заказа */

    Но, т.к. не разбираюсь в кодах, не могу понять что вообще за что отвечает и как это поменять.
     
  10. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    На какое событие конкретно надо поменять? Там разный код посылки для разных писем, к сожалению, к каждому надо по разному приписывать.
     
    Serij_85 нравится это.
  11. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    Необходимо для отдельно созданного статуса "Подтверждение заказа". Шаблон письма "order_conf".
    По умолчанию, в Престе письмо "Подтверждение заказа" (заказ Оформлен) отправляется автоматически вместе с письмом (статусом заказа) "В обработке". Благодаря Вам я закодировал данную операцию и теперь отправляю письмо с подтверждением заказа вручную, как и хотел, но многие переменные не работают.
    Благодарю за помощь!
     
  12. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    https://www.dropbox.com/s/h3u76h09z4rbvlb/AdminOrdersController.php?dl=0

    Файл положить в папку override/controllers/admin будут доступны в шаблоне все поля, что и в письме о новом заказе из mailalerts
     
    Serij_85 нравится это.
  13. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    Не помогло((( Не работают переменные.
     
  14. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    cache/class_index.php удалите
     
    Serij_85 нравится это.
  15. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    Частично заработало. Не работают самые важные переменные {products} и {discounts}. Я так понимаю этих переменных нет в mailalerts. Вместо {products} там {items}. Попытался в шаблоне письма заменить одно другим - получилось коряво((( А {discounts} видимо вообще ничем не заменить(((
     
  16. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    коряво потому что там html таблица рисуется внутри кода и её надо рисовать под конкретный шаблон прямо внутри этой функции.
    {discounts} нет, есть {total_discounts}
     
    Serij_85 нравится это.
  17. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    а можно как-то добавить {products} и {discounts} в AdminOrdersController ?
     
  18. duke1999

    duke1999

    Регистрация:
    30 дек 2014
    Сообщения:
    143
    Симпатии:
    48
    зачем? поменяйте {products} на {items}, а {discounts} на {total_discounts} в шаблоне письма
     
    Serij_85 нравится это.
  19. Serij_85

    Serij_85

    Регистрация:
    9 янв 2016
    Сообщения:
    87
    Симпатии:
    3
    а объясните поподробнее как перерисовать html таблицу внутри кода прямо внутри этой функции. откуда взять параметры таблицы и куда их вставить? я так понимаю, что я должен параметры таблицы {products} скопировать и присвоить {items} ?