Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Как убрать строку в письме с заказом?


bloginfo
 Поделиться

Рекомендованные сообщения

Друзья, подскажите пожалуйста в каком файле отредактировать шаблон письма клиенту при заказе. Есть потребность убрать поле доставки, или цифру 0 во втором столбце. Пробовали манипуляции с файлом order_add.twig из папки mail;

<tfoot>
    
    {% for total in totals %}
    <tr>
      <td style="font-size: 12px;    border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;" colspan="4"><b>{{ total.title }}:</b></td>
      <td style="font-size: 12px;    border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;">{{ total.text }}</td>
    </tr>
    {% endfor %}
      </tfoot>

но положительных результатов нет

Спойлер

249249.jpg.c0f47b9b01cfc015aea659296fccc7e6.jpg

 

Ссылка на комментарий
Поделиться на других сайтах


Не совсем понятна суть задачи.
На что именно Вам нужно заменить "0 грн"? Для конкретной службы доставки или для всех, у которых стоимость 0?
Если для конкретной службы - Новая почта - и если учитывать, что в самой службе невозможно в поле стоимость ввести текст (ну или что Вам нужно), то самы простой вариант - в контроллере внести изменения.
в файле /catalog/controller/mail/order.php в функции add находим код: 

foreach ($order_totals as $order_total) {
	$data['totals'][] = array(
		'title' => $order_total['title'],
		'text'  => $this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']),
	);
}


Ну и заменяем его на такой код:
 

foreach ($order_totals as $order_total) {
	if ($order_total['title'] == 'Отправка службой "Новая почта"') {
		$data['totals'][] = array(
			'title' => $order_total['title'],
			'text'  => 'Тут добавляйте любой нужный Вам текст. Даже чистый HTML, что-то типа <b>жирный текст</b>',
		);
	} else {
		$data['totals'][] = array(
			'title' => $order_total['title'],
			'text'  => $this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']),
		);
	}			
}


Могут возникнуть сложности со строкой 

if ($order_total['title'] == 'Отправка службой "Новая почта"') {

Так как есть вероятность что вместо кавычек у Вас в строке могут быть и экранированные кавычки /", и юникод &#34; и прочее. То уже Вам смотреть, но логика именно такая.

И да, если нужно исправить в письме, которое отправляется админу, то в функции alert ищите тот же цикл:
 

foreach ($order_totals as $order_total) {
	$data['totals'][] = array(
		'title' => $order_total['title'],
		'value' => html_entity_decode($this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8')
	);
}


Ну и по аналогии...

Если же нужно Все ноли заменить на какой-то определенный текст, то можно изменить условие и вместо:
 

if ($order_total['title'] == 'Отправка службой "Новая почта"') {

вставить это:
 

if ((int)$order_total['value'] == 0) {


Но, опять же, это костыли, назначение которого не совсем понятно :)

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Добрый вечер!

Посмотрите catalog/controller/mail/order.php на стр. 242 формируется массив totals. Там уже решите доставку отсечь или ноль убрать из массива.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


@nogocuHoBuk Подскажите есть ли возможность вместо if ($order_total['title'] == 'Отправка службой "Новая почта"') вставить переменную, что-то типа 'text_description' из языкового файла новая почта, для мультиязычности метода? Ваш вариант работает но только для одного языка. 

Ссылка на комментарий
Поделиться на других сайтах


28 минут назад, bloginfo сказал:

@nogocuHoBuk Подскажите есть ли возможность вместо if ($order_total['title'] == 'Отправка службой "Новая почта"') вставить переменную, что-то типа 'text_description' из языкового файла новая почта, для мультиязычности метода? Ваш вариант работает но только для одного языка. 


Откажитесь от моей первоначальной затеи сравнивать название службы доставки :)
То я был сонный
Правильней привязаться к коду доставки:

 

		foreach ($order_totals as $order_total) {
			if ($order_total['code'] == 'shipping' && $order_info['shipping_code'] == 'flat.flat') {
				$data['totals'][] = array(
					'title' => $order_total['title'],
					'text'  => 'Тут добавляйте любой нужный Вам текст. Даже чистый HTML, что-то типа <b>жирный текст</b>',
				);
			} else {
				$data['totals'][] = array(
					'title' => $order_total['title'],
					'text'  => $this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']),
				);
			}			
		}


flat.flat - вставил для примера. Вы можете вставить код Вашей службы доставки (новой почты)

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Добрый день

Можно попробовать отфильтровать все способы доставки так if ($order_total['code'] == 'shipping')

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


3 минуты назад, SergejX сказал:

Добрый день

Можно попробовать отфильтровать все способы доставки так if ($order_total['code'] == 'shipping')

Собственно тоже да, но мы пока не знаем нужно изменение для конкретной службы доставки или для всех, у который сумма 0
Если для конкретной, то по shipping_code, как в моём примере
 

if ($order_total['code'] == 'shipping' && $order_info['shipping_code'] == 'flat.flat') {


Если в любой доставке с 0, то по сумме:
 

if ($order_total['code'] == 'shipping' && (int)$order_total['value'] == 0) {

 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

@nogocuHoBuk @SergejX Спасибо что не оставили без внимания наш вопрос!

Реализовали следующим образом;

в catalog\controller\mail в файле order.php в массиве // Order Totals 242 строка, добавили после
        $order_totals = $this->model_checkout_order->getOrderTotals($order_info['order_id']) ;

следующее;

        foreach ($order_totals as $order_total) {
            if ($order_total['code'] == 'shipping' && (int)$order_total['value'] == 0) {
                $data['totals'][] = array(
                    'title' => $order_total['title'],
                    'text'  => '',
                );
            } else {
                $data['totals'][] = array(
                    'title' => $order_total['title'],
                    'text'  => $this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']),
                );
            }            
        }

Все как Вы и советовали. Текст пока не стали выводить, в планах создать в текстовых файлах переменные для каждого языка и каким то образом вывести в контролере. Как это будет пока не знаем, изучаем этот вопрос. 

Еще раз спасибо за технический лик.без и поддержку!

p/s думаем можно даже прописать путь к изображению логотипа почты в 'text'  => '',

Спойлер

2492494.jpg.bca727ed62f05c8759f03520e6d98cc3.jpg

 

Изменено пользователем bloginfo
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.