?variant=

Правила раздела: faq.php?mode=okay

BAG
BAG

Сообщение #1 BAG » 31.05.2018, 21:26

Добрый день.
При переходе на вариант товара по ссылке ?variant=, например: http://demookay.com/products/telefon-meizu-m3-mini-m688u-16-gb?variant=24
jQuery переопределяет выбор варианта на ПЕРВЫЙ вариант В НАЛИЧИИ.
Возможно проще выбирать вариант по умолчанию не через jQuery, а изменить вариант по умолчанию в ProductView.php.
Например сделать сортировку если варианта нет в наличии опустить его ниже варианта который в наличии.

BAG
BAG

Сообщение #2 BAG » 02.06.2018, 05:44

Сам исправил.. Добавил в скрипт проверку условия: ЕСЛИ есть в наличии и отмечен ТО ничего не делать, ИНАЧЕ найти первый в наличии и отметить.

makki
makki
Репутация: 119
Сообщения: 317
Зарегистрирован: 12.08.2016
С нами: 2 года 1 месяц
Откуда: Киев
Сайт Skype

Сообщение #3 makki » 02.06.2018, 18:45

BAG писал(а):Добрый день.
При переходе на вариант товара по ссылке ?variant=, например: http://demookay.com/products/telefon-meizu-m3-mini-m688u-16-gb?variant=24
jQuery переопределяет выбор варианта на ПЕРВЫЙ вариант В НАЛИЧИИ.
Это переопределение через jQuery работает не во всех браузерах. Например в Сафари не работает.
Чтобы это исправить нужно в scripts.tpl в этом коде заменить first_in_stock.attr('selected',true); на first_in_stock.prop('selected',true);

Код: Выделить всё

    {if $smarty.get.module == "MainView" || $smarty.get.module == "ProductsView" || $smarty.get.module == "ProductView" || $smarty.get.module == "ComparisonView" || $smarty.get.module == "WishlistView" || $smarty.get.module == "BlogView"}
        $(document).ready(function(){
            $('select[name=variant]').each(function(){
                var first_in_stock = $(this).find('option[data-stock!="0"]').first();
                first_in_stock.attr('selected',true);
                first_in_stock.trigger('change');
            });
        });
    {/if}


Тоже считаю, что, определение варианта по-умолчанию нужно делать на стороне сервера.

makki
makki
Репутация: 119
Сообщения: 317
Зарегистрирован: 12.08.2016
С нами: 2 года 1 месяц
Откуда: Киев
Сайт Skype

Сообщение #4 makki » 13.08.2018, 14:27

Еще раз сегодня убедился, что вышеуказанный кусок кода из scripts.tpl - это зло, которое нужно срочно искоренить из движка.
Зачем в каталоге товаров дергать 24 селекта и 24 раза запускать $(document).on('change', '.fn_variant', function(), в которой тысяча операций? А что если выставлено 50 товаров на странице сайта?
И все это ради того чтобы определить вариант товара по-умолчанию у которого наличие больше ноля.
Не лучше ли это сделать в том же ProductsView.php, в котором итак зачем-то назначается вариантом по-умолчанию первый вариант товара.

Предлагаю разработчикам обратить внимание на этот момент и оптимизировать Okay


Название раздела: Баг-репорт OkayCMS (Сообщения об ошибках)
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Баг-репорт OkayCMS (Сообщения об ошибках)»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость