Jump to content

  • You cannot start a new topic
  • You cannot reply to this topic

Прикрепить Файл К Письму Rate Topic   - - - - -

 
  • Bat1
  • Advanced Member
  • Trial users
  • Join Date: 04-Mar 15
  • 126 posts

Posted 11 April 2015 - 11:49 AM #1

Доброго времени суток!

У товара есть опция "Файл" (см. http://shop.maash.ru...&product_id=500). Как этот файл прикрепить к письму вложением, отправляемому в отдел обработки заказов?

 
  • dbazhenov
  • CS-Cart expert
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6447 posts

Posted 11 April 2015 - 11:51 AM #2

Доброго времени суток!

У товара есть опция "Файл" (см. http://shop.maash.ru...&product_id=500). Как этот файл прикрепить к письму вложением, отправляемому в отдел обработки заказов?


Файл это для цифровых товаров, эти файлы приходят покупателям.

Есть модуль "Приложенные (прикреплённые) файлы" , эти файлы всегда доступны для скачивания, без факта покупки.

Речь о первых?

 
  • Bat1
  • Advanced Member
  • Trial users
  • Join Date: 04-Mar 15
  • 126 posts

Posted 11 April 2015 - 12:26 PM #3

Нет, совсем не то. Покупатель должен прикрепить свой файл при заказе товара. Этот файл нужно отправить на почту нашему менеджеру.

 
  • dbazhenov
  • CS-Cart expert
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6447 posts

Posted 11 April 2015 - 12:45 PM #4

Нет, совсем не то. Покупатель должен прикрепить свой файл при заказе товара. Этот файл нужно отправить на почту нашему менеджеру.


Тогда добавляйте товару опцию с типом "Файл" и покупатель сможет прикрепить файл к товару, этот файл будет отправлен всем и прикреплён к заказу.

Нет, совсем не то. Покупатель должен прикрепить свой файл при заказе товара. Этот файл нужно отправить на почту нашему менеджеру.


Кажется туплю, вам и нужно этот файл к письму приложить :)

Посмотрю. Сообщу.

 
  • fevzi
  • Junior Member
  • Members
  • Join Date: 11-Nov 10
  • 258 posts

Posted 11 April 2015 - 01:38 PM #5

Тогда добавляйте товару опцию с типом "Файл" и покупатель сможет прикрепить файл к товару, этот файл будет отправлен всем и прикреплён к заказу.



Кажется туплю, вам и нужно этот файл к письму приложить :)

Посмотрю. Сообщу.


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

 
  • dbazhenov
  • CS-Cart expert
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6447 posts

Posted 11 April 2015 - 01:42 PM #6

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


Нет, по ссылке можно посмотреть товар.

 
  • Bat1
  • Advanced Member
  • Trial users
  • Join Date: 04-Mar 15
  • 126 posts

Posted 11 April 2015 - 01:56 PM #7

Ну, реквизиты, тоже не помешает прикладывать к письму, но сейчас важнее прикрепить файл-опцию товара...

 
  • dbazhenov
  • CS-Cart expert
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6447 posts

Posted 11 April 2015 - 03:01 PM #8

Ну, реквизиты, тоже не помешает прикладывать к письму, но сейчас важнее прикрепить файл-опцию товара...


Фух, получилось.

Помните хук в классе Mailer.

fn_set_hook('send_mail_pre', $mailer, $params, $area, $lang_code);

Туда можно добавить.

if ($params['to'] == 'default_company_orders_department') {

	if (!empty($params['data']['order_info'])) {
		$products = $params['data']['order_info']['products'];

		foreach($products as $product) {
			if (!empty($product['extra']['custom_files'])) {

				$custom_files = $product['extra']['custom_files'];
				foreach($custom_files as $file) {
					$name = $file[0]['name'];
					$_path = $file[0]['path'];

					$path = Storage::instance('custom_files')->getAbsolutePath($_path);

					$params['attachments'][$name] = $path;
				}

			}

		}	  
	}  
}


 
  • dbazhenov
  • CS-Cart expert
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6447 posts

Posted 11 April 2015 - 03:07 PM #9

Если нужна детальная инструкция, то скажите.

