БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Добавляем в оформление заказа дату и время доставки

  • Категория: Virtuemart 1
  • Автор:
  • Просмотров: 16836

Продолжаем совершенствовать Viruemart. На этот раз я покажу как добавить на страницу подтверждения заказа выбор даты и времени желаемой доставки. Опять будем использовать наш любимый JQuery. В результате получим следующую картинку:

Мы не будем изобретать велосипед и возьмем готовый руссифицированный плагин календаря - http://yapro.ru/web-master/javascript/legkiy-kalendari.html .Скачиваем и размещаем файлы latest.js в папке js своего шаблона, а latest.css в папке css своего шаблона. Как подключить сам JQuery и включить режим NoConflict я уже не раз писал в своем блоге, например в Делаем красивый выбор валюты - select с картинками. Повторяться не буду.

Нам нужно будет только подготовить поле в базе данных, вывести input на страницу подтверждения заказа, сохранять значение выбранной даты в базе и вывести его в просмотр заказа в админке. Приступим.

1. В нашу базу данных в таблицу 'jos_vm_orders' (у Вас префик может быть не 'jos') добавляем поле

создаем поле delivery_date

2. Открываем /components/com_virtuemart/themes/default/templates/checkout/get_final_confirmation.tpl.php

Как расположить поле ввода даты и времени? После поля комментариев? Сбоку от него? На Ваше усмотрение - все зависит от Вашей верстки. Для примера мы расположим его перед полем "Комментарии к заказу". Находим в 92 строке (номера строк могут не совпадать с Вашими):



	<div align="center">

	<?php echo $VM_LANG->_('PHPSHOP_CHECKOUT_CUSTOMER_NOTE') ?>:<br />

и ПЕРЕД этим кодом добавляем:


 
	<?php
	
echo '<div align="center">Вы можете указать желаемую дату и время доставки</div><br/>';  
JFactory::getDocument()->addStyleSheet(JURI::base().'templates/НазваниеВашегоШаблона/css/latest.css'); ?> 
<input class="datepickerTimeField" value="" name="delivery_date" id="acpro_inp0"> 
<script src="/<?php echo JURI::base(); ?>templates/НазваниеВашегоШаблона /js/latest.js" type="text/javascript"></script> 
<script> jQuery(".datepickerTimeField").datepicker({  numberOfMonths:2, 
 showOn :"both", 
 defaultDate:"<?php echo date( 'j.m.Y G:i', time()+86400); ?>", 
 minDate: "<?php echo date( 'j.m.Y G:i', time()+86400); ?>",  maxDate: "+1m"
 }); </script> </div>

Где numberOfMonths:2 - Количество месяцев для показа

  showOn :"both" - Календарь вызывается и кнопкой и из самого поля  

defaultDate:"<?php echo date( 'j.m.Y G:i', time()+86400); ?>" - Начальная дата выбора - следующий день

minDate: "<?php echo date( 'j.m.Y G:i', time()+86400); ?>" 

maxDate: "+1m"  - Максимальная дата выбора - 1 месяц 

Конвертируем в UTF без ВОМ и сохраняем.

Открываем /administrator/components/com_virtuemart/classes/ps_checkout.php

Находим в районе 1000 строки 



	// Collect all fields and values to store them!

	$fields = array(

и ПЕРЕД этим кодом пишем:



	jimport('joomla.utilities.date');

	if($d['delivery_date']=='') {

	$delivery_date=null;

	} else {

	$jdate = new JDate($d['delivery_date']);

	$delivery_date=$jdate->toMySQL();

	}

далее чуть ниже после



	'mdate' => $timestamp,

вставляем



	'delivery_date' => $delivery_date,   

закрываем и сохраняем файл. В принципе, весь функционал у нас уже готов. Выможете попробовать оформить заказ и посмотреть как работает наш календарь - при сохранение заказа в базу должна упасть выбраная дата. Осталось вывести это поле в админку. Расположим его в левом верхнем углу в блоке "Информация о заказе" после поля "Код купона:".

Открываем /administrator/components/com_virtuemart/html/order.order_print.php и находим в 90 строке



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

	 <td><strong>Дата и время доставки:</strong></td>

	<td><?php if( $db->f("delivery_date") ) $db->p("delivery_date "); else echo '-'; ?></td>

	</tr>

Конвертируем в UTF без ВОМ и сохраняем.

Все. Бежим к своим заказчикам и продам новую возможность :)
  

 

 

Back to top