Поглядел я на сайт товарища 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