Думаю, что стоит добавить пару проверок, ну это уже детали.

 
  • Bat1
  • Advanced Member
  • Trial users
  • Join Date: 04-Mar 15
  • 126 posts

Posted 14 April 2015 - 09:59 AM #10

$path = Storage::instance('custom_files')->getAbsolutePath($_path);
$params['attachments'][$name] = $path

ОшибкаОй, произошла ошибка (SyntaxError: Unexpected token <). Пожалуйста, попробуйте еще раз.

Если закомментировать первую строку (и вторую до кучи) то ошибки нет. Значит в первой строке есть ошибка, но никак не пойму какая. Помогите, пожалуйста, разобраться

ps: и как можно посмотреть содержимое переменных в этом хуке? fn_print_r не дает никакого результата (т.е. вывод ее неизвестно куда идет)

 
  • Bat1
  • Advanced Member
  • Trial users
  • Join Date: 04-Mar 15
  • 126 posts

Posted 14 April 2015 - 10:01 AM #11

ОшибкаОй, произошла ошибка (SyntaxError: Unexpected token <). Пожалуйста, попробуйте еще раз.
что-то с раскраской текста ошибки проблема...

 
  • dbazhenov
  • CS-Cart expert
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6447 posts

Posted 14 April 2015 - 10:07 AM #12

$path = Storage::instance('custom_files')->getAbsolutePath($_path);
$params['attachments'][$name] = $path


Добавьте в хук сверху:

use Tygh\Storage;

Если в изменяете статус в админке, то смена статуса выполняется Ajax и fn_print_r печатает в консоль.

Я тестировал на создании заказа.

Либо убирать с переключателя статуса cm-ajax .

 
  • Bat1
  • Advanced Member
  • Trial users
  • Join Date: 04-Mar 15
  • 126 posts

Posted 14 April 2015 - 11:10 AM #13

Да, ошибка исчезла.

Но. К письму ничего не прикрепляется.

<?php
if (!defined('BOOTSTRAP')) { die('Access denied'); }
use Tygh\Storage;
function fn_maash_design_send_mail_pre($mailer, $params, $area, $lang_code)
{
if ($params['to'] == 'default_company_orders_department') {
		 if (!empty($params['data']['order_info'])) {
				 $products = $params['data']['order_info']['products'];
				 foreach($products as $product) {
						 if (!empty($product['extra']['custom_files'])) {
								 $custom_files = $product['extra']['custom_files'];
								 foreach($custom_files as $file) {
										 $name = $file[0]['name'];
										 $_path = $file[0]['path'];
										 $path = Storage::instance('custom_files')->getAbsolutePath($_path);
fn_print_r($path);
										 $params['attachments'][$name] = $_path;
								 }
						 }

				 }		
		 }
}
}

Может что-то не так? Или может быть нужны еще какие-то действия?

И еще вопрос - а почему прикрепленный файл теряет свое расширение?

 
  • Bat1
  • Advanced Member
  • Trial users
  • Join Date: 04-Mar 15
  • 126 posts

Posted 14 April 2015 - 11:16 AM #14

А, извиняюсь, сам - дурак...
Экспериментировал...

Теперь все прикрепляется, но все равно интересно, почему у файла нет расширения?

 
  • dbazhenov
  • CS-Cart expert
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6447 posts

Posted 14 April 2015 - 11:38 AM #15

А, извиняюсь, сам - дурак...
Экспериментировал...

Теперь все прикрепляется, но все равно интересно, почему у файла нет расширения?


Не знаю.
Распечатайте:

$file[0]

Возможно $name нужно склеить.

 
  • Griefz
  • Newbie
  • Trial users
  • Join Date: 28-Jul 16
  • 12 posts

Posted 03 August 2016 - 02:20 PM #16

Здравствуйте! Возможно невнимательно прочитал, но не могу понять как это реализовать. У меня стоит подобная задача, нужно чтобы в форме заказа была возможность, даже необходимость(обязательное поле) прикрепить файл, и чтобы он уходил с заказом, желательно отображался и в админке в этом заказе. Опишите, пожалуйста, подробно как это реализовать... А может и готовый модуль уже есть?)