Как вывести две цены в каталоге товаров ?



  • Здравствуйте, я совсем запутался и не могу понять то что описано в документации.
    У меня есть товар и у него 2 размера у каждого размера своя цена. Я хочу сделать так что бы размер можно было выбрать radio button и после этого нажать одну кнопку "в корзину" и в корзине будет показана цена которая соответствует выбранному размеру.
    Сейчас у меня две кнопки "в корзину" каждая со своей ценой.

    <form action="[[~[[*id]]? &scheme=`abs`]]" method="post">
                <fieldset>
                    <input type="hidden" name="shk-id" value="[[+id]]" />
                    <input type="hidden" name="shk-count" value="1" />
                    <div class="product-price">
                        <button type="submit" class="shk-but">В корзину</button>
                        <div>Цена: <span class="shk-price">[[+price:num_format]]</span> руб.</div>
                    </div>
                </fieldset>
            </form>
            
            <form action="[[~[[*id]]? &scheme=`abs`]]" method="post">
                <fieldset>
                    <input type="hidden" name="shk-id" value="[[+id]]__price2" />
                    <input type="hidden" name="shk-count" value="1" />
                    <div class="product-price">
                        <button type="submit" class="shk-but">В корзину</button>
                        <div>Цена: <span class="shk-price">[[+price2:num_format]]</span> руб.</div>
                    </div>
                </fieldset>
            </form>
    

    Подскажите пожалуйста как можно вывести две цены без двух кнопок "в корзину" ?


  • Администраторы

    Использовать доп. параметры + param_edit.



  • @Andchir А где можно посмотреть пример такой конструкции ? Мне так будет более понятно.



  • @October сказал Как вывести две цены в каталоге товаров ?:

    @Andchir А где можно посмотреть пример такой конструкции ? Мне так будет более понятно.

    Я делаю тестовый магазин. У меня нету MIGX, в качестве каталога товаров я использую collections.



  • Кажется я понял как это сделать C:
    Если всё удачно получится с моим тестовым магазином напишу урок как я делал его C:


  • Администраторы

    Тип ввода - param_edit.

    Далее нужно выбрать тип вывода - sh_radio.
    В параметрах Шопкипера можно выбрать - changePrice = replace. чтобы цены брались от данных параметра.



  • @Andchir Что снова не пойму... я создал TV params с параметрами ввода param_edit и параметры вывода shk_radio.
    Вывожу в чанке так [[+params]], этот чанк я вывожу в каталоге товара через pdoResources .

    #Чанк

    <div class="product shk-item">
        <div class="product-b">
            <div class="product-descr">
                <a href="[[~[[+id]]? &scheme=`abs`]]">
                    <img class="shk-image" src="[[+img_product]]" alt="" height="130" width="130" />
                </a>
                <h3>[[+pagetitle]]</h3>
                [[+introtext]]<br />
                <a href="[[~[[+id]]? &scheme=`abs`]]">Подробнее &rsaquo;</a>
                <div style="clear:both;"></div>
            </div>
            
            
            <form action="[[~[[*id]]? &scheme=`abs`]]" method="post">
                <fieldset>
                    <input type="hidden" name="shk-id" value="[[+id]]" />
                    <input type="hidden" name="shk-count" value="1" />
                    <div class="product-price">
                        [[+params]]
                        <button type="submit" class="shk-but">В корзину</button>
                        <div>Цена: <span class="shk-price">[[+price:num_format]]</span> руб.</div>
                    </div>
                </fieldset>
            </form>
            
        </div>
    </div>
    

    #Вывод чанка в каталог товара

    [[pdoResources?
    &parents=`[[*id]]`
    &depth=`3`
    &hideContainers=`1`
    &includeTVs=`img_product,price,size,params`
    &tvPrefix=``
    &limit=`20`
    &sortdir=`ASC`
    &tpl=`tpl_product`
    &showLog=`1`
    ]]
    

    В итоге param_edit [[+params]] выводится просто текстом

    10 размер==100||20 размер==200
    

  • Администраторы

    http://docs.modx.pro/components/pdotools/snippets/pdoresources

    &processTVs Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs.

    Не понятно что значит "обработать", но я думаю это оно :slight_smile:



  • @Andchir Круто, большое спасибо! Я совсем на это внимание не обратил. :(
    &processTVs - обработал [[+tv.params]] и нормально вывел, но djn медиа tv, почему то перестал обрабатывать. Даже параметр &prepareTVs не помог.
    По этому медиа TV я обработал в самом чанке таким способом.

    [[pdoResources? &resources=`[[+id]]` &includeTVs=`img_product` &prepareTVs=`1` &tpl=`@INLINE {{+tv.img_product}}`]]
    

    После этого всё заработало. :)

    Кстати, можно ли к [[+tv.params]] задавать чанки к каждому параметру который выводится через этот TV ?


  • Администраторы

    Кстати, можно ли к [[+tv.params]] задавать чанки к каждому параметру который выводится через этот TV ?

    Для этого есть сниппет "param_edit_table".



  • @Andchir этот код выводить в место [[+tv.params]] ?

    [[shk_include?
    &file=`core/components/shopkeeper/elements/snippets/param_edit_table.php`
    &tvName=`options`
    &tpl=`properties_table`
    ]]
    

    А его можно выводить в чанке и потом обрабатывать вывод чанка pdoTools'ом ?



  • @October сказал Как вывести две цены в каталоге товаров ?:

    @Andchir этот код выводить в место [[+tv.params]] ?

    [[shk_include?
    &file=`core/components/shopkeeper/elements/snippets/param_edit_table.php`
    &tvName=`options`
    &tpl=`properties_table`
    ]]
    

    А его можно выводить в чанке и потом обрабатывать вывод чанка pdoTools'ом ?

    Не тот код вставил.
    Хотел вставить этот.

    [[param_edit_table?
    &docId=`1`
    &tvName=`all_width`
    &postName=`w`
    &tpl=`@CODE:
    <select name="w">
        <option value=""></option>
        [[+inner]]
    </select>
    <!--tpl_separator-->
    <option value="[[+field1]]"[[+selected1]]>[[+field1]]</option>
    `]]
    

    Кстати сообщение нельзя отредактировать если даже меньше 30 секунд прошло. Выдает такую ошибку.

    Сообщения можно редактировать только в течение 30 секунд(ы) после опубликования
    


Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.