Последние темы


Изменение количества товаров в корзине и перерасчет без перезагрузки страницы

  • Всем привет.
    Разбираюсь с Shopkeeper (заранее спасибо за такой шикарный модуль), много моментов, где 100 раз переделываю (чаще пальцем в небо). Вот и наверное в этот раз такая же ситуация.

    В корзине идет вывод товаров с количеством.

    Выводится через

    <ul>[[+inner]]</ul>
    

    Чанк вывода элементов в корзине:

    <li>
        <div class="but">
        	<a href="[[+url_del_item]]"><img src="manager/templates/Ashar/img/remove.png" alt=""></a>
    	</div>
    	<div class="img">
    		<img src="[[+image_shop]]" alt="">
    
    	</div>
    	<div class="info">
    		<div class="top_info">[[+name]]</div>
    		<div class="count_block">
    			<div class="count-item-cart">Кол-во: [[+count]] 
    			<input class="shk-count" type="text" size="2" name="count[]" maxlength="3" title="изменить количество" value="[[+count]]" />
    			</div>
    			
    			<div class="price">[[+price]] р.</div>
    			<div class="clearfix"></div>
            </div>
    	</div>
    </li>
    

    Вызов ШК:

    [[!Shopkeeper3@cart_catalog? &cartTpl=`fullcart` ]]
    

    Чанк fullcart:

    <div class="shop-cart" data-shopcart="2">
        <div class="shop-cart-head curt"></div>
        <!--<div class="empty">
                <div class="shop-cart-empty">Пусто</div>
        </div>-->
    </div>
    <!--tpl_separator-->
    <div id="curt_modal">
    			<section>
    				<div class="top_modal">
    					Корзина
    				</div>
    				<div class="content">
    					<div class="left">
    						<div class="form-cart-header">Ваш заказ</div>
    						<ul>[[+inner]]</ul>
    					</div>
    					<div class="right">
    						<div class="form-cart-header">Ваши данные:</div>
    
    [[!FormIt?
    &hooks=`spam,shk_fihook,email,FormItAutoResponder,redirect`
    &submitVar=`order`
    &emailTpl=`shopOrderReport`
    &fiarTpl=`shopOrderReport`
    &emailSubject=`В интернет-магазине "[[++site_name]]" сделан новый заказ`
    &fiarSubject=`Вы сделали заказ в интернет-магазине "[[++site_name]]"`
    &emailTo=`[[++emailsender]]`
    &fiarReplyTo=`[[++emailsender]]`
    &fiarToField=`email`
    &redirectTo=`41`
    &validate=`address:required,fullname:required,email:email:required,phone:required,date_picker:required,time:required`
    &errTpl=`<br /><span class="error">[[+error]]</span>`
    ]]
    
    [[$shopOrderForm]]
    				</div>
    

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

    Как реализовать изменение кол-ва товаров как на демо сайте?
    Что нужно поправить?

    P.S. Видел про 500р. за помощь, если нужно - я заплачу.

    1. Не хватает <form>. Смотрите исходный чанк https://github.com/andchir/shopkeeper3/blob/master/core/components/shopkeeper3/elements/chunks/ru/shopCart.tpl
    2. &cartTpl=`fullcart` это должно быть в наборе параметров.
  • Огромное спасибо, есть подвижки 🙂

    Но теперь другие проблемы:

    1. Когда увеличиваешь количество товара в корзине - страница перезагружается и не отображаются товары и форма вообще. Если обновить страницу - всё окей, учтено новое количество товаров. Где-то есть мой косяк, но не могу найти никак.

    2. Цена итоговая меняется очень странно. Меняешь кол-во товаров - через N обновлений и времени она применяется. Иногда не применяется. Пробовал стандартные взять чанки корзины - там тоже уходит на обновление страницы, но если перезагрузить, то цена корректная.

    Вот как чанк корзины fullcart.tpl:

    <div class="shop-cart" data-shopcart="2">
        <div class="shop-cart-head curt"></div>
        <!--<div class="empty">
                <div class="shop-cart-empty">Пусто</div>
        </div>-->
    </div>
    <!--tpl_separator-->
    <div id="curt_modal" class="shop-cart" data-shopcart="2">
    			<section>
    				<div class="top_modal">
    					Корзина
    				</div>
    				<div class="content">
    				    <form action="[[+this_page_url]]#shopCart" method="post">
    					<div class="left">
    						<div class="form-cart-header">Вы сделали отличный выбор</div>
    						<ul>[[+inner]]</ul>
    					</div></form>
    					<div class="right">
    						<div class="form-cart-header">Ваши данные:</div>
    
    [[!FormIt?
    &hooks=`spam,shk_fihook,email,FormItAutoResponder,redirect`
    &submitVar=`order`
    &emailTpl=`shopOrderReport`
    &fiarTpl=`shopOrderReport`
    &emailSubject=`В интернет-магазине "[[++site_name]]" сделан новый заказ`
    &fiarSubject=`Вы сделали заказ в интернет-магазине "[[++site_name]]"`
    &emailTo=`[[++emailsender]]`
    &fiarReplyTo=`[[++emailsender]]`
    &fiarToField=`email`
    &redirectTo=`41`
    &validate=`address:required,fullname:required,email:email:required,phone:required,date_picker:required,time:required`
    &errTpl=`<br /><span class="error">[[+error]]</span>`
    ]]
    
    [[$shopOrderForm]]
    				</div>
    

    shopOrderForm.tpl:

    [[!shkOptions?
    &get=`delivery,payments`
    &post_name=`shk_delivery,payment`
    &toPlaceholders=`1`
    &pl_prefix=`shkopt_`
    &tpl=`select_option`
    ]]
    
    <p class="error">[[!+fi.error.error_message]]</p>
    <br />
    
    <form method="post" action="[[~[[*id]]]]" id="shopOrderForm">
    
    
    <input type="text" name="nospam:blank" value="" style="display:none;" />
    <input type="hidden" name="order" value="1" />
    
    <div class="in">
        <span>Ф.И.О.<small>*</small>:</span>
                <input name="fullname" size="30" class="textfield" type="text" placeholder="Имя" value="[[!+fi.fullname]]" />
                <div>[[!+fi.error.fullname]]</div>
                <div class="clearfix"></div>
    </div>
    <div class="in">
    	<span>Телефон<small>*</small>:</span>
    	<input name="phone" size="30" class="textfield" type="text" placeholder="Телефон" value="[[!+fi.phone]]" />
                <div>[[!+fi.error.phone]]</div>
                    <div class="clearfix"></div>
    </div>
    <div class="in">
    	<span>E-mail:</span>
                <input name="email" size="30" class="textfield" type="text" placeholder="Email" value="[[!+fi.email]]" />
                <div>[[!+fi.error.email]]</div>
            <div class="clearfix"></div>
    </div>
    <div class="date">
    								<span>Дата и время<small>*</small>:</span>
    								<div class="date_wr">
    								    <input name="date_picker" id="datepicker" class="textfield" type="text" value="[[!+fi.date_picker]]" />
                                        <div>[[!+fi.error.date_picker]]</div>
    									<input name="time" id="time" class="textfield" type="text" value="[[!+fi.time]]" />
                                        <div>[[!+fi.error.time]]</div>
    									<div class="clearfix"></div>
    								</div>
    							</div>
    							<div class="in">
    								<span>
    									Адрес<small>*</small>:	
    								</span>
    								<input name="address" size="30" class="textfield" type="text" value="[[!+fi.address]]" />
                                  <div>[[!+fi.error.address]]</div>
    								<div class="clearfix"></div>
    							</div>
    							<div class="in">
    								<span>
    									Примечание:
    								</span>
    								<textarea name="message" class="textfield" rows="4" cols="30">[[!+fi.message]]</textarea>
    								<div class="clearfix"></div>
    							</div>
    </div>
    					<div class="clearfix"></div>
    					
    					<div class="medium">
    						<div class="left">
    							<div>
    								<span class="sp">Способ получения заказа:</span>
    								<select name="shk_delivery" class="select">
    									<option value=""></option>
                                        [[!+shkopt_delivery]]
    								</select>
    							</div>
    							<div>
    								<span class="sp">Способ оплаты:</span>
    								<select name="payment" class="select">
                                        <option value=""></option>
                                        [[!+shkopt_payments]]
                                    </select>
                                    <div>[[!+fi.error.payment]]</div>
    							</div>
    						</div>
    						<div class="right">
    							<div class="top">
    								<span>Итого:</span>
    								<div class="pr">
    									[[+price_total]] <small>[[+currency]]</small>
    								</div>
    								<div class="clearfix"></div>
    							</div>
    							<input type="submit" name="submit_button" class="button oformlenie" value="Оформить заказ" id="shk_butOrder" />
    						</div>
    						<div class="clearfix"></div>
    					</div>	</form>
    
    
 

