1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

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

Тема в разделе "Virtuemart", создана пользователем red_heads, 17 авг 2012.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
  1. red_heads

    red_heads

    Регистр.:
    30 янв 2007
    Сообщения:
    157
    Симпатии:
    26
    В старой версии вирта было решение, в новой версии кто нибудь знает как такое сделать. Чтоб при определенном способе доставки высвечивался способ оплаты предназначенный ему. И как поменять местами шаги сначала способ доставки, а потом способ оплаты.
     
  2. greenscale

    greenscale Создатель

    Регистр.:
    14 авг 2012
    Сообщения:
    27
    Симпатии:
    13
    Как местами поменять шаги:
    у нас есть 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 шаге, там уже не просто в цикле выводить на выбор все способы доставки, а проверять по этому массиву; за более подробной инфой в личку
     
  3. red_heads

    red_heads

    Регистр.:
    30 янв 2007
    Сообщения:
    157
    Симпатии:
    26
    Хотелось бы узнать где в каких местах делать исправления. Или может по идентификатору доставки привязать к нему оплату. Может у кого то уже есть наработки поделитесь кодом. Мне кажется что данное решение нужно не только мне. В старой версии вирта есть решение но я так понимаю, что под новую версию ни как не прокатит там и переменные изменились и файлы поменялись и функции ни те.
     
  4. papa911

    papa911 Создатель

    Регистр.:
    30 дек 2012
    Сообщения:
    21
    Симпатии:
    1
    Также интересует данный вопрос.
    А то как то не красиво при самовывозе, оплата наложенным платежом :)

    на одом из форумов предложили:
    Здравствуйте. Я по теме http://joomlaforum.ru/index.php?topic=228002 . Если интересует, обращайтесь по скайпу sttclan
    Стоимость решения проблемы - 500 рублей.
    Владимир.
     
  5. pelzar

    pelzar Создатель

    Регистр.:
    6 янв 2013
    Сообщения:
    15
    Симпатии:
    12
    Собственно, решил я данную проблему, покрайней мере для себя
    Код:
    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(если ещё не подключен) и плагин куки(скачать его можно отсюда https://github.com/carhartl/jquery-cookie )
    P.S. Впринципе, таким способом можно связать любое количество способов оплаты и доставки, только строчек, соответственно, побольше будет)
    P.S.S. Данный способ должен работать и со стандартной корзиной, код, соответственно, нужно будет вставлять в другое место
     
    dima_v и maxi2013 нравится это.
  6. romzes6961

    romzes6961 Постоялец

    Регистр.:
    6 дек 2014
    Сообщения:
    133
    Симпатии:
    65
    А можно наглядно, как подключить куки и квери я в этом деле нуб