Kerm Posted March 27, 2013 Share Posted March 27, 2013 (edited) В своей работе часто встречаюсь с такой проблемой когда к примеру товары добавляются импортом и в файле с комбинациями не указывается комбинация по умолчанию или когда комбинация по умолчанию в товаре попросту закончилась. А когда клиент заходит на карточку товара то видит надпись что данная комбинация, к примеру цвета и размера, отсутствует, выберите другой цвет и размер...и у него нету кнопки добавить в корзину...У меня слишком много таких товаров! Да и на всякий случай чтобы не писали, галка в админке, скрывать комбинации которых нету в наличии, скрывает только когда к примеру в 33 размере нету всех цветов, а если в 33 нету красного, в комбинации по умолчанию, но есть в синем, то не чего не скрывается. По этому я придумал такое решение: <script type="text/javascript"> // <![CDATA[ $(document).ready(function() { // Проверяем, если блок с надписью что товар отсуствует в этой комбинации не скрыт, делаем следующие... if ($('#availability_statut').css("display") == "block") { $('#attributes p:first select').find('option:selected').attr('selected', false); // находим комбинацию по умолчанию и снимаем с нее селект $('#attributes p:first select option:eq(1)').attr('selected', 'selected').parent().focus(); // выбираем следующую комбинацию в качестве комбинации по умолчанию findCombination(); $('#quantity_wanted_p, #add_to_cart').addClass('unhide'); ставим корзине и выбору кол-во класс чтобы открыть эти элементы. }; }); //]]> </script> Прописать в global.css или product.css: .unhide { display:block!important; } В product.js примерно на 252 строчке найти: else { $('#add_to_cart:visible').fadeOut(600); $('p#availability_statut:hidden').show('slow'); } И заменить на: else { $('#add_to_cart:visible, p#quantity_wanted_p:visible').removeClass('unhide'); $('#add_to_cart:visible').fadeOut(600); $('p#availability_statut:hidden').show('slow'); } И еще в том же файле, примерно на 236 строчке, поменять: $('#availability_statut:hidden').show(); На: $('#availability_statut:hidden').css('display', 'block'); Решение еще не оттестировано как следует и у него есть свои минусы и нюансы.. 1) Вторая комбинация может быть тоже недоступна и тогда мало того что вылезет текст что она не доступна, так еще и добавить в корзину кнопка будет присутствовать. 2) Почему я прописал класс, а не сразу show() или display:block, потому что не получилось не чего, не открывается таким способом потому что в product.js как то железно кнопка с выбором кол-во товаров скрывается. Буду рад если кто улучшить как то фикс или подскажет чего. Edited April 1, 2013 by Kerm (see edit history) 1 Link to comment Share on other sites More sharing options...
masquitoman Posted October 15, 2013 Share Posted October 15, 2013 а первый скрипт куда вставлять? Link to comment Share on other sites More sharing options...
Recommended Posts