tm2studio 0 Опубликовано 12 сентября, 2008 Жалоба Share Опубликовано 12 сентября, 2008 Доброго времени суток формумчанам! Работаю с коммерческой версией VamShop. Необходимо поменять шаблон писем при регистрации заказов, что бы добавлялись данные клиента в отсылаемом письме. Сделал такие вставки в файл create_account.php: $vamTemplate->assign('FIRSTNAME', $firstname);$vamTemplate->assign('SECONDNAME', $lastname);[/code] И соответственно им сделал вставки в HTML файл шаблона сообщения, все работает. Проблема возникает при работе с дополнительными полями, например конструкция: [code]$vamTemplate->assign('THRIDNAME', $extra_fields[0]); не работает. Что можно сделать в этом случае? С уважением, Максим. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 12 сентября, 2008 Жалоба Share Опубликовано 12 сентября, 2008 Так а Вы не смотрели как сделан вывод доп. полей в письмо с регитсрацией?! Уже ведь есть вывод доп. полей в письмо о регистрации. Ссылка на сообщение Поделиться на другие сайты
tm2studio 0 Опубликовано 12 сентября, 2008 Автор Жалоба Share Опубликовано 12 сентября, 2008 Только что прочесал поиском crate_account.php на предмет $vamTemplate, дополнительных полей не нашел... Версия магазина 1.4. Запрос к базе данных вижу: while($extra_fields = vam_db_fetch_array($extra_fields_query)) { if(isset($_POST['fields_' . $extra_fields['fields_id']])){ $sql_data_array = array('customers_id' => (int)$customers_id, 'fields_id' => $extra_fields['fields_id'], 'value' => $_POST['fields_' . $extra_fields['fields_id']]); } else { $sql_data_array = array('customers_id' => (int)$customers_id, 'fields_id' => $extra_fields['fields_id'], 'value' => ''); $is_add = false; for($i = 1; $i <= $_POST['fields_' . $extra_fields['fields_id'] . '_total']; $i++) { if(isset($_POST['fields_' . $extra_fields['fields_id'] . '_' . $i])) { if($is_add) { $sql_data_array['value'] .= "\n"; } else { $is_add = true; } $sql_data_array['value'] .= $_POST['fields_' . $extra_fields['fields_id'] . '_' . $i]; } } } vam_db_perform(TABLE_CUSTOMERS_TO_EXTRA_FIELDS, $sql_data_array); }[/code] Ссылка на сообщение Поделиться на другие сайты
tm2studio 0 Опубликовано 12 сентября, 2008 Автор Жалоба Share Опубликовано 12 сентября, 2008 Дело в том, что мне нужно обращение именно по индексам, для создания удобочитаемой структуры, foreach тут не подходит. При запросе на создание аккаунта я смог это реализовать, а тут что то не получается :-( Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 12 сентября, 2008 Жалоба Share Опубликовано 12 сентября, 2008 А, я чуть спутал, доп. поля выводятся в шаблон письма о заказе. /templates/шаблон/mail/russian/order_mail.txt Выводятся кодом: {if $customer_extra_fields}{$customer_extra_fields}{/if}[/code]А эта метка определяется в файле /send_order.phpМожно просто глянуть как создаются эти метки и просто перенести php код с create_account.php и в шаблон письма create_account_mail.txt Ссылка на сообщение Поделиться на другие сайты
tm2studio 0 Опубликовано 12 сентября, 2008 Автор Жалоба Share Опубликовано 12 сентября, 2008 Там идет выборка из базы по уже известному id клиента: $semextrfields = vamDBquery("select * from " . TABLE_EXTRA_FIELDS . " where fields_required_email = '1'"); while($dataexfes = vam_db_fetch_array($semextrfields,true)) { $cusextrfields = vamDBquery("select * from " . TABLE_CUSTOMERS_TO_EXTRA_FIELDS . " where customers_id = '" . (int)$_SESSION['customer_id'] . "' and fields_id = '" . $dataexfes['fields_id'] . "'"); $rescusextrfields = vam_db_fetch_array($cusextrfields,true); $extrfieldsinf = vamDBquery("select fields_name from " . TABLE_EXTRA_FIELDS_INFO . " where fields_id = '" . $dataexfes['fields_id'] . "' and languages_id = '" . $_SESSION['languages_id'] . "'");Так сделать можно, но совсем некошерно, зачем два раза за одну сессию к базе лезть - только лишняя нагрузка, вот как бы это все из страницы выдернуть?... $extrfieldsres = vam_db_fetch_array($extrfieldsinf,true); $extra_fields .= $extrfieldsres['fields_name'] . ' : ' . $rescusextrfields['value'] . "\n"; $vamTemplate->assign('customer_extra_fields', $extra_fields); }[/code]Так сделать можно, но совсем некошерно, зачем два раза за одну сессию к базе лезть - только лишняя нагрузка, вот как бы это все из страницы выдернуть?... Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 сентября, 2008 Жалоба Share Опубликовано 13 сентября, 2008 Так в create_account.php тоже ведь письмо отправляется как-то и там есть переменная для id клиента, я просто никогда не делал то, о чём Вы пишите и конкретным кодом вряд ли помогую Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения