Автор Тема: где находится шаблон письма о новом заказе для администратора магазина?  (Прочитано 6215 раз)

28 Марта 2012, 10:26:56
  • Пользователь
  • **
  • Сообщений: 76
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте.
Подскажите где находится шаблон письма о новом заказе которое приходит администратору магазина на почту после оформления на сайте нового заказа?

Я думал в /mails/ru, но там не нашел такого письма... Установил модуль редактора писем - проверил все шаблоны - для клиента, после оформления заказа шаблон который ему приходит - есть, а вот где шаблон для администратора - не могу найти... Заранее благодарен за помощь.
28 Марта 2012, 11:43:33
Ответ #1
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
Редактировать фразы в шаблонах писем:
Панель управления >> Инстументы >> Перевод >> Перевод шаблонов эл.писем
Шаблоны писем предупреждений :
/modules/mailalerts/mails/ru/...
28 Марта 2012, 13:06:05
Ответ #2
  • Пользователь
  • **
  • Сообщений: 76
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответ, у меня преста 1.3.1.1:

1) Там нет такого пункта как "Перевод шаблонов эл.писем" (см. приложение).
2) В /modules/mailalerts/mails/ru/... есть шаблон new_order.txt и new_order.html. Провел правки и там и там, оформил опять заказ, но ничего не поменялось.

Дело в том что мне нужно изменить ТЕМУ письма и поле "От кого", а не шаблон самого заказа.
В теме письма у меня пишется сейчас "Новый заказ", а я еще хочу добавить чтобы выводился номер заказ и было "Новый заказ №12", к примеру.

Для этого в new_order.html произвел изменения:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Новый заказ №{order_name}</title>
</head>
<body>
<table style="font-family:Verdana,sans-serif; font-size:11px; color:#374953; width: 550px;">
<tr>
<td align="left">
<a href="Shop.ru" title="Shop.ru"><img alt="Shop.ru" src="{shop_logo}" style="border:none;" ></a>
</td>
</tr>
<tr><td>&nbsp;</td></tr>
<tr>
Но номер заказа все равно не выводиться. Все осталось как было.

И второе – мне нужно чтобы в поле от кого выводилось название магазина которое я сам укажу, а не то что указано в админке.

