Новости

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

  • Простите, туплю. Как вывести две и более цены для одного товара в чанке каталога и подробной страницы товара, а также в самой корзине?
    В докумментации об этом коротко и мне не совсем понятно.
    Как я понял предлагается создавать несколько полей цен (price1, price2) и потом лепить несколько форм. Каждую форму можно показывать с условием if price not empty.
    Я не понял строки примера:

    <input type="hidden" name="shk-id" value="[[*id]]__price2" />
    

    Чей там id? Кроме того, мы ведь делаем привязку к названию поля "price". Это даже в конфиге прописано. Будет ли корзина подхватывать другие поля цен?

    Можно ли попросить выложить более подробный пример чанка кнопки оплаты и что должно быть в корзине, чтобы она общитывала и выводила значения?

    Еще вопрос, можно ли решить эту задачу присвоив TV price тип multi-select и загнав все цены в одно поле? Или Shopkeeper3 не будет работать со списком?

    Спасибо.

  • Пока задавал вопрос, сам на него и ответил - просто сделал все как написано. Создал несколько TV разных цен одного товара, вставил их в точности, как написано в докумментации (см. предыдущий комментарий). Все работает. Единственное, что не могу придумать, как снабдить вариации цен добавочной информацией (за что цена), чтобы она передавалась в корзину?
    То есть, если у меня: LP доставка по европе, LP доставка по миру, CD доставка по европе, CD доставка по всему миру, lossless и mp3 - 6 возможных ценовых позиций для одного наименования, как провести через корзину наименование ценовой позиции рядом с самой ценой? Чтобы если покупатель выбрал запись "Название №1" в виде диска и mp3 в корзине было бы отмечено:
    Диск "Название №1" - 15 евро
    MP3 "Название №1" - 8 евро
    а не как у меня сейчас только лишь:
    "Название №1" - 15 евро
    "Название №1" - 8 евро

  • Это тоже из доков:
    Добавление в корзину данных без создания 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>
     
     
     
    
  • Я просил показать картинку из админке, чтобы было видно какие цены указаны и какие там названия ТВ. Плюс надо указать какая у вас версия Шопкипера.

 

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

  • Сам tmFilters не отображается хоть убей. Вывожу:

    Нужно показать где вы это выводите.

    Читать далее
  • @LoGruS ого, даже не ожидал, что спустя столько лет кто-то моими велосипедами воспользуется 😃 Благодарю за дополнения.

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

    @Andchir
    Да, в TM2 в админке фильтр age включен. Все данные из TV подтянулись, все норм.

    Читать далее
  • В компоненте в админке фильтры есть?

    Читать далее