Перейти к содержанию
Gann

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

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

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

В файл /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']
			);
		}

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

Поделиться сообщением


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

Доброго дня!

 

Вопрос актуален

Поделиться сообщением


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

Вопрос актуален.

 

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

Поделиться сообщением


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

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

 

В таблице 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');

Поделиться сообщением


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

{custom_field_2}

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

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

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 } ?>

не работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<tr>
<td><?php echo $custom_field_5; ?></td>
</tr>

выводит пустоту

Поделиться сообщением


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

Сделал так:

 


				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

Поделиться сообщением


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

Дурья моя башка! Разобрался. Многомерный массив. Получаем значение из него :

'custom_field_5'   => $order_info['shipping_custom_field']['5']

 

 

Поделиться сообщением


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

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

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

 

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

 

в контроллер

$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 } ?>

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

 

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

 

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

Поделиться сообщением


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

Убрать токен?

Поделиться сообщением


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

Фсё! Я сделяль!8-)

Поделиться сообщением


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

Здравствуйте, можно поподробнее про ваше решение с текстовыми полями, вроде все сделал так как и вы, ошибок нет, полей в письме тоже(

Поделиться сообщением


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

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

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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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