Последние комментарии

  • Что нового в Shopkeeper 4.0.3:

    Исправлено некорректное определение языка по умолчанию В настройках в админке скрываются пароли. Добавлена возможность загружать картинки для категорий. shopkeeper.js - добавлена функция updateProductsPrice() для поддержки текстовых полей для цены. Twig-функции contentList() и includeContent() вынесены в отдельный класс. Добавлено событие "order.before_create". Сортировка всех полей типа контента перетаскиванием. Автоматическое сохранение сортировки полей при сохранении типа контента (не нужно нажимать на отдельную кнопку). В интерфейсе админа добавлено поле поиска для списка Composer-пакетов.

    Скачать можно на главной странице https://modx-shopkeeper.ru/

    Читать далее
  • Вот этот плагин:
    0_1550334109280_screenshot_022.png

    Вроде по умолчанию он выключен. Надо включить. Но плагин работает только на редактирование товаров, при удалении он делалать ничего не будет. Только что проверил кнопку, всё работает корректно, фильтры удаляются и добавляются, когда нужно. Но нужно очищать корзину после удаления товаров (возможно баг).

    Читать далее
  • J

    @Andchir Если нажимаю кнопочку "Обновить значения", то в фильтрах появляются как раз те самые удаленные значения фильтра.. Потом приходится Ручками выбирать эти удаленные значения.
    вот так выглядит Управление фильтрами когда удаляешь ручками: https://yadi.sk/i/_zw64CGkZ_sAYg
    А вот так выглядит когда просто нажимаешь "Обновить значения": https://yadi.sk/i/7WFbXC6xV5sQAw (красным выделено, то что приходится постоянно удалять

    Читать далее
  • J

    Участник @Jokerit написал в TagManager2 отображает в фильтре удаленные значения TV-полей:

    tmRefresh

    Так и не смог найти как включить

    Читать далее