0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 1944 Просмотров
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
Собственно кто как добавлял свои поля или списки. Например список с выбором:

Во что упаковать все товары?
-Полиэтилен
-Фольга
-Картон

Можете привести пример с сохранением в базе данных для использования в письме и отображения в админке. Наряду с другими стандартными данными.
Не обязательно для страницы "Завершить заказ".
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
Разобрался!
очень помогла статья.

Более того, осуществил возможность "упаковывания" в зависимости от пользователя и указание на тип упаковки в письме для администратора.

1. Подготовка базы данных.
В это поле будет записываться тип упаковки.
Идем в таблицу jos_vm_orders и добавляем поле upakovka, тип - TEXT

2. Наводим информацию о пользователе.
Чтобы показывать возможность выбора упаковки для определенного пользователя.
Нам нужен 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!
Что переводится как: "Соберем все поля и значения для их хранения!"
Добавим после:
Код
'ip_address' => $ip,
Свое созданное ранее поле:
Код
// Добавляем в коллекцию данные по упаковке из 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";
В общем ищем часть кода где в столбик перечисляются строки начинающиеся с $adm_message .=
Этой переменной мы формируем "тело" письма. Если посмотреть внимательно - там вы увидите и вставку телефона, и адреса и др. информацию.
Так вот... вот это - "\n" является переводом строки. Две "\n\n" - перевод строки два раза соответственно.
После какого-либо перевода строки добавьте:
(как будет логичнее расположение в письме - решать вам)
Код
$adm_message .= $VM_LANG->_('TIP_UPAKOVKI').": ".$db->f("upakovka");
$adm_message .= "\n\n";
Если Алексей Пупкин выбрал фольгу в качестве упаковки, то это выведет в письме такое предложение:
Тип упаковки: Фольга

Вот и все. Естественно по аналогии можно сделать множество различных вещей и задач.
Если есть вопросы или замечания - милости просим.
« Последнее редактирование: 28.02.2014, 00:51:07 от xaocbozzz »
*

Nikitich

  • Новичок
  • 2
  • 0 / 0
Пробовал сделать точно по описанию, но при нажатии на кнопку подтвердить заказ ничего не происходит...
Без добавления поля в get_final_confirmation.tpl.php процесс покупки проходит нормально, идет добавление в базу.
Сам в PHP не силен, поэтому объяснить причину не могу...
*

Nikitich

  • Новичок
  • 2
  • 0 / 0
Хочу понять алгоритм работы. Необходимо добавить в страницу заказа несколько редактируемых полей <input> с их последующим выводом в базу и письмо администратору.
Буду признателен за помощь.
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
Сначала верните все "как было" - удалите лишний код, удалите поля в таблицах и т.п.
Ну а теперь давайте по шагам... Итак вам надо добавить текстовые поля на страницу завершения заказа? Допустим, таких поля - 2 штуки.
Сначала надо выбрать место, где их увидит клиент. Допустим, вы также хотите их поместить перед "Пожалуйста, проверьте введенные данные и подтвердите заказ!"
Тогда перед (get_final_confirmation.tpl.php):
Код
echo '<br />';
$varname = 'PHPSHOP_CHECKOUT_MSG_' . CHECK_OUT_GET_FINAL_CONFIRMATION;
echo '<h5>'. $VM_LANG->_($varname). '</h5>';
Вы вписываете:
Код
echo '<form name="opros">';
echo '<br>Vvedite zhelaemiy cvet: <input type="text" name="color" value="Серо-буро-малиновый">';
echo '<br>Vashe otnoshenie k lisim: <input type="text" name="racism" value="По-барабану">';
echo '</form>';
Теперь сохраните и сделайте пробный заказ. Причем на последней странице с кнопкой "подтвердить" вы увидите эти два поля.
Если все в порядке - отпишитесь, пойдем дальше.
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
Внимательно проверяйте код. Одна маленькая забытая точка - и код не будет работать. Я сам в начале ОЧЕНЬ ЧАСТО допускал такие ошибки.
*

SolopoV

  • Давно я тут
  • 573
  • 16 / 0
  • зеленею...
Торопился автор видимо:

Код
<!-- Вставляем еще одну строку. Вставляем столбец. -->
<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><!-- Закрыли столбец, закрыли строку -->

Поправим?
Код
<!-- Вставляем еще одну строку. Вставляем столбец. -->
<tr><td><strong><!-- Пишем жирным -->
<!-- Фразу - Тип Упаковки - берем из языкового файла (см. пункт 3) -->
<?php echo $VM_LANG->_('TIP_UPAKOVKI')?>:</strong>
</td><td><!-- Закрываем столбец, открываем следующий -->
<?php
// Если существует данное утверждение (то есть, если данные есть в поле upakovka)..
if ($db->f("upakovka")) {
// ..вытаскиваем и выводим данные
$db->p("upakovka");
}
// В противном случае - выводим тире (-)
else {
echo '-';
}
?>
</td></tr><!-- Закрыли столбец, закрыли строку -->
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сумма корзины на главной странице

Автор andreylc

Ответов: 6
Просмотров: 785
Последний ответ 30.05.2018, 11:13:43
от andreylc
Не могу убрать форму "Задайте вопрос..." на странице товара

Автор abrodski

Ответов: 1
Просмотров: 1387
Последний ответ 20.05.2014, 14:30:44
от abrodski
Свое поле ввода количества для свойств товара

Автор Batyabest

Ответов: 5
Просмотров: 1356
Последний ответ 12.12.2013, 17:28:41
от Batyabest
Ключевые слова на странице

Автор katjuha6

Ответов: 10
Просмотров: 1321
Последний ответ 10.09.2013, 13:08:32
от fsv
не работает кнопка ПОДТВЕРДИТЬ ЗАКАЗ и не отображается Адрес доставки

Автор negas

Ответов: 2
Просмотров: 1766
Последний ответ 21.08.2013, 19:23:58
от ZAIRA