Автор Тема: Добавление своего поля в отправку письма mailalerts  (Прочитано 344 раз)

04 Июль 2020, 18:24:16
  • Новичок
  • *
  • Сообщений: 25
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет, у меня в форме имеется свои 2 поля  phone1  и adres. 
При отправке письма они разумеется не отправляются так-как нет в письме их. 

При добавлении полей в форму приходят пустые строки, на пример "Номер телефона: "Пустая строка".

Изменения разумеется внес в файлах: 
New_order.html - добавил копию блока + вписал {phone1}.
New_order.txt - добавил Номер телефона: {phone1}.
onepagecheckoutps.php - добавил строку:
protected function sendConfirmationMail(Customer $customer, $password)
    {
        if (Configuration::get('PS_CUSTOMER_CREATION_EMAIL')) {
            Mail::Send(
                $this->context->language->id,
                'account',
                Mail::l('Welcome!'),
                array('{firstname}' => $customer->firstname,
                    '{lastname}'  => $customer->lastname,
                    '{email}'     => $customer->email,
                    '{phone1}'     => $customer->phone1,
                    '{passwd}'    => $password
                ),
                $customer->email,
                $customer->firstname.' '.$customer->lastname
            );
        }
    }


pw_emailalerts.php - Добавил 2 значения:
        $template_vars = array(
            '{firstname}' => $customer->firstname,
            '{lastname}' => $customer->lastname,
            '{email}' => $customer->email,
            '{phone1}' => $customer->phone1,

и тут:
// Filling-in vars for email
        $template_vars = array(
            '{firstname}' => $customer->firstname,
            '{lastname}' => $customer->lastname,
            '{email}' => $customer->email,
            '{phone1}' => $customer->phone1,


04 Июль 2020, 19:39:31
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В модулях onepagecheckoutps и mailalerts разные контроллеры и разные переменные шаблонов.
Данные берутся из разных таблиц.
У вас как определены дополнительные поля?
04 Июль 2020, 19:44:11
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Переменная phone1 вряд ли из класса Customer, скорее всего из адреса.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
04 Июль 2020, 19:51:02
Ответ #3
  • Новичок
  • *
  • Сообщений: 25
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В модулях onepagecheckoutps и mailalerts разные контроллеры и разные переменные шаблонов.
Данные берутся из разных таблиц.
У вас как определены дополнительные поля?

У меня получается созданы поля помимо стандартных в модуле быстрого заказа. - https://prnt.sc/tbsx0b
Получается что после отправки заказа через модуль OnePage Checkout надо добавить 2 поля чтобы в письме приходили помимо стандартных которые красным выделены на скрине.
04 Июль 2020, 19:54:51
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В какой таблице сохраняет эти поля? В ps_customer?
04 Июль 2020, 19:58:10
Ответ #5
  • Новичок
  • *
  • Сообщений: 25
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
04 Июль 2020, 20:15:38
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы использоывть эти поля в модуле ps_emailalerts их нужно инициализировать в ps_emailalerts.php
Это не "$customer->phone1", а класс модуля onepagecheckoutps.
Смотрите как в модуле onepagecheckoutps определяют переменные шабонов писем, подключаете класс onepagecheckoutps в модуле ps_emailalerts и переносите переменные письма.
04 Июль 2020, 20:25:46
Ответ #7
  • Новичок
  • *
  • Сообщений: 25
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы использоывть эти поля в модуле ps_emailalerts их нужно инициализировать в ps_emailalerts.php
Это не "$customer->phone1", а класс модуля onepagecheckoutps.
Смотрите как в модуле onepagecheckoutps определяют переменные шабонов писем, подключаете класс onepagecheckoutps в модуле ps_emailalerts и переносите переменные письма.
Я даун в этом, не могли бы что именно сделать в ps_emailalerts.php ?   прикрепил оба модуля, напишите если не сложно какой кусок кода вставить куда.
04 Июль 2020, 20:26:39
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Можно методом getField класса FieldClass модуля onepagecheckoutps
FieldClass::getField($id_lang, $id_shop, $object, $name_field)
получить значение любого созданного поля и передать его в шаблон письма.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!