Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Друзья, подскажите пожалуйста в каком файле отредактировать шаблон письма клиенту при заказе. Есть потребность убрать поле доставки, или цифру 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
Надіслати
Поділитися на інших сайтах

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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.