Абсолютно не понял, что Вы имеете в виду.
Добавление фиксированный суммы к цене корзины в зависимости от выбора чекбокса
#71
Отправлено 08 April 2014 - 10:12
#72
Отправлено 10 April 2014 - 00:45
Для того чтобы нормально присылались письма внесла правки с 88 строки (Иначе он у меня не правильно складывал сумму доставки и сумму заказа):
media/zoo/applications/jbuniversal/elements/jbbasketitems/tmpl/jbbasketitems.php
<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 $this->app->jbmoney->toFormat(@$_POST['d_id'], $currency);?></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 + intval(@$_POST['d_id']), $currency)); ?></td>
</tr>
</tfoot>
Малость поменяла javascript чтобы он смотрел что введено в строку доставки и действовал соответственно.
У меня типы доставки вот такие:
Стандартная доставка по Москве (в пределах МКАД) заказа более 6000 руб - 0 (бесплатно)
Транспортная компания (оговаривается с менеджером) - ставим 0
ЕМС - то же самое
Так вот, цель была в том, чтобы он во-первых проверял что написано после двоеточия, и соответственно писал в заказе сумму заказа без доставки. В итоге получилось вот так:
Скрипт стал выглядеть так:
$('.delivery input[type=radio]').click(function() {
var deliv_summ;
var deliv_summ_arr;
var deliv_summ_label_arr = $(this).next().text().split(':');
// сумма, если она указана
var delivSumm = parseInt(deliv_summ_label_arr['1'].replace(/\D/g, ''));
var delivLabel = deliv_summ_label_arr['0'];
if (isNaN(delivSumm)) {
delivSumm = 0;
}
$('#summ_delivery_label').text(delivLabel+':');
$('#summ_delivery').text(delivSumm + ' р.');
$('#d_id').val(delivSumm);
$('#d_id_2').val(delivLabel);
var summ_item = $('.jsTotalPrice').text().split(" р.");
summ_item = summ_item[0].replace(/[ ]/,'')
var su = parseInt(summ_item)+parseInt(delivSumm);
var su2 = su+'';
su2 = su2.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 ");
$('#summ_full').text(su2+' p.');
});
На мыло, как я уже писала выше присылается правильный вариант.
А теперь вопрос:
1. На скрине видно, что радио-кнопки у меня почему-то выводятся в строку (во всех остальных местах, списком). Где файл, который отвечает за их вывод в заказе?
2. Все вышеперечисленное, конечно работает, но проблема в том, что данные для "Моих заказов", для авторизованных пользователей берутся как раз из jbbasketitems.php, который понятия и не имеет откуда взять переменные d_id_2 и d_id ибо в базу они не пишутся. и выдает ошибку вот такую:
Очень хотелось бы это исправить. Вопрос как?
UPD: убрала вывод сообщения об ошибке. В принципе второй вопрос снимается, потому что в моем случае нет смысла указывать в старых заказах общую стоимость.
В tfoot для переменных $_POST['d_id_2'] и $_POST['d_id'] добавила @. Стало: @$_POST['d_id_2'] и @$_POST['d_id']. Код выше - исправила.
Сообщение отредактировал Евгения: 25 April 2014 - 21:40
"Это бессмысленно" - сказал разум. "Это нелепо" - заметил опыт. "Это бесполезно" - отрезал здравый смысл. "О! Вот так нормально!" - обрадовался клиент.
#73
Отправлено 10 April 2014 - 23:01
Товарищи техподдержка. Вы где? ![]()
З.Ы. Проверила свою версию скрипта на последнем обновлении - работает ![]()
Сообщение отредактировал Евгения: 15 April 2014 - 21:25
"Это бессмысленно" - сказал разум. "Это нелепо" - заметил опыт. "Это бесполезно" - отрезал здравый смысл. "О! Вот так нормально!" - обрадовался клиент.
#74
Отправлено 25 April 2014 - 19:54
Сделал все по инструкции, при переходе к выбору платежной системы из скрипта jbbasketitems.php не видно переменой $_POST, т.е. она пустая, а следовательно итоговая сумма не меняется. Подскажите куда копать.
Заметил что ответом на POST запрос возвращается 303-я ошибка. Наверное проблема в этом.
POST: http://site.com/component/zoo/
elements[c1b20e16-3869-40... олдолдо elements[7ced0571-b1d7-43... олдодло elements[1e680d82-aa09-40... courier elements[1e680d82-aa09-40... 1 elements[6c12193f-f363-4d... 2000 elements[c2e23d15-41c5-44... ролртдлотдл elements[5358536e-8edd-4f... elements[1af7e792-bcff-4a... _jbbaskteitems_ submit Оформить заказ d_id 2000 d_id_2 2000 руб. option com_zoo controller basket task createOrder type order app_id 18 Itemid 123 ec4a6efe1cf51a60afa9f95ec... 1
Ответ:
HTTP/1.1 303 See other
Date: Fri, 25 Apr 2014 19:19:20 GMT
Server: Apache
Location: http://site.com/comp...&order_id=51399
X-Powered-By: PleskLin
Content-Length: 0
Connection: close
Content-Type: text/html; charset=utf-8
т.е. происход POST, а потом GET который возвращает код страницы и в котором из jbbasketitems.php уже не видно POST
Сообщение отредактировал Vitaly: 25 April 2014 - 20:26
#75
Отправлено 25 April 2014 - 21:25
Я выше написала уже, что переменные d_id и d_id_2 не сохраняются в БД, соответственно брать их второй раз неоткуда. Проблема в этом. Соответственно, GET взять нечего ![]()
Это надо создавать табличку в БД и хранить в ней данные, и обращаться уже к этой табличке. Больше "умных идей" по-этому вопросу у меня нет >.<
Сообщение отредактировал Евгения: 25 April 2014 - 21:28
"Это бессмысленно" - сказал разум. "Это нелепо" - заметил опыт. "Это бесполезно" - отрезал здравый смысл. "О! Вот так нормально!" - обрадовался клиент.
#76
Отправлено 25 April 2014 - 21:43
Я выше написала уже, что переменные d_id и d_id_2 не сохраняются в БД, соответственно брать их второй раз неоткуда. Проблема в этом. Соответственно, GET взять нечего
Это надо создавать табличку в БД и хранить в ней данные, и обращаться уже к этой табличке. Больше "умных идей" по-этому вопросу у меня нет >.<
Так при чем тут БД ?
У меня POST не доходит.
Не знаю как лечить 303 ошибку. В прошлый раз все закончилось полной переустановкой =(
#77
Отправлено 19 May 2014 - 22:02
UPD через пару дней прикреплю доведенную до ума рабочую версию скрипта. А то после обновления он бузил и пересчитывать не хотел.
"Это бессмысленно" - сказал разум. "Это нелепо" - заметил опыт. "Это бесполезно" - отрезал здравый смысл. "О! Вот так нормально!" - обрадовался клиент.
#78
Отправлено 04 June 2014 - 10:54
UPD через пару дней прикреплю доведенную до ума рабочую версию скрипта. А то после обновления он бузил и пересчитывать не хотел.
к сожалению у меня на последней версии ваш последний вариан не работает
#79
Отправлено 04 June 2014 - 22:29
к сожалению у меня на последней версии ваш последний вариан не работает
Знаю. Не обновляла еще. Завтра выложу. ![]()
UPD
Что делает? Добавляет фиксированную стоимость к доставке.
Если написано "Бесплатно", автоматически подставляет ноль и в общую стоимость пишет общую стоимость без доставки. При изменении кол-ва товаров пересчитывает общую стоимость 1-2сек.
Тестировалось на:
Joomla: 2.5.2 (5.14) JBZoo: 2.1.3 Pro (2.1.2)
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);?>"
});
/* orig
$('.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.');
});
*/
$('.delivery input[type=radio]').click(function() {
var deliv_summ;
var deliv_summ_arr;
var deliv_summ_label_arr = $(this).next().text().split(':');
// сумма, если она указана
var delivSumm = parseInt(deliv_summ_label_arr['1'].replace(/\D/g, ''));
var delivLabel = deliv_summ_label_arr['0'];
if (isNaN(delivSumm)) {
delivSumm = 0;
}
$('#summ_delivery_label').text(delivLabel+':');
$('#summ_delivery').text(delivSumm + ' р.');
$('#d_id').val(delivSumm);
$('#d_id_2').val(delivLabel);
var summ = 0;
$('#yoo-zoo .jsSubtotal').each(function(i, el){
var elSumm = $(el).text().split(",")[0];
elSumm = elSumm.replace(/\D/g, '');
summ += parseInt(elSumm);
});
var su = summ + delivSumm;
var su2 = su+'';
su2 = su2.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 ");
$('#yoo-zoo .jsTotalPrice').text(su2+' p.');
});
$('.jsQuantity').keyup(function(){
setTimeout(function() {
$('.delivery input[type=radio]:checked').click();
}, 3000);
});
});
</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. Итого, конец файла выглядит вот так:
<input type="hidden" name="option" value="com_zoo"/>
<input type="hidden" name="controller" value="basket"/>
<input type="hidden" name="task" value="createOrder"/>
<input type="hidden" name="type" value="<?php echo $view->submissionType; ?>"/>
<input type="hidden" name="app_id" value="<?php echo $view->appId; ?>"/>
<input type="hidden" name="Itemid" value="<?php echo $view->Itemid; ?>"/>
<?php echo $this->app->html->_('form.token'); ?>
<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 $this->app->jbmoney->toFormat(@$_POST['d_id'], $currency);?></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 + intval(@$_POST['d_id']), $currency)); ?></td>
</tr>
</tfoot>
4. Файл /media/zoo/applications/jbuniversal/templates/catalog/renderer/item/order/order.php Нужно добавить класс delivery к диву, который обрамляет код, и станет выглядеть оно у Вас вот так:
<?php if ($this->checkPosition('shipping')) : ?>
<h3 class="toggler"><?php echo JText::_('JBZOO_CART_SHIPPING'); ?></h3>
<div>
<div class="tab-body content wk-content clearfix delivery">
<?php echo $this->renderPosition('shipping', array('style' => 'order.block')); ?>
</div>
</div>
<?php endif; ?>
Не забудьте добавить радио в доставку. Перед двоеточием должен быть пробел! Т.е. вид такой: Доставка по МО : 100руб.
Если кто-нибудь даст файлы, прикреплю. У меня в них помимо данного кода много что изменено, так что выкладывать свои не буду.
Сообщение отредактировал Евгения: 11 June 2014 - 11:21
"Это бессмысленно" - сказал разум. "Это нелепо" - заметил опыт. "Это бесполезно" - отрезал здравый смысл. "О! Вот так нормально!" - обрадовался клиент.
#80
Отправлено 09 June 2014 - 10:56
Блин обидно, у меня не считает ((((










