Поглядел я на сайт товарища ecwallspb и хочется сказать ему огромное спасибо. Путем нехитрых манипуляций удалось воспроизвести то, что я увидел.
Скрипт был взят с вышеприведенной страницы, так что все копирайты у автора =)
Сразу скажу, что делал для себя, на отправку для оплаты не проверял, нет возможности, на мыло приходит сумма итоговая.
joomla 2.5.11 + jbzoo 2.0.1
Рабочая ссылка на каталог с корзиной: http://economim-vmes...j-organizatorov
Порядок действий:
1. Файл /media/zoo/applications/jbuniversal/templates/catalog/renderer/basket/_default.php. Меняем весь код tfoot (примерно 101 строка) таблицы на этот:
- <tfoot>
- <tr>
- <td colspan="5" class="right"><strong><span id="summ_delivery_label">Доставка:</span></strong></td>
- <td> </td>
- <td><span id="summ_delivery">0 р.</span></td>
- <td> </td>
- </tr>
- <tr>
- <td colspan="5" class="right"><strong><span id="summ_delivery_label"><?php echo JText::_('JBZOO_CART_TOTAL'); ?>:</span></strong></td>
- <td class="jsTotalCount"><?php echo $count; ?></td>
- <td class="jsTotalPrice"><span id="summ_full"><?php echo $this->app->jbmoney->toFormat($summa, $currencyConvert); ?></span></td>
- <td>
- <input type="button" class="button-default jsDeleteAll" value="<?php echo JText::_('JBZOO_CART_REMOVE_ALL'); ?>"/>
- </td>
- </tr>
- </tfoot>
Тот же файл, в конце файла меняем код
- <script type="text/javascript">
- jQuery(function ($) {
- $('.jbzoo .jsJBZooBasket').JBZooBasket({
- 'clearConfirm': "<?php echo JText::_('JBZOO_CART_CLEAR_CONFIRM');?>",
- 'quantityUrl' : "<?php echo $this->app->jbrouter->basketQuantity($view->appId);?>",
- 'deleteUrl' : "<?php echo $this->app->jbrouter->basketDelete($view->appId);?>",
- 'clearUrl' : "<?php echo $this->app->jbrouter->basketClear($view->appId);?>"
- });
- });
- </script>
на этот
- <script type="text/javascript">
- jQuery(function ($) {
- $('.jbzoo .jsJBZooBasket').JBZooBasket({
- 'clearConfirm': "<?php echo JText::_('JBZOO_CART_CLEAR_CONFIRM');?>",
- 'quantityUrl' : "<?php echo $this->app->jbrouter->basketQuantity($view->appId);?>",
- 'deleteUrl' : "<?php echo $this->app->jbrouter->basketDelete($view->appId);?>",
- 'clearUrl' : "<?php echo $this->app->jbrouter->basketClear($view->appId);?>"
- });
- $('.delivery input[type=radio]').click(function() {
- var deliv_summ;
- var deliv_summ_arr;
- var deliv_summ_label_arr = $(this).next().text().split(':');
- $('#summ_delivery_label').text(deliv_summ_label_arr[0]+':');
- deliv_summ_arr = deliv_summ_label_arr[1].split(" р");
- deliv_summ = deliv_summ_arr[0].replace(/[()]/,'');
- $('#d_id').val(deliv_summ);
- $('#d_id_2').val(deliv_summ_label_arr[0]);
- $('#summ_delivery').text(deliv_summ + ' р.');
- var su = parseInt(<?php echo $summa; ?>)+parseInt(deliv_summ);
- var su2 = su+'';
- su2 = su2.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 ");
- $('#summ_full').text(su2+' p.');
- });
- });
- </script>
- <style>
- td.right{ text-align: right;}
- td.right span{
- width: 99%;
- display: inline-block;
- text-align: right;
- }
- </style>
-
2. Файл /media/zoo/applications/jbuniversal/templates/catalog/renderer/basketform/_default.php. Добавляем 2 скрытых input в конец формы (39 строка)
- <input type="hidden" id="d_id" name="d_id" value=""/>
- <input type="hidden" id="d_id_2" name="d_id_2" value=""/>
3. Файл \media\zoo\applications\jbuniversal\elements\jbbasketitems\tmpl\jbbasketitems.php. Меняем tfoot таблицы на этот:
- <tfoot>
- <tr>
- <td colspan="3"> </td>
- <td><strong><?php echo $_POST['d_id_2']; ?>:</strong></td>
- <td class="jsTotalCount"></td>
- <td class="jsTotalPrice"><?php echo $_POST['d_id'];?></td>
- </tr>
- <tr>
- <td colspan="3"> </td>
- <td><strong><?php echo JText::_('JBZOO_CART_TOTAL'); ?>:</strong></td>
- <td class="jsTotalCount"><?php echo $count; ?></td>
- <td class="jsTotalPrice"><?php echo $this->app->jbmoney->toFormat($summa, $currency)+$_POST['d_id']; ?></td>
- </tr>
- </tfoot>
4. Добавляем элемент Радио в форму Order, опции называем как "Доставка по Земле : 500 руб." То есть "(Название доставки) : (Цена доставки) руб." Обратите внимание на двоеточие между названием доставки и ценой.
5. Файл /media/zoo/applications/jbuniversal/templates/catalog/renderer/order/order.php. Нужно добавить класс delivery к диву, который обрамляет код
- <?php echo $this->renderPosition('shipping', array('style' => 'order.block')); ?>
Пояснения.
1. В первом пункте мы добавляем низ к таблице заказываемых товаров в таблице:

Также добавляется скрипт, который подменяет итоговую сумму, плюсуя к ней сумму доставки, а также задает значения скрытым полям, которые мы добавляем в пункте 2.
2. Во втором пункте мы добавили 2 скрытых инпута, значение 1 будет - цена нашей доставки, значене второго инпута - название нашей доставки.
3. В третьем пункте мы добавили низ таблицы, которая отображается в письме, которое отправляется на мыло.

4. Собственно сами радиокнопки:

Собственно все.
Не забудьте сделать бэкапы =) Если что не получается, пишите, попробуем разобраться =)
Сообщение отредактировал fiction13: 15 September 2013 - 20:42