Jump to content

filth

Пользователь
  • Content Count

    343
  • Joined

  • Last visited

Posts posted by filth

  1. В 27.09.2020 в 01:01, shooroop сказал:

    это означает что есть название артикула но нет название варианта

    
    if(!empty($variant['sku']) && empty($variant['name']))

     

    в первом куске кода вам надо  только заменить строчку с sql запросом на такой который вы хотите добиться  и все а не удалять его полностью. или написать новый if под себя

    Благодарствую за толчек в нужное направление, теперь работает как надо.

  2. 
    // Аяксовая корзина
    $(document).ready(function() {
    	
    $('form.variants').on('submit', function(e) {e.preventDefault();
    button=$(this).find('input[type="submit"]');
    if($(this).find('select[name=variant]').length>0)
    	variant=$(this).find('select').val();
    if($(this).find('input[name=variant]:checked').length>0)
    	variant=$(this).find('input[name=variant]:checked').val();
    
    $.ajax({
    	url:"ajax/cart.php",
    	data:{variant:variant},
    	dataType:'json',
    	success:function(data){$('.cart_informer').html(data);
    if(button.attr('data-result-text'))button.val(button.attr('data-result-text'));
    }});
    var o1 = $(this).offset();
    	var o2 = $('.cart_informer').offset();
    	var dx = o1.left - o2.left;
    	var dy = o1.top - o2.top;
    	var distance = Math.sqrt(dx * dx + dy * dy);
    	$(this).closest('.product').find('.image img').effect("transfer", { to: $(".cart_informer"), className: "transfer_class" }, distance);	
    	$('.transfer_class').html($(this).closest('.product').find('.image').html());
    	$('.transfer_class').find('img').css('height', '100%');
    	return false;		
    });
    
    });
    

     

  3. Вроде разобрался))) Правильней всего будет такой код для ajax_cart.js

    // Аяксовая корзина
    $(document).ready(function() {
    	
    $('form.variants').submit (function(e) {e.preventDefault();
    button=$(this).find('input[type="submit"]');
    if($(this).find('select[name=variant]').length>0)
    	variant=$(this).find('select').val();
    if($(this).find('input[name=variant]:checked').length>0)
    	variant=$(this).find('input[name=variant]:checked').val();
    
    $.ajax({
    	url:"ajax/cart.php",
    	data:{variant:variant},
    	dataType:'json',success:function(data){$('#cart_informer').html(data);
    if(button.attr('data-result-text'))button.val(button.attr('data-result-text'));
    }});
    		var o1 = $(this).offset();
    	var o2 = $('#cart_informer').offset();
    	var dx = o1.left - o2.left;
    	var dy = o1.top - o2.top;
    	var distance = Math.sqrt(dx * dx + dy * dy);
    	$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);	
    	$('.transfer_class').html($(this).closest('.product').find('.image').html());
    	$('.transfer_class').find('img').css('height', '100%');
    	return false;
    });
    });
    
  4. Поколупался, получилось так

    // Аяксовая корзина
    $(document).ready(function() {
    	
    $('form.variants').submit (function(e) {e.preventDefault();
    button=$(this).find('input[type="submit"]');
    if($(this).find('input[name=variant]:checked'))variant=$(this).find('input[name=variant]:checked').val();
    if($(this).find('select[name=variant]'))variant=$(this).find('select').val();
    $.ajax({
    	url:"ajax/cart.php",
    	data:{variant:variant},
    	dataType:'json',success:function(data){$('#cart_informer, #mobile_cart_informer').html(data);
    if(button.attr('data-result-text'))button.val(button.attr('data-result-text'));
    $.fancybox({href:'#cart_popup',title:'Корзина покупок','onStart':function(){$("#cart_popup").css("display","block");},'onClosed':function(){$("#cart_popup").css("display","none");}});}});
    });
    });
    

     

    Тут правда с модулем всплывающей корзины. Работает на jQuery 3.1.0

    P.S. Тут удалена анимация перелета товара в корзину.

    P.P.S. Убрал 

    .size()>0) 

     

    Так как .size не рабтает в новой jQuery, .length которая пришла на смену тоже ошибку выдает, тут пусть знатоки подскажут чем это чревато)))

    .size()>0)
  5. адрес сайта скажите, или прикрепите файлы html/product.tpl и js/ajax_cart.js

    product.tpl стандартный, еще не правился ajax_cart.js вот: 

    $('form.variants').on('submit',function(e){e.preventDefault();button=$(this).find('input[type="submit"]');if($(this).find('input[name=variant]:checked').size()>0)variant=$(this).find('input[name=variant]:checked').val();if($(this).find('select[name=variant]').size()>0)variant=$(this).find('select').val();$.ajax({url:"ajax/cart.php",data:{variant:variant},dataType:'json',success:function(data){$('#cart_informer, #mobile_cart_informer').html(data);if(button.attr('data-result-text'))button.val(button.attr('data-result-text'));$.fancybox({href:'#cart_popup',title:'Корзина покупок','onStart':function(){$("#cart_popup").css("display","block");},'onClosed':function(){$("#cart_popup").css("display","none");}});}});
    
    });
    
  6. все потому что ajax_cart.js использует метод live который является устаревшим для новых версий jQuery. вам нужно либо добавить jQuery Migrate для того чтобы поддерживался live, либо уйти от live и переписать ajax_cart.js 

    Не поможете с этим? не силен в .js. Вычитал, что нужно добавить аргумент в метод ".on" по типу 

    $('form.variants').on('submit','.argument',function(e)....
    

    Что добавить вместо ".argument"? Или не все так просто?

  7. А какой-то извращенец принципиально в ИЕ работает или вообще в сафари.

    У вашего типа нет кроссбраузерности.

    А зачем использовать для работы браузеры, которые еще не целиком поддерживают HTML5?

    Новый ишак кстати понимает эти теги, и сафари и ios тоже. один firefox пасет задних

    тут чтото есть http://shpargalkablog.ru/2013/11/calendar.html

  8. Всё бы ничего, если бы этот календарь мог и время указывать, т.к. данные в БД должны быть в формате 0000-00-00 00:00:00., а он добавляет только дату. Если человеку время не критично, то можно сделать dateFormat: 'yy-mm-dd 00:00:00'. А вот если человек хочет, чтобы акция закончилась в 12:30, то такой пикер не проканает.

     В вашем случае 

    <input type="datetime-local">
    
  9. А как убрать сайд бар со всех страниц, кроме каталога? пишу в index.tpl

    {if $smarty.get.module=='ProductsView' }
    <div id="left">
     Тут сайдбар
    </div>
    {/if}
    

    Не работает(((

    Временно решил через wrapper, но два шаблона index постоянно править не удобно

  10. чтобы показать все товары просто передайте в параметр filter любое другое значение что отличается от ваших условий, например empty, тогда фильтры скинуться. и в сессию запишеться что фильтр пустой 

    Уже так и сделал, спасибо)

  11.  

    так попробуйте

     

    		// Текущий фильтр если был передан запрос get-параметром
    		if($this->request->get('filter', 'string')) {
    			$f = $this->request->get('filter', 'string');
    		} 
    		// если ничего не передавали, но в сессии присутствует значение фильтра
    		elseif(isset($_SESSION['filter_stat'])) {
    			$f = $_SESSION['filter_stat'];
    		}
    		
    		if(isset($f)) {
    			if($f == 'featured')
    				$filter['featured'] = 1; 
    			elseif($f == 'discounted')
    				$filter['discounted'] = 1;
    			elseif($f == 'outofstock')
    				$filter['in_stock'] = 0; 
    			elseif($f == 'in_stock') 
    				$filter['in_stock'] = 1;
    			
    			// запишем новое значение фильтра в сессию
    			$_SESSION['filter_stat'] = $f;
    			//передадим значение назад в шаблон
    			$this->design->assign('filter', $f);
    		}
    

    Теперь надо бороться с случаем, если фильтр нашел 0 товаров, но то просто.... И вернуть возможность показать "все товары")))

  12.  

    так попробуйте

     

    		// Текущий фильтр если был передан запрос get-параметром
    		if($this->request->get('filter', 'string')) {
    			$f = $this->request->get('filter', 'string');
    		} 
    		// если ничего не передавали, но в сессии присутствует значение фильтра
    		elseif(isset($_SESSION['filter_stat'])) {
    			$f = $_SESSION['filter_stat'];
    		}
    		
    		if(isset($f)) {
    			if($f == 'featured')
    				$filter['featured'] = 1; 
    			elseif($f == 'discounted')
    				$filter['discounted'] = 1;
    			elseif($f == 'outofstock')
    				$filter['in_stock'] = 0; 
    			elseif($f == 'in_stock') 
    				$filter['in_stock'] = 1;
    			
    			// запишем новое значение фильтра в сессию
    			$_SESSION['filter_stat'] = $f;
    			//передадим значение назад в шаблон
    			$this->design->assign('filter', $f);
    		}
    

    Работает на отлично! Спасибо огромное, уверен много кому будет полезно. 

  13. сохраняйте значение фильтра в сессию 

    $_SESSION['in_stock'] = $filter['in_stock'];
    

    и передавайте эту сессию назад в шаблон

    Понимаю, что прошу многовато, но помогите как правильно это добавить сюда 

    		// Текущий фильтр
    		if($f = $this->request->get('filter', 'string'))
    		{
    			if($f == 'featured')
    				$filter['featured'] = 1; 
    			elseif($f == 'discounted')
    				$filter['discounted'] = 1;
    			
    			elseif($f == 'outofstock')
    			
    				$filter['in_stock'] = 0; 
    			elseif($f == 'in_stock') 
    				$filter['in_stock'] = 1;
    			$this->design->assign('filter', $f);
    		}
    
  14. хм, заметил одну деталь, в админке фильтр сохраняет свое значение при выборе категорий и брендов, у клиента фильтр сбрасывается. Вопрос знатокам - возможно ли сохранить в сессии фильтр? Если да, подскажите как)))

  15. Ещё добавлю, если клиент выбрал оплату наличными при получении? И видит надпись 

     

     

    можете его оплатить!

    Ничего страшного, но лучше для оплаты онлайн сделать так: 

     

    {* Форма оплаты, генерируется модулем оплаты *}
    {if $order->status == 3}
    Ваш заказ удален!
    {elseif $order->status == 2}
    Ваш заказ отгружен! Приятного пользования!
    {elseif $order->status == 0}
    Ваш заказ обрабатывается, ожидайте подтверждения!
    {else}
    {if $payment_method->id==6} 
    Ваш товар есть в наличии, можете его оплатить!
    {checkout_form order_id=$order->id module=$payment_method->module}
    {else}
    {checkout_form order_id=$order->id module=$payment_method->module}
    {/if}
    {/if}
    

    id метода оплаты берем из БД!

×
×
  • Create New...