VM 2.x Привязка способа оплаты к способу доставки.

red_heads

Знаток
Регистрация
30 Янв 2007
Сообщения
175
Реакции
28
В старой версии вирта было решение, в новой версии кто нибудь знает как такое сделать. Чтоб при определенном способе доставки высвечивался способ оплаты предназначенный ему. И как поменять местами шаги сначала способ доставки, а потом способ оплаты.
 
Как местами поменять шаги:
у нас есть 2 файла, каждый из них отвечает за свой шаг.
сom_virtuemart/views/cart/tmpl/select_payment.php
сom_virtuemart/views/cart/tmpl/select_shipment.php
Изначально сначало выбирается способ оплаты, значит заходим в файл select_payment.php:
Находим в самом начале файла вот такую вот конструкцию
<?php
if (VmConfig::get('oncheckout_show_steps', 1)) {
echo '<div class="checkoutStep" id="checkoutStep2">' . JText::_('COM_VIRTUEMART_USER_FORM_CART_STEP2') . '</div>';
}
?>

Меняем id="checkoutStep2" на id="checkoutStep3", ну и номер шага, который в заголовке JText::_('COM_VIRTUEMART_USER_FORM_CART_STEP3').
Аналогичные действия с файлом select_shipment.php, только естественно наоборот цифры меняем.

Чтобы при выборе определенного способа оплаты высвечивался соответствующий(ие) способ(ы) оплаты, необходимо сначало задать эти соответствия, например в ассоциативном массиве, и после того как мы поменяли шаги местами, т.е. доставка будет на 3 шаге, там уже не просто в цикле выводить на выбор все способы доставки, а проверять по этому массиву; за более подробной инфой в личку
 
Хотелось бы узнать где в каких местах делать исправления. Или может по идентификатору доставки привязать к нему оплату. Может у кого то уже есть наработки поделитесь кодом. Мне кажется что данное решение нужно не только мне. В старой версии вирта есть решение но я так понимаю, что под новую версию ни как не прокатит там и переменные изменились и файлы поменялись и функции ни те.
 
Также интересует данный вопрос.
А то как то не красиво при самовывозе, оплата наложенным платежом :)

на одом из форумов предложили:
Здравствуйте. Я по теме Для просмотра ссылки Войди или Зарегистрируйся . Если интересует, обращайтесь по скайпу sttclan
Стоимость решения проблемы - 500 рублей.
Владимир.
 
Собственно, решил я данную проблему, покрайней мере для себя
Код:
jQuery(document).ready(function(){
 
            if (jQuery.cookie('choice') == 1) {
jQuery('#payment_id_1').show();
jQuery("label[for='payment_id_1']").show();
} else {
jQuery('#payment_id_1').hide();
jQuery("label[for='payment_id_1']").hide();
}
// Получаем куки, если в куки - 1, то первый способ оплаты доступен, если нет(не 1) - скрыт
jQuery('input:radio[name=virtuemart_shipmentmethod_id]').click(function(){
 
            if (jQuery('#shipment_id_1').prop('checked') == true) {
                jQuery('#payment_id_1').show();
                jQuery("label[for='payment_id_1']").show();
                jQuery.cookie('choice', '1');
            }
//Если выбраем первый способ доставки, то первый способ оплаты будет доступен, и в куки записывается единица
else {
                jQuery('#payment_id_1').hide();
                jQuery("label[for='payment_id_1']").hide();
                jQuery.cookie('choice', '0');
            }
//Если выбираем другой способ доставки, то первый способ оплаты будет скрыт, в этом случае, в куки записывается 0
        });
 
});
В данном примере, первый способ оплаты будет появляться только в случае, если выбран первый способ доставки.
У меня стоит плагин one page checkout от Linelab. Код, приведённый выше, нужно вставить сразу после строк в файле default.php( этот файл вы копировали в папку с шаблоном при установке плагина )
Код:
document.id('payments').empty();
                var payments="";
                if(json.payments) {
                    for(var i=0;i<json.payments.length;i++) {
                    payments+=json.payments[i].toString().replace('input','input onclick="update_form();"')+'<br />';
                    }
                    document.id('payments').set('html',payments);
                }
Так же, нужно подключить в корзине, файл с библиотекой Jquery(если ещё не подключен) и плагин куки(скачать его можно отсюда Для просмотра ссылки Войди или Зарегистрируйся )
P.S. Впринципе, таким способом можно связать любое количество способов оплаты и доставки, только строчек, соответственно, побольше будет)
P.S.S. Данный способ должен работать и со стандартной корзиной, код, соответственно, нужно будет вставлять в другое место
 
Собственно, решил я данную проблему, покрайней мере для себя
Код:
jQuery(document).ready(function(){

            if (jQuery.cookie('choice') == 1) {
jQuery('#payment_id_1').show();
jQuery("label[for='payment_id_1']").show();
} else {
jQuery('#payment_id_1').hide();
jQuery("label[for='payment_id_1']").hide();
}
// Получаем куки, если в куки - 1, то первый способ оплаты доступен, если нет(не 1) - скрыт
jQuery('input:radio[name=virtuemart_shipmentmethod_id]').click(function(){

            if (jQuery('#shipment_id_1').prop('checked') == true) {
                jQuery('#payment_id_1').show();
                jQuery("label[for='payment_id_1']").show();
                jQuery.cookie('choice', '1');
            }
//Если выбраем первый способ доставки, то первый способ оплаты будет доступен, и в куки записывается единица
else {
                jQuery('#payment_id_1').hide();
                jQuery("label[for='payment_id_1']").hide();
                jQuery.cookie('choice', '0');
            }
//Если выбираем другой способ доставки, то первый способ оплаты будет скрыт, в этом случае, в куки записывается 0
        });

});
В данном примере, первый способ оплаты будет появляться только в случае, если выбран первый способ доставки.
У меня стоит плагин one page checkout от Linelab. Код, приведённый выше, нужно вставить сразу после строк в файле default.php( этот файл вы копировали в папку с шаблоном при установке плагина )
Код:
document.id('payments').empty();
                var payments="";
                if(json.payments) {
                    for(var i=0;i<json.payments.length;i++) {
                    payments+=json.payments[i].toString().replace('input','input onclick="update_form();"')+'<br />';
                    }
                    document.id('payments').set('html',payments);
                }
Так же, нужно подключить в корзине, файл с библиотекой Jquery(если ещё не подключен) и плагин куки(скачать его можно отсюда Для просмотра ссылки Войди или Зарегистрируйся )
P.S. Впринципе, таким способом можно связать любое количество способов оплаты и доставки, только строчек, соответственно, побольше будет)
P.S.S. Данный способ должен работать и со стандартной корзиной, код, соответственно, нужно будет вставлять в другое место
А можно наглядно, как подключить куки и квери я в этом деле нуб
 
Назад
Сверху