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


Две и более цены для одного товара

  • Это тоже из доков:
    Добавление в корзину данных без создания TV-параметров.

    <input type="text" name="test__[[*id]]__add" value="дополнительные данные" />
    

    В корзину добавится параметр, который можно выводить в месте вставки плейсхолдера [[+shk_test]] (выведется «дополнительные данные»).
    Пример:

    <input type="text" name="dopname__[[*id]]__add" value="Диск" />
    

    В корзину добавится параметр, который можно выводить в месте вставки плейсхолдера [[+shk_dopname]] (выведется «Диск»).

    В чанк shopCartRow добавить [[+shk_dopname]]:
    изменить строку

    <td align="left"><b><a href="[[+url]]">[[+name]]</a></b> [[+addit_data]]</td>
    

    на -

    <td align="left"><b><a href="[[+url]]"> [[+shk_dopname]] [[+name]]</a></b></td>
    

    или даже так -

    <td align="left"><b><a href="[[+url]]"> [[+addit_data]] [[+name]]</a></b></td>
    

    Если нужен [[+addit_data]] (в нем тоже отображается доп. название параметра), то его или удалить или поработать над его формированием дополнительно.

  • @d4m Туплю, и не понимаю. Так как сделать две цены? Документация, без примеров не понятна.

  • Пока задавал вопрос, сам на него и ответил

    Я думаю, если вы ещё подумаете, то сами ответите на все остальные вопросы. Поле hidden может быть заменено на radio и т.д. В этом случае форма может быть одна. Так же и с параметрами, о которых вам писали выше.

  • @andchir Да, понял. Не сразу догадался зайти в чанк кнопки "в корзину". За подсказку с radio - отдельное спасибо!

  • Участник @Asderkdw написал в Две и более цены для одного товара:

    dopname__[[*id]]__add

    Все равно не получается создать конфигурацию, чтобы ВСЕ параметры полностью передавались в корзину с соответствующей ценой.
    Выходит, что он передает в корзину название параметра, но цена напротив останется как без него. Это дичь!
    А если покупатель (что часто бывает) один товар берет с параметром и один без параметра.
    Напротив обоих позиций будет стоять одинаковая цена. Но итоговая - другая.
    То есть будет два товара по 2р.
    А итоговая будет 12р. потому, что второй товар был с параметром, но цена в списке будет стандартная.

    Чтобы не пустословить.
    Вот пример:

    <input type="radio" name="shk-id" value="[[+id]]__price1" />
    

    Передаем стоимость в корзину.
    А. вот такая у нас "веселая корзина" получается:

    <div><a href="[[+url]]">[[+shk_dopname]] [[+name]]</a> [[+addit_data]]</div>
     <div>[[+price]] [[+currency]]</div>
    

    Откуда возьмется [[+shk_dopname]] ?
    А если возьмется, то куда в корзине выведется [[+price1]]?

  • @11

    Цитата из документации:

    [[+price]] - цена товара;
    [[+price_total]] - общая цена товара, включая доп. параметры;
    [[+price_count]] - цена товара, умнженная на кол-во;
    [[+price_count_total]] - общая цена товара с параметрами, умноженная на кол-во;

    Откуда возьмется [[+shk_dopname]] ?

    Я не увидел как у вас выводится этот параметр.

    А если возьмется, то куда в корзине выведется [[+price1]]?

    Из ТВ с названием "price1". Только выводить нужно не так, а как написано в документации.

  • @Andchir
    нет, вы наверное не поняли в чем проблема.

    Смотрите.
    Есть карточка.

    <div class="col-md-4 col-xs-6 shk-item">
    								<div class="product">
    									<div class="product-img">
    										<a href="[[~[[+resource_id]]]][[+alias]].html">	<img src="[[+image:phpthumbof=`w=250&h=180&zc-1`]]" alt="[[+pagetitle]]" class="img-responsive" ></a>
    										<div class="product-label">
    											[[+sale]]
    											[[+new]]
    										</div>
    									</div>
    								 <form action="[[~[[*id]]? &scheme=`abs`]]" method="post">
    									<div class="product-body">
    									    <fieldset>
    									      
                                              <input type="hidden" name="shk-name" value="[[+pagetitle]]" />
                                              <input type="hidden" name="shk-count" value="1" />
                                             
    										<p class="product-category">[[+param1]]</p>
    										<span class="product-name" style="font-size:10px;"><a href="[[~[[+resource_id]]]][[+alias]].html">[[+pagetitle:limit=`39`]]</a></span>
    										<p><input type="radio" name="shk-id" value="[[+id]]" />
      								    	Без гелия <h4 class="product-price">[[+price]] руб.</h4></p>
    										
    										<input type="radio" name="shk-id" value="[[+id]]__price1" />
      								    	С гелием <h4 class="product-price">[[+price1]] руб.</h4>
    										<div class="product-rating">
    											[[+raiting]]
    										</div>
    									</div>
    									<div class="add-to-cart">
    								
    										<button type="submit" name="submit" class="add-to-cart-btn shk-but"><i class="fa fa-shopping-cart"></i> В корзину</button>
    									</div>
    									</fieldset>
    									</form>
    						
    								</div>
    							</div>
    

    Вторая цена с параметров в TV price1.

    Она добавляется в итоговую стоимость в корзине, но напротив товара стоит цена как без параметра.

    Получается, что шарик с гелием в итого стоит 5р.
    А напротив товара в корзине он стоит 2 р.

    Я пробовал все что вы написали выше, не выводит нормально цену напротив товара.
    Вот картинка
    alt text

  • @Andchir
    В корзине в "итого", выводится правильная цена.

    А вот чуть выше в списке , не правильная, без пересчета дополнительного параметра из поля price1.

     <tr class="cart-order">
        <td align="left"><b><a href="[[+url]]">[[+name]]</a></b> [[+addit_data]]</td>
        <td>[[+price_count_total]] [[+currency]]</td>
        <td>
            <input class="shk-count" type="text" size="2" name="count[]" maxlength="3" title="изменить количество" value="[[+count]]" />
        </td>
        <td align="right">
            <a href="[[+url_del_item]]" title="Удалить" class="shk-del"><img src="assets/components/shopkeeper3/web/css/default/delete.gif" width="17" height="17" alt="Удалить" /></a>
        </td>
    </tr>
    

    То есть по какой-то причине в price_count_total записана цена без учета параметра price1

  • @Andchir где-то у вас ошибка в коде.
    Потому что все что в [[+inner]] не передается стоимость товара с учетом параметра

  • @11

    Вот картинка

    Где?

    Она добавляется в итоговую стоимость в корзине, но напротив товара стоит цена как без параметра.

    У вас нет никакого параметра. Вы просто меняете название ТВ, откуда брать цену.

  • @Andchir
    Вот картинка

    Смотрите на итоговую сумму и на стоимость товара

  • Вообще странно вы это делаете. Как собираетесь выводить в корзине "С гелием / без гелия"? Есть стандартная система доп. параметров. Но, если надо именно так, то покажите какие цены указываете в админке и полный код чанка корзины.

    PS https://dropmefiles.com/wYnxD Это ссылка на HTML страницу, а не на картинку, поэтому вставлять нужно просто как ссылку (текст).

  • Эта запись удалена!
  • @Andchir

    Делаю все через чекбоксы
    Вот чанк товара

    <div class="col-md-4 col-xs-6 shk-item">
    								<div class="product">
    									<div class="product-img">
    										<a href="[[~[[+resource_id]]]][[+alias]].html">	<img src="[[+image:phpthumbof=`w=250&h=180&zc-1`]]" alt="[[+pagetitle]]" class="img-responsive" ></a>
    										<div class="product-label">
    											[[+sale]]
    											[[+new]]
    										</div>
    									</div>
    								 <form action="[[~[[*id]]? &scheme=`abs`]]" method="post">
    									<div class="product-body">
    									    <fieldset>
    									      
                                              <input type="hidden" name="shk-name" value="[[+pagetitle]]" />
                                              <input type="hidden" name="shk-count" value="1" />
                                             
    										<p class="product-category">[[+param1]]</p>
    										<span class="product-name" style="font-size:10px;"><a href="[[~[[+resource_id]]]][[+alias]].html">[[+pagetitle:limit=`39`]]</a></span>
    										<p><input type="radio" name="shk-id" value="[[+id]]__price" />
      								    	Без гелия <h4 class="product-price">[[+price]] руб.</h4></p>
      								    	
      								    	
    										<input type="radio" name="shk-id" value="[[+id]]__price1" />
      								    	С гелием <h4 class="product-price">[[+price1]] руб.</h4>
    										<div class="product-rating">
    											[[+raiting]]
    										</div>
    									</div>
    								
    								<div class="add-to-cart">
    								
    										<button type="submit" name="submit" class="add-to-cart-btn shk-but"><i class="fa fa-shopping-cart"></i> В корзину</button>
    									</div>
    								
    									</fieldset>
    									</form>
    									
    											
    									
    						
    								</div>
    							</div>
    							
    
  • @Andchir

    shopCart

    <div class="col-md-5 order-details" data-shopcart="2" style="margin-top:31px;">
    						<div class="section-title text-center">
    							<h3 class="title">Ваша корзина</h3>
    						</div>
    						<div class="order-summary">
    							<div class="order-col">
    							
    								
    							</div>
    							<div class="order-products">
    								Товаров нет
    								
    							</div>
    							
    						</div>
    					</div>
    <!--tpl_separator-->					
    					<div class="col-md-5 order-details" data-shopcart="2" style="margin-top:31px;">
    						<div class="section-title text-center">
    							<h3 class="title">Ваша корзина</h3>
    						</div>
    						<div class="order-summary">
    						    <form action="[[+this_page_url]]#shopCart" method="post">
    						         <fieldset>
    							
    							
    							
    [[+inner]]
    
    							
    							
    							<div class="order-col">
    								<div><strong>Итого:</strong></div>
    								<div><strong class="order-total">[[+price_total]]</strong>[[+currency]]</div>
    							</div>
    							
    						</div>
    					
    						
    					
    						</fieldset>
            </form>
    					</div>
    
  • @Andchir

    shopCartRow

    <img src="[[+image:phpthumbon=`w=100&h=100&zc=1`]]" alt="[[+title]]" />
    
        <div class="order-col">
        
       <div><a href="[[+url]]">  [[+name]]</a></div>
       <div><a href="[[+url]]">[[+price_total]][[+currency]]</a></div>
      </div>
            <div><input class="primary-btn shk-count" type="text" size="2" name="count[]" maxlength="3" title="изменить количество" value="[[+count]]" />
      </div>
       
             <div><a href="[[+url_del_item]]" title="Удалить" class="shk-del">X</a>
     </div>
     
     
     
    
  • Я просил показать картинку из админке, чтобы было видно какие цены указаны и какие там названия ТВ. Плюс надо указать какая у вас версия Шопкипера.

  • @Andchir
    https://dropmefiles.com/bR4bj

    Цены указаны числами

    Версия 3.2.7-pl3

  • @Andchir
    Вот так выглядит карточка

    https://dropmefiles.com/bR4bj

 

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

  • @LoGruS Поправка, привязываемся к значению [[+value]]

    Читать далее
  • Участник @Andchir написал в Ограничение покупки:

    SHK.recountItemAll();

    Андрей, спасибо! Сделал, работает и обновление цены и ограничение товаров по инвентори.

    Итоговый вариант (вдруг кому пригодится):

    Поле кол-во товара:

    <input class="shk-count" type="number" name="count[]" value="[[+count]]" min="1" max="[[+inventory]]" />

    Кнопка пересчитать:

    <a href="#" onclick="SHK.recountItemAll(); return false;" data-toggle="tooltip" title="Пересчитать">Пересчитать</a>

    ИТОГО - контроль кол-ва.

    Читать далее
  • Решается без костылей из js

    [[+name:is=`color`:then=`<label for="[[+name]]__[[+idx]]" class="d-block custom-control-label shk-color-checkbox [[+name]][[+idx]]" title="[[+value]]"></label><p class="ml-40">[[+value]]</p>`:else=`<label for="[[+name]]__[[+idx]]">[[+value_name]]</label>`]]

    Получаем на странице строку такого вида:

    <label for="color__1" class="d-block custom-control-label shk-color-checkbox color1" title="Голубой"></label><sup>17</sup><p class="ml-40">Голубой</p>

    Привязываемся в css к классу color1, а дальше CSS спрайты и стили решают все, проверенно, работает 😃 Спасибо Андрею и его демо-сайту с shopkeeper4, подглядел решение на нем.

    Читать далее