Перейти к содержанию

Рекомендуемые сообщения

Нужно изменить кнопки radio в шаге выбора доставки, на выпадающий список или выпадающий список из этих же кнопок.
Отвечаю сразу на вопрос зачем, много вариантов доставки по городу, что бы это не выглядело громоздко хочу спрятать, пункты просто клоны стандартного сделанные через модуль, но в котором нет настройки как и отдельного файла tpl 


код из файла shipping_method.tpl, подскажите как изменить код что бы решить проблемку

<div class="radio">
  <label>
    <?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" checked="checked" />
    <?php } else { ?>
    <input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" />
    <?php } ?>
    <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?></label>
</div>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока оставлю мануальчик по выпадающим спискам - http://htmlbook.ru/html/select

По суди нужно радиокнопки заменить на селект с двумя option, подставив нужные значения. Почитайте для начала мануал, может станет все сразу ясно. Если вдруг что - спрашивайте. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Gorman сказал:

Пока оставлю мануальчик по выпадающим спискам - http://htmlbook.ru/html/select

По суди нужно радиокнопки заменить на селект с двумя option, подставив нужные значения. Почитайте для начала мануал, может станет все сразу ясно. Если вдруг что - спрашивайте. 

Читал и пробовал, я не настолько 0

вместо одного списка с несколькими выпадающими элементами, получилось 3 с одним
вот такая штука вышла, укажите где не так и как исправить

<select class="radio55">
  <label>
    <?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <option> <?php echo $quote['code'] ?> </option>
    <?php } else { ?>
    <option value=""><?php echo $quote['code']; ?> </option>
    <?php } ?>
    <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?></label>
</select> 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Honor357 сказал:

вместо одного списка с несколькими выпадающими элементами, получилось 3

ну да. а что вы ожидали?  приведенный вами код выполняется в цикле

как-то так

<?php if (!$shipping_method['error']) { ?>
<select name="shipping_method">
<?php foreach ($shipping_method['quote'] as $quote) { ?>
<?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <option value="<?php echo $quote['code']; ?>" selected="selected"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } else { ?>
    <option value="<?php echo $quote['code']; ?>"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } ?>
<?php } ?>
</select>
<?php } else { ?>
<div class="alert alert-danger"><?php echo $shipping_method['error']; ?></div>
<?php } ?>

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, fanatic сказал:

ну да. а что вы ожидали?  приведенный вами код выполняется в цикле


не силен в вебе, пока что. Больше в с++ и делфи
Выпадающий список работает все круто, но ошибку выдает при переходе на следующий шаг, что не выбрана доставка, может и тут подскажете?)

Изменено пользователем Honor357

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Honor357 сказал:

но ошибку выдает при переходе на следующий шаг,

конечно, потому что

data: $('#collapse-shipping-method select[type=\'radio\']:checked, #collapse-shipping-method textarea'),

в вашем случае нужно

data: $('#collapse-shipping-method select[name=\'shipping_method\'], #collapse-shipping-method textarea'),

файл   catalog/view/theme/ваша тема/template/checkout/checkout.tpl

строка  708

