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

Вывод custom_fields в письме админу


Gann

Recommended Posts

Здравствуйте!

В файл /catalog/view/theme/default/template/mail/order.tpl

прописываю:

  <?php foreach ($account_custom_fields as $custom_field) { ?>
       <?php echo $custom_field['3']; ?>
                <?php } ?>

3 - это ID произвольного поля.

 

В результате в письме выходит ошибка - неизвестные переменные. Это и понятно - надо добавить в контроллер.

 

Вопросы:

 

1) какой контроллер за это отвечает?

2) хватит ли добавления в него:

 

$data['account_custom_field'] = $order_info['custom_field'];

 

или

 

надо всё вот это (из order.php)

 

		// Custom Fields
		$this->load->model('customer/custom_field');

		$data['custom_fields'] = array();

		$filter_data = array(
			'sort'  => 'cf.sort_order',
			'order' => 'ASC'
		);

		$custom_fields = $this->model_customer_custom_field->getCustomFields($filter_data);

		foreach ($custom_fields as $custom_field) {
			$data['custom_fields'][] = array(
				'custom_field_id'    => $custom_field['custom_field_id'],
				'custom_field_value' => $this->model_customer_custom_field->getCustomFieldValues($custom_field['custom_field_id']),
				'name'               => $custom_field['name'],
				'value'              => $custom_field['value'],
				'type'               => $custom_field['type'],
				'location'           => $custom_field['location'],
				'sort_order'         => $custom_field['sort_order']
			);
		}

Спасибо за ваши ответы)

Надіслати
Поділитися на інших сайтах

  • 3 weeks later...
  • 2 months later...

Кажется маленько начал разбираться.

 

В таблице oc_order

 

есть  payment_custom_field:

 

{"5":"3808092294","1":"3124eafa2c9c2f7e6ad5531be7ee716b46f4fa79"}

 

Как мне вывести в письме "5":"3808092294"?

Надіслати
Поділитися на інших сайтах

1 час назад, nikifalex сказал:

вы 3 месяца не могли найти ссылку и изобретали велосипет?

http://simpleopencart.com/info/4.x/faq_ru.html

 Не.

Попробовал сделать - не получилось - бросил. Теперь вот решил вернуться к решению этого вопроса.

 

У меня нет модуля Simple. 

Я должен был увидеть это?

$field_1_text = $this->model_tool_simplecustom->getShippingAddressField($order_id, 'custom_field_id');
Надіслати
Поділитися на інших сайтах

10 часов назад, nikifalex сказал:

{custom_field_2}

в формате адреса тогда.

Раз вы ярый противник симплы

Я не противник СИМПЛЫ, я просто не понимаю что и как. С другими вещами вроде ещё можно разобраться, а тут - контроллера нет, всё как то странно сделано.

{custom_field_2} - прямо так указать в шаблоне?

Или php echo $custom_field_2?

 

Попробовал так сделать:

 

<?php foreach ($order['shipping_custom_fields'] as $custom_field) { ?>
<tr data-sort="<?php echo $custom_field['sort_order'] + 1; ?>">
<td style="font-size: 12px;	border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $custom_field['name']; ?>:</td>
<td style="font-size: 12px;	border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $custom_field['value']; ?></td>
 </tr>
<?php } ?>

не работает

Надіслати
Поділитися на інших сайтах

Сделал так:

 


				if ($order_info['shipping_address_format']) {
					$format = $order_info['shipping_address_format'];
				} else {
					$format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}' . "\n" . '{custom_field_5}';
				}

				$find = array(
					'{firstname}',
					'{lastname}',
					'{company}',
					'{address_1}',
					'{address_2}',
					'{city}',
					'{postcode}',
					'{zone}',
					'{zone_code}',
					'{country}',
'{custom_field_5}'
				);

				$replace = array(
					'firstname' => $order_info['shipping_firstname'],
					'lastname'  => $order_info['shipping_lastname'],
					'company'   => $order_info['shipping_company'],
					'address_1' => $order_info['shipping_address_1'],
					'address_2' => $order_info['shipping_address_2'],
					'city'      => $order_info['shipping_city'],
					'postcode'  => $order_info['shipping_postcode'],
					'zone'      => $order_info['shipping_zone'],
					'zone_code' => $order_info['shipping_zone_code'],
					'country'   => $order_info['shipping_country'],
'custom_field_5'   => $order_info['custom_field']
				);

				$data['shipping_address'] = str_replace(array("\r\n", "\r", "\n"), '<br />', preg_replace(array("/\s\s+/", "/\r\r+/", "/\n\n+/"), '<br />', trim(str_replace($find, $replace, $format))));

				$this->load->model('tool/upload');

Теперь в письме выводится "Array". Уже что-то выводится!))

 

Как же теперь дальше распаковать этот аррэй?

Надіслати
Поділитися на інших сайтах

Сделал так 'custom_field_5'   => $order_info['shipping_custom_field'] - всё равно массив. 

 

Ошибка

2017-10-20 4:25:21 - PHP Notice:  Array to string conversion in /site/catalog/model/checkout/order.php on line 542

Надіслати
Поділитися на інших сайтах

С произвольными полями в виде текстовых полей - разобрался.  Другое дело, если произвольное поле покупателя - это загрузка файла.

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

 

В админке, на странице просмотра заказа я придумал сделать так:

 

в контроллер

$data['token'] = $this->session->data['token'];//добавлено для загруженных файлов клиентами

в wiev

 

<?php foreach ($shipping_custom_fields as $custom_field) { ?>
<tr>
<td><?php echo $custom_field['name']; ?></td>
<td><?php echo $custom_field['value']; ?> <a href="/admin/index.php?route=tool/upload/download&token=<?= $token; ?>&code=<?php echo $custom_field['value'];?>">Скачать файл</a></td>
</tr>
<?php } ?>

Костыль, но - работает.

 

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

 

Как бы это всё сделать поудобней и отправить в письмо прямую ссылку? Пусть нужно будет авторизовываться для скачивания.

Надіслати
Поділитися на інших сайтах

  • 4 months later...

Если добавлять больше полей то появляются ошибки

2018-02-27 16:00:52 - PHP Notice:  Undefined offset: 1 in /home/n/netboxa8/water.teslaweb.ru/public_html/system/storage/modification/catalog/model/checkout/order.php on line 520
2018-02-27 16:00:52 - PHP Notice:  Undefined offset: 2 in /home/n/netboxa8/water.teslaweb.ru/public_html/system/storage/modification/catalog/model/checkout/order.php on line 521
2018-02-27 16:00:52 - PHP Notice:  Undefined offset: 3 in /home/n/netboxa8/water.teslaweb.ru/public_html/system/storage/modification/catalog/model/checkout/order.php on line 522
2018-02-27 16:00:52 - PHP Notice:  Undefined offset: 8 in /home/n/netboxa8/water.teslaweb.ru/public_html/system/storage/modification/catalog/model/checkout/order.php on line 527

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

×
×
  • Створити...

Important Information

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