Всем привет, в поисках помощи решил обратиться к этому форуму. Устал искать решение
Есть задача убрать 3й шаг оформления заказа на ocstore 2.3 (адрес доставки), при этом сохранить обработку адреса в этом пункте, то есть сам по себе пункт должен работать, но выполнение его должно быть скрыто.
Выяснил, что исполнением данного пункта занимаются 2 файла:
/catalog/view/theme/yourtheme/template/checkout/checkout.tpl
/catalog/view/theme/yourtheme/template/checkout/shipping_address.tpl
checkout.tpl занимается исполнением и отображением внешних div (то есть каркас при свернутом аккордионе)
- Шаг 3: Адрес доставки
shipping_address.tpl отвечает за отображение и исполнение внутренних пунктов (то есть при открытом пункте)
- Использовать существующий адрес и - Я хочу использовать новый адрес
Испробывал все способы которые только нашел в интернете, но результат так и не получил, единственный способ который привел хоть к каким то результатам
при использовании скрипта в shipping_address.tpl:
<script language="Javascript" type="text/javascript">$(document).ready(function(){$('#button-shipping-address').trigger('click');});</script>
Но происходит зацикливание следующего пункта "Шаг 3: Способ доставки" (дергается) то есть сам по себе скрипт выполняется бесконечное колличество раз и подтверждением этому бесконечно прогружающаяся кнопка "ПРОДОЛЖИТЬ"
Прописывание этого скрипта (являющегося нажатием кнопки продолжить) в checkout.tpl не приносит результатов.
Поэтому думаю что есть 2 варианта решения:
1)Остановить работу нажатия кнопки после перехода на пункт "Шаг 3: Способ доставки" (собственно прикратить исполнение вышепрописанного скрипта)
- пробовал вместо .tigger использовать .one и `oneclick` попросту ничего не происходит, скрипт не работает
2)Использовать другие скрипты которые в при исполнении нажатия на кнопку "ПРОДОЛЖИТЬ" в Шаг 2: Платежная информация запустят исполнение скриптов "Шаг 3: Способ доставки"
Но поскольку я не соображаю ни в javascrypt ни даже в библиотеках jquery , не понимаю какой код прописать
Готовые решения использовать категорически не хочу, поскольку хочется понять исполнение оформления заказа от начала и до конца, им буду благодарен любой помощи и идеям
Для наглядности прикрепляю части кода в checkout.tpl и shipping_address.tpl
// Shipping Address
$(document).delegate('#button-shipping-address', 'click', function() {
$.ajax({
url: 'index.php?route=checkout/shipping_address/save',
type: 'post',
data: $('#collapse-shipping-address input[type=\'text\'], #collapse-shipping-address input[type=\'date\'], #collapse-shipping-address input[type=\'datetime-local\'], #collapse-shipping-address input[type=\'time\'], #collapse-shipping-address input[type=\'password\'], #collapse-shipping-address input[type=\'checkbox\']:checked, #collapse-shipping-address input[type=\'radio\']:checked, #collapse-shipping-address textarea, #collapse-shipping-address select'),
dataType: 'json',
beforeSend: function() {
$('#button-shipping-address').button('loading');
},
success: function(json) {
$('.alert, .text-danger').remove();
if (json['redirect']) {
location = json['redirect'];
} else if (json['error']) {
$('#button-shipping-address').button('reset');
if (json['error']['warning']) {
$('#collapse-shipping-address .panel-body').prepend('<div class="alert alert-warning">' + json['error']['warning'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>');
}
for (i in json['error']) {
var element = $('#input-shipping-' + i.replace('_', '-'));
if ($(element).parent().hasClass('input-group')) {
$(element).parent().after('<div class="text-danger">' + json['error'][i] + '</div>');
} else {
$(element).after('<div class="text-danger">' + json['error'][i] + '</div>');
}
}
// Highlight any found errors
$('.text-danger').parent().parent().addClass('has-error');
} else {
$.ajax({
url: 'index.php?route=checkout/shipping_method',
dataType: 'html',
complete: function() {
$('#button-shipping-address').button('reset');
},
success: function(html) {
$('#collapse-shipping-method .panel-body').html(html);
$('#collapse-shipping-method').parent().find('.panel-heading .panel-title').html('<a href="#collapse-shipping-method" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_shipping_method; ?> <i class="fa fa-caret-down"></i></a>');
$('a[href=\'#collapse-shipping-method\']').trigger('click');
$('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_payment_method; ?>');
$('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_confirm; ?>');
$.ajax({
url: 'index.php?route=checkout/shipping_address',
dataType: 'html',
success: function(html) {
$('#collapse-shipping-address .panel-body').html(html);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
$.ajax({
url: 'index.php?route=checkout/payment_address',
dataType: 'html',
success: function(html) {
$('#collapse-payment-address .panel-body').html(html);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
и checkout.tpl
<script language="Javascript" type="text/javascript">
$(document).ready(function(){
$('#button-shipping-address').trigger('click');
});
</script>
<form class="form-horizontal">
<?php if ($addresses) { ?>
<div class="radio">
<label>
<input type="radio" name="shipping_address" value="existing" checked="checked" />
<?php echo $text_address_existing; ?></label>
</div>
<div id="shipping-existing">
<select name="address_id" class="form-control">
<?php foreach ($addresses as $address) { ?>
<?php if ($address['address_id'] == $address_id) { ?>
<option value="<?php echo $address['address_id']; ?>" selected="selected"><?php echo $address['firstname']; ?> <?php echo $address['lastname']; ?>, <?php echo $address['address_1']; ?>, <?php echo $address['city']; ?>, <?php echo $address['zone']; ?>, <?php echo $address['country']; ?></option>
<?php } else { ?>
<option value="<?php echo $address['address_id']; ?>"><?php echo $address['firstname']; ?> <?php echo $address['lastname']; ?>, <?php echo $address['address_1']; ?>, <?php echo $address['city']; ?>, <?php echo $address['zone']; ?>, <?php echo $address['country']; ?></option>
<?php } ?>
<?php } ?>
</select>
</div>
<div class="buttons clearfix">
<div class="pull-right">
<input type="button" value="<?php echo $button_continue; ?>" id="button-shipping-address" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary" />
</div>
</div>
</form>
Все ненужное повырезал, для удобства. Заранее спасибо за помощь, всем добра