Я поднимал уже этот вопрос на форумах. Мне подсказали что:
Цитировать
Служебная информация (такая как поля "от кого", "тема" ...) меняется в function Send() класса Mail.
class Mail
{
static public function Send($id_lang, $template, $subject, $templateVars, $to, $toName = NULL, $from = NULL, $fromName = NULL, $fileAttachment = NULL, $modeSMTP = NULL, $templatePath = _PS_MAIL_DIR_)
{
$configuration = Configuration::getMultiple(array('PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'PS_MAIL_SMTP_ENCRYPTION', 'PS_MAIL_SMTP_PORT', 'PS_MAIL_METHOD', 'PS_MAIL_TYPE'));
if(!isset($configuration['PS_MAIL_SMTP_ENCRYPTION'])) $configuration['PS_MAIL_SMTP_ENCRYPTION'] = "off";
if(!isset($configuration['PS_MAIL_SMTP_PORT'])) $configuration['PS_MAIL_SMTP_PORT'] = "default";

if (!isset($from)) $from = $configuration['PS_SHOP_EMAIL'];
if (!isset($fromName)) $fromName = $configuration['PS_SHOP_NAME'];
...........................

Я произвел также изменения в class Mail, теперь в поле от кого выводится необходимое мне название когда клиент отправляет мне сообщение из заказа, а вот когда приходит извещение о новом заказе, о все равно пишется стандартное название из админки, а у меня оно около 300 символов и выглядит не красиво. Поэтому и хочу изменить.  Где же нужно копать чтобы изменить поле «От кого» в шаблоне с извещением о новом заказе?
28 Марта 2012, 13:49:35
Ответ #3
28 Марта 2012, 14:03:47
Ответ #4
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
Цитировать
Не пробывал поменять это ?
$subject = ...;
В модуле mailalerts:
/modules/mailalerts/myalerts.php
// Filling-in vars for email
$template = 'new_order';
$subject = $this->l('New order', $id_lang);
Добавьте в $subject номер заказа.
28 Марта 2012, 16:26:42
Ответ #5
  • Пользователь
  • **
  • Сообщений: 76
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
28 Марта 2012, 16:55:39
Ответ #6
  • Пользователь
  • **
  • Сообщений: 76
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Не пробывал поменять это ?
$subject = ...;
У меня в /classes/Mail.php нет
Цитировать
$subject = ...;

В модуле mailalerts:
/modules/mailalerts/myalerts.php
В $subject = исправил так, но номер заказа все равно не появился:
$subject = $this->l('New order', 'id_order');
Я уже и в /modules/mailalerts/myalerts.php убрал переменную с названием магазина:
$templateVars = array(
'{firstname}' => $customer->firstname,
'{delivery_company}' => $delivery->company,
'{shop_name}' => ('Shop.ru'),
'{date}' => $order_date_text,
'{carrier}' => (($carrier->name == '0') ? ('Shop.ru') : $carrier->name),
'{payment}' => $order->payment,
);

А в поле "От кого" все равно стандартное длинное название магазина выводится вместо необходимого - Shop.ru.

Причем если клиент из админки отправит сообщение, то в поле "От кого"  приходит "Shop.ru", а если новый заказ оформят - то почему-то длинное название не изменяется... :(
28 Марта 2012, 19:16:40
Ответ #7
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22166
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Цитировать
Я уже и в /modules/mailalerts/myalerts.php убрал переменную с названием магазина:
Нужно не убирать, а присвоить значение.
'{shop_name}' => Configuration::get('PS_SHOP_NAME')поставь сразу название магазина.
$subject = $this->l('New order', 'id_order'); 'id_order' - что это за значение, у тебя есть такая переменная ?
Там в $templateVars :
'{order_name}' => sprintf("%06d", $order->id)
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
28 Марта 2012, 20:50:02
Ответ #8
  • Пользователь
  • **
  • Сообщений: 76
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
mAgency, спасибо за попытку помочь. Замечания Ваши учел и выполнил.
'{shop_name}' - присвоил значение,
'{invoice_phone}' => $invoice->phone,
'{invoice_other}' => $invoice->other,
'{order_name}' => sprintf("%06d", $order->id),
'{shop_name}' => Configuration::get('Shop.ru'),
'{date}' => $order_date_text,
'{carrier}' => (($carrier->name == '0') ? ('Shop.ru') : $carrier->name),
'{payment}' => $order->payment,
'{items}' => $itemsTable,
В $subject тоже переменную заменил, теперь так у меня:
$subject = $this->l('New order', 'order_name');Внес все указанные выше изменения и попытался оформить заказ. Выбрал способ оплаты и нажал разместить заказ - появилось сообщение - "Попытка проникновения".. :(

Если изменяю
'{shop_name}' => Configuration::get('Shop.ru'),
на
'{shop_name}' => ('Shop.ru'),
То заказ оформляется, но тема заказа вместо "Новый заказ" написана "New order" и номера заказа все так же нет...  И поле "От кого" также осталось - 3 строки вместо нужного "Shop.ru"...
30 Марта 2012, 11:51:33
Ответ #9
  • Пользователь
  • **
  • Сообщений: 76
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Неужели больше нет никаких вариантов чтобы реализовать это.... :(
31 Марта 2012, 16:37:00
Ответ #10
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22166
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Больше нет, переменные для шаблона письма в этом модуле.
Для темы письма.
$subject = $this->l('New order', 'order_name');я уже писал,
Цитировать
'id_order', или 'order_name' или дюбая другая- что это за значение, у тебя есть такая переменная, у тебя в переводе происходит подстановка значений или ...  ?
$subject = $this->l('New order').sprintf("%06d", $order->id);{shop_name}' => 'Shop.ru'
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
01 Апреля 2012, 11:44:17
Ответ #11
  • Пользователь
  • **
  • Сообщений: 76
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
mAgency, номер заказа появился, СПАСИБО.
А вот в поле "От кого" текст не изменился.  Те же 3 строчки... :( Может я не там переменной значение присвоил.... Сейчас у меня так:

// Filling-in vars for email
$template = 'new_order';
$subject = $this->l('New order').sprintf("%06d", $order->id);
$templateVars = array(
'{firstname}' => $customer->firstname,
'{lastname}' => $customer->lastname,
'{email}' => $customer->email,
'{delivery_company}' => $delivery->company,
'{delivery_firstname}' => $delivery->firstname,
'{delivery_lastname}' => $delivery->lastname,
'{delivery_address1}' => $delivery->address1,
'{delivery_address2}' => $delivery->address2,
'{delivery_city}' => $delivery->city,
'{delivery_postal_code}' => $delivery->postcode,
'{delivery_country}' => $delivery->country,
'{delivery_state}' => $delivery->id_state ? $delivery_state->name : '',
'{delivery_phone}' => $delivery->phone,
'{delivery_other}' => $delivery->other,
'{invoice_company}' => $invoice->company,
'{invoice_firstname}' => $invoice->firstname,
'{invoice_lastname}' => $invoice->lastname,
'{invoice_address2}' => $invoice->address2,
'{invoice_address1}' => $invoice->address1,
'{invoice_city}' => $invoice->city,
'{invoice_postal_code}' => $invoice->postcode,
'{invoice_country}' => $invoice->country,
'{invoice_state}' => $invoice->id_state ? $invoice_state->name : '',
'{invoice_phone}' => $invoice->phone,
'{invoice_other}' => $invoice->other,
'{order_name}' => sprintf("%06d", $order->id),
'{shop_name}' => 'Shop.ru',
        '{date}' => $order_date_text,
'{carrier}' => (($carrier->name == '0') ? ('Shop.ru') : $carrier->name),
'{payment}' => $order->payment,
'{items}' => $itemsTable,
'{total_paid}' => Tools::displayPrice($order->total_paid, $currency),
'{total_products}' => Tools::displayPrice($order->getTotalProductsWithTaxes(), $currency),
'{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency),
'{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency),
'{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency),
'{currency}' => $currency->sign,
'{message}' => $message
);
$iso = Language::getIsoById(intval($id_lang));
if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/'.$template.'.txt') AND file_exists(dirname(__FILE__).'/mails/'.$iso.'/'.$template.'.html'))
Mail::Send($id_lang, $template, $subject, $templateVars, explode(self::__MA_MAIL_DELIMITOR__, $this->_merchant_mails), NULL, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/');
}

'{shop_name}' => 'Shop.ru',

Может вот тут нужно как-то поменять :
$configuration['PS_SHOP_NAME']

Mail::Send($id_lang, $template, $subject, $templateVars, explode(self::__MA_MAIL_DELIMITOR__, $this->_merchant_mails), NULL, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/');

01 Апреля 2012, 14:02:30
Ответ #12
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
Цитировать
Может вот тут нужно как-то поменять :
$configuration['PS_SHOP_NAME']
Поменяйте, протестируйте, получите точный ответ. Не бойтесь эксперементировать, конечно на тестовом сайте.
 
Цитировать
Уже обсуждали.
Тема "Как изменить название магазина в сообщениях клиентам?"
в этой теме было обсуждение функции:
function Send($id_lang, $template, $subject, $templateVars, $to, $toName = NULL, $from = NULL, $fromName = NULL, $fileAttachment = NULL, $modeSMTP = NULL, $templatePath = _PS_MAIL_DIR_)при вызове этой функции и задаются служебные поля письма, например, $fromName='Shop.ru' (в вашем случае, просто - 'Shop.ru')
А  значения $templateVars используются в шаблоне письма.
22 Мая 2015, 10:56:43
Ответ #13
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Камрады, выручайте. Немного поправил текст письма в Локализация -> шаблоны емаил. В итоге все шаблоны стали синими. Синий фон в режиме html, слетели все стили и пропал логотип. В таком же виде письма приходят на почту. Даже не понял как так легко можно было сломать. Как исправить, камрады?
22 Мая 2015, 12:33:22
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 13446
  • Репутация: +14561/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Востановить папку /mails/ru/ из стандарного пакета prestashop.
Скачать prestashop, заменить свои шаблоны в этой папке на стандарные.