Разобрался!
очень помогла
статья.
Более того, осуществил возможность "упаковывания" в зависимости от пользователя и указание на тип упаковки в письме для администратора.
1. Подготовка базы данных.В это поле будет записываться тип упаковки.Идем в таблицу
jos_vm_orders и добавляем поле
upakovka, тип -
TEXT2. Наводим информацию о пользователе.Чтобы показывать возможность выбора упаковки для определенного пользователя.Нам нужен ID конкретного пользователя. Поэтому идем в базу данных в таблицу
jos_users. Ищем нашего пользователя. Допустим - Алексей Пупкин. Смотрим его
ID - (допустим) 55
3. Подготовим фразы.Чтобы выводить различные слова на русском языке по стандартам Joomla нужно их добавить особым образом в языковый файл. Идем в
ВАШ_САЙТ/administrator/components/com_virtuemart/languages/common/ и открываем
russian.phpСразу после
$langvars = array ( начинаем добавлять фразы по принципу
'CHTO_TO' => 'Что-то',Конкретно, добавьте это:
'UVAZAEM' => 'Уважаемый',
'UPAKOVKA' => 'выберите упаковку из выпадающего списка',
'POLIETILEN' => 'Полиэтилен',
'FOLGA' => 'Фольга',
'KARTON' => 'Картон',
'TIP_UPAKOVKI' => 'Тип упаковки',
4. Оформляем страницу.Добавим выпадающий список с выбором упаковки.Идем в
ВАШ_САЙТ/components/com_virtuemart/themes/default/templates/checkout/ и открываем
get_final_confirmation.tpl.phpВыше мы условились, что пользователь будет выбирать упаковку на "последней странице", там где кнопка "подтвердить заказ".
Добавим код перед фразой "Пожалуйста, проверьте введенные данные и подтвердите заказ!".
То есть перед вот этим кодом:
echo '<br />';
$varname = 'PHPSHOP_CHECKOUT_MSG_' . CHECK_OUT_GET_FINAL_CONFIRMATION;
echo '<h5>'. $VM_LANG->_($varname). '</h5>';
Добавим:
echo '<br />';
// Приветствуем пользователя фразой "Уважаемый Алексей Пупкин, выберите упаковку из выпадающего списка:"
echo "<strong>".$VM_LANG->_('UVAZAEM')." ".$auth["first_name"].", ".$VM_LANG->_('UPAKOVKA').":</strong>";
echo '<br />';
// Если значение массива соответствует 55...
if ($auth["user_id"] == '55') {
// ..то "сооружаем" форму с выпадающим списком
echo "<form name='upakovkaform'>";
echo "<select name='upakovka'>";
// где значения списка ($VM_LANG->_('POLIETILEN') - фразы добавленные в языковый файл
echo "<option value='".$VM_LANG->_('POLIETILEN')."'>".$VM_LANG->_('POLIETILEN')."</option>";
echo "<option value='".$VM_LANG->_('FOLGA')."'>".$VM_LANG->_('FOLGA')."</option>";
echo "<option value='".$VM_LANG->_('KARTON')."'>".$VM_LANG->_('KARTON')."</option>";
echo "</select></form>";
}
Что такое
$auth["user_id"] и
$auth["first_name"] ? Просто таким образом мы можем получить текущие значения, если пользователь зашел под своим логином и паролем. Соответственно эти два значения -
ID авторизировавшегося пользователя и его же
имя. Если вам нужны другие значения то советую заглянуть
сюда. Довольно таки интересно. А вот
тут более подробно.
Также незабываем, что вы можете применить стили и прочие рюшечки.
5. Запись в базу данныхЧтобы видеть, что заказ должен быть упакован - нужно сделать запись в базу прямо к заказу. Далее мы сможем прочитать ее (или использовать иначе).В первом пункте мы добавили поле в таблицу
jos_vm_orders. Эта таблица содержит список заказов. Поле
upakovka и будет содержать тип упаковки. Чтобы произошла запись в это поле - пройдемте сюда:
ВАШ_САЙТ/administrator/components/com_virtuemart/classes/Нам нужен файл
ps_checkout.phpОткрываем и ищем строку:
// Collect all fields and values to store them!
Что переводится как: "Соберем все поля и значения для их хранения!"
Добавим после:
Свое созданное ранее поле:
// Добавляем в коллекцию данные по упаковке из get_final_confirmation.tpl.php
'upakovka' => $d["upakovka"]
Замечу, что вот это:
$d["upakovka"] позволяет получить значение (
option value) при помощи функции
add, но это уже другая история
Если вы сейчас сделаете тестовый заказ - вы увидите, что в поле
upakovka в базе данных благополучно добавляется тип упаковки.
6. Вывод в админку.Администратор должен знать - во что заказ должен быть упакован.Если зайти в админку Joomla, затем в компонент VirtueMart, затем в список заказов и выбрать заказ, то мы сможем увидеть информацию о нем. Нам бы хотелось видеть среди ФИО, адреса и т.п. еще и тип упаковки. Для этого нужно вытащить из базы данных значение и вставить на эту страницу.
Страница формируется тут:
ВАШ_МАГАЗИН/administrator/components/com_virtuemart/html/ в файле
order.order_print.phpМожете выбрать где вам отображать эту упаковку. Я вставил ее сразу после "купонов". Нашел код:
if( PSHOP_COUPONS_ENABLE == '1') { ?>
<tr>
<td><strong><?php echo $VM_LANG->_('PHPSHOP_COUPON_COUPON_HEADER')?>:</strong></td>
<td><?php if( $db->f("coupon_code") ) $db->p("coupon_code"); else echo '-'; ?></td>
</tr>
<?php
} ?>
И ниже вставил еще одну строку (tr), то есть вот этот код:
<!-- Вставляем еще одну строку. Вставляем столбец. -->
<tr><td><strong><!-- Пишем жирным -->
<!-- Фразу - Тип Упаковки - берем из языкового файла (см. пункт 3) -->
<?php echo $VM_LANG->_('TIP_UPAKOVKI')?>:</strong>
</td><td><!-- Закрываем столбец, открываем следующий -->
<?php
// Если существует данное утверждение (то есть, если данные есть в поле upakovka)..
if ($db->f("upakovka")) {
// ..вытаскиваем и выводим данные
$db->p("prodavec");
}
// В противном случае - выводим тире (-)
else {
echo '-';
}
?>
</td></tr><!-- Закрыли столбец, закрыли строку -->
7. Добавляем информацию в письмоНаряду с другими данными, мы можем получать информацию о типе упаковки прямо в письме с заказом.За формирование письма отвечает все тот же файл, в который мы уже "ныряли" -
ps_checkout.php. Откроем его снова и найдем:
В общем ищем часть кода где в столбик перечисляются строки начинающиеся с
$adm_message .=Этой переменной мы формируем "тело" письма. Если посмотреть внимательно - там вы увидите и вставку телефона, и адреса и др. информацию.
Так вот... вот это -
"\n" является переводом строки. Две
"\n\n" - перевод строки два раза соответственно.
После какого-либо перевода строки добавьте:
(как будет логичнее расположение в письме - решать вам)
$adm_message .= $VM_LANG->_('TIP_UPAKOVKI').": ".$db->f("upakovka");
$adm_message .= "\n\n";
Если Алексей Пупкин выбрал фольгу в качестве упаковки, то это выведет в письме такое предложение:
Тип упаковки: ФольгаВот и все. Естественно по аналогии можно сделать множество различных вещей и задач.
Если есть вопросы или замечания - милости просим.