$(document).delegate('#button-shipping-method', 'click', function() {
    $.ajax({
        url: 'index.php?route=checkout/shipping_method/save',
        type: 'post',
//вот оно где
        data: $('#collapse-shipping-method select[name=\'shipping_method\'], #collapse-shipping-method textarea'),
        dataType: 'json',
        beforeSend: function() {
        	$('#button-shipping-method').button('loading');
		},
        success: function(json) {
            $('.alert, .text-danger').remove();

            if (json['redirect']) {
                location = json['redirect'];
            } else if (json['error']) {
                $('#button-shipping-method').button('reset');

                if (json['error']['warning']) {
                    $('#collapse-shipping-method .panel-body').prepend('<div class="alert alert-danger">' + json['error']['warning'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>');
                }
            } else {
                $.ajax({
                    url: 'index.php?route=checkout/payment_method',
                    dataType: 'html',
                    complete: function() {
                        $('#button-shipping-method').button('reset');
                    },
                    success: function(html) {
                        $('#collapse-payment-method .panel-body').html(html);

						$('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('<a href="#collapse-payment-method" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_payment_method; ?> <i class="fa fa-caret-down"></i></a>');

						$('a[href=\'#collapse-payment-method\']').trigger('click');

						$('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_confirm; ?>');
                    },
                    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);
        }
    });
});

 

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Honor357 сказал:

Больше в с++ и делфи

ну да, там же нет циклов:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 hours ago, Honor357 said:


не силен в вебе, пока что. Больше в с++ и делфи
 

Серьезно?:)

 

Фанатик все написал, в общем-то, пишите если будут затыки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Gorman сказал:

Фанатик все написал, в общем-то, пишите если будут затыки.

image.png.03c85598e35796032f4e4881ec202f1c.png

 

Выбираем в верхнем селекте, пункт, а на 6ом шаге показывает что выбран пункт из нижнего

При этом если выбрать из второго то этот выбор, попадает в 6 шаг

Изменено пользователем Honor357

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы на локалке делаете, или можно глянуть сайт?

 

Если на локалке, или глянуть нельзя - скопируйте сюда элемент селект с отладчика, скорее всего value проставлено неверно. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у вас 2 селекта а в в js  берется значение из определенного списка

select[name=\'shipping_method\']

предположу, вы еще и спискам дали одинаковые имена

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Gorman сказал:

скорее всего value проставлено неверно. 

не угадал:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, fanatic сказал:

у вас 2 селекта а в в js  берется значение из определенного списка


select[name=\'shipping_method\']

 

селекта два все верно, обьединить или сделать чекбокс с селектом ведь можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Gorman сказал:

Вы на локалке делаете, или можно глянуть сайт?

 

Если на локалке, или глянуть нельзя - скопируйте сюда элемент селект с отладчика, скорее всего value проставлено неверно. 

нет, стоит на хостинге
manualart.ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 minutes ago, fanatic said:

не угадал:-)

Похоже на то :)

 

9 minutes ago, Honor357 said:

нет, стоит на хостинге
manualart.ru

Сейчас я увидел только один селект, видимо убрали пока второй? Но судя по симптомам, действительно у селектов одинаковый name, js берет последний и выводит в поле. У вас какая цель этих двух селектов, что хотите в идеале получить на 6ом этапе?

Изменено пользователем Gorman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, Gorman сказал:

Сейчас я увидел только один селект, видимо убрали пока второй? Но судя по симптомам, действительно у селектов одинаковый name, js берет последний и выводит в поле. У вас какая цель этих двух селектов, что хотите в идеале получить на 6ом этапе?

Нет, второй селект это почта россии, модуль который расчитывает стоимость и срок доставки, если данные были заполнены криво он не выходит

 

Суть в том что первый это доставка по городу в котором магазин находится ( районы) ,второй это модуль почты, скорее всего будет третий от сдэка, суть в том что клиент выбрал тот вариант доставки который нужен ему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

21 минуту назад, Honor357 сказал:

обьединить или сделать чекбокс с селектом ведь можно?

вынесите   select из цикла

в цикле формируйте только option

13 минут назад, Gorman сказал:

 у селектов одинаковый name,

даже если дать разные, все равно этого мало. нужно тогда тут подправить

7 часов назад, fanatic сказал:

data: $('#collapse-shipping-method select[name=\'shipping_method\'], #collapse-shipping-method textarea'),

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 минут назад, fanatic сказал:

вынесите   select из цикла

<?php if ($shipping_methods) { ?>
<p><?php echo $text_shipping_method; ?></p>
<select name="shipping_method">
<?php foreach ($shipping_methods as $shipping_method) { ?>
<p><strong><?php echo $shipping_method['title']; ?></strong></p>
<?php if (!$shipping_method['error']) { ?>
<?php foreach ($shipping_method['quote'] as $quote) { ?>
<?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <option value="<?php echo $quote['code']; ?>" selected="selected"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } else { ?>
    <option value="<?php echo $quote['code']; ?>"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } ?>
<?php } ?>
</select>
<?php } else { ?>
<div class="alert alert-danger"><?php echo $shipping_method['error']; ?></div>
<?php } ?>

Попробовал вот так, остался один селект, в котором только способы доставки по городу(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Honor357 в симпле ж есть вся эта каша, хочешь радио, хочешь выпадающий 450р сиди и настраивай..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, AWARO сказал:

в симпле ж есть вся эта каша,

мы не ищем легких путей:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да причем тут легкие пути, если клиенту не нужно это упрощение зачем ему платить то.
Просто чекбокс на выпадающий список изменить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
54 minutes ago, Honor357 said:

Да причем тут легкие пути, если клиенту не нужно это упрощение зачем ему платить то

Клиент всегда за что-то платит, за работу специалиста по "разработке" выпадающего списка или за подключение модуля. Имхо 450р - это даже не час работы, а пол часа. Сколько вы затратили?
Если для себя - то другое дело, разобраться всегда хорошо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Gorman сказал:

Клиент всегда за что-то платит, за работу специалиста по "разработке" выпадающего списка или за подключение модуля. Имхо 450р - это даже не час работы, а пол часа. Сколько вы затратили?
Если для себя - то другое дело, разобраться всегда хорошо.

Затратил больше не спорю, но для себя тоже интересно
как подправить до конца поскажете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Честно - нужно лезть в js разбираться, по памяти не скажу. Фанатик может подскажет, если вдруг помнит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Gorman сказал:

Честно - нужно лезть в js разбираться, по памяти не скажу. Фанатик может подскажет, если вдруг помнит.

Но ведь по идеи, если селект будет один то проблема решится?
так для развития, как сделать из них один большой селект?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.