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


Вывод доп. параметров в корзине в виде картинок

  • Добрый день! Возникла такая задача: на странице товара сделать выбор, скажем декора для торта! Выбрать можно 3шт. В корзине необходимо, чтобы отображались картинки по 50px выбранного декора! В общем, реализую это таким образом: 1. есть ресурс где все вариации перечислены в виде подресурсов; 2. В доп поле (тип множественный выбор) варианты ввода - SQL запрос и берем все варианты из того ресурса с вариантами; 2. В доп. поле в графе - вывод, сделал разделитель - "запятая"; 3. по сути на странице если выводить [[*field]], он нам выведет id выбранных вариантов, например: 123,143,86 и т.д. 4. Далее я подставляю это поле [[*field]] в pdoResources в параметр &resources и в виде картинок (чекбоксы), полученных из доп. полей этих ресурсов, вывожу варианты доступные для выбора на странице товара. В чанке для шопкипера сделал передачу доп. параметров в корзину как сказано в документации: <input type="checkbox" class="custom-control-input" id="[[+id]]" name="[[+id]]__[[*id]]__add" value="[[+id]]"> и по сути, все норм, в корзине выводятся айдишники выбранных декоров и я бы мог через сниппет (тот же pdoResources) вывести картинки по айдишникам, но блин при первом рендеринге страницы все выводится как надо, но когда отправляется аякс-запрос, картинки слетают и выводится часть сниппета как текст.0_1558348390073_testcake.PNG
    Как решить этот вопрос?! Как выводить изображения в корзине имея айдишник? Или как сделать, чтобы сниппеты выполнялись в корзине при аякс-запросе?
    п.с. временно решил: передаю в корзину путь картинки, а не id и картинки рисуются, но желательно бы еще pagetitle для аттрибута alt и т.д.

  • @unreal_serg Хотя, например, тот же плейсхолдер [[+image]] в корзине нормально обрабатывается любыми сниппетами, а [[+addit_data]] нет!!!

  • в корзине выводятся айдишники выбранных декоров и я бы мог через сниппет (тот же pdoResources) вывести картинки по айдишникам, но блин при первом рендеринге страницы все выводится как надо, но когда отправляется аякс-запрос, картинки слетают и выводится часть сниппета как текст

    Покажите как это делаете.

  • @Andchir
    Так я вывожу чекбоксы на странице товара, которые должны будут попасть в корзину:

                    [[!pdoResources?
                        &parents=`5`
                        &resources=`[[*fills]]`
                        &tpl=`fillsTpl`
                        &includeTVs=`image,price`
                        &templates=`12`
                        &limit=`0`
                        &sortby=`{"menuindex":"ASC"}`
                        &depth=`1`
                    ]]
    

    Чанк fillsTpl с оформлением чекбокса:

    <div class="checkbox-item">
        <input type="checkbox" class="custom-control-input" id="[[+pagetitle]]" name="[[+id]]__[[*id]]__add" value="[[+id]]">
        <label class="custom-control-label" for="[[+pagetitle]]">[[+pagetitle]]</label>
    </div>
    

    Чанк крзины shopCartRow:

    <tr class="cart-order">
        <td>
            <a href="[[+image]]" class="zoom">
                <img src="[[phpthumbon?&input=`[[+image]]`&options=`w=80&h=80&q=90&fltr[]=size`]]">
            </a>
        </td>
        <td align="left">
            <span class="product-name">
                <a href="[[+url]]">
                    [[+name]]
                </a>
            </span>
        </td>
        <td>[[+price]] [[+currency]]</td>
        <td align="center">
            [[!pdoResources?
                &parents=`5`
                &resources=`[[+addit_data]]`
                &tpl=`fillsCartTpl`
                &includeTVs=`image,price`
                &templates=`12`
                &limit=`0`
                &sortby=`{"menuindex":"ASC"}`
                &depth=`1`
            ]]
        </td>
        <td align="center">
            <a href="[[+url_del_item]]" title="Удалить" class="shk-del">
                <i class="fas fa-trash-alt"></i>
            </a>
        </td>
    </tr>
    

    Чанк fillsCartTpl:

    <img src="[[+tv.image]]" alt="[[+pagetitle]]" style="width: 50px">
    

    Вот при этой конструкции, картинки выводятся как надо, но корзина делает проверку после рендеринга страницы с корзиной и отправляет ajax-запрос, вот после этого запроса все пропадает!
    0_1558357372670_test2cakes.png

    ВОт после ajax'a
    0_1558357520737_test3cakes.png

  • В общем, вопрос решился - вызовом некешируемого снипеппета!!!! После ajax-запроса ничего не убирается!
    п.с. я очень надеюсь, что я не пропустил это в документации, иначе это просто ппц!

  • @Andchir мда, форум просмотрел, а туда то не заглянул! Спасибо!

 

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

  • A

    Участник @Andchir написал в CatalogFill и filter_export:

    нужно через разделитель || сделать 2 столбца и т.д.

    Создаете дополнительную колонку (можно несколько) после ТВ, значение которого нужно разделить. ID ТВ для такой колонки можно указать, тот которого не существует.

    //разбивка по столбцам при импорте и экспорте (content|tv|category) $cf_config['content_row'] = array( ... array('Параметры товара', array(2, 'tv')), array('Параметры товара - вторая колонка', array(2000, 'tv'))// Дополнительная колонка в экселе );

    Далее в конфигурационном файле разделяете с помощью функции filter_export().

    //функция для фильтрации значений при ЭКСПОРТЕ function filter_export($value_arr, $doc_id=0){ $output_arr = $value_arr; if(!empty($output_arr[2])) { $tmp = explode('||', $output_arr[2]);// Разделяем строку, получаем массив if (count($tmp) >= 2) { $output_arr[2] = $tmp[0]; $output_arr[2000] = $tmp[1]; } } return $output_arr; }

    работает отлично, спасибо

    Читать далее
  • нужно через разделитель || сделать 2 столбца и т.д.

    Создаете дополнительную колонку (можно несколько) после ТВ, значение которого нужно разделить. ID ТВ для такой колонки можно указать, тот которого не существует.

    //разбивка по столбцам при импорте и экспорте (content|tv|category) $cf_config['content_row'] = array( ... array('Параметры товара', array(2, 'tv')), array('Параметры товара - вторая колонка', array(2000, 'tv'))// Дополнительная колонка в экселе );

    Далее в конфигурационном файле разделяете с помощью функции filter_export().

    //функция для фильтрации значений при ЭКСПОРТЕ function filter_export($value_arr, $doc_id=0){ $output_arr = $value_arr; if(!empty($output_arr[2])) { $tmp = explode('||', $output_arr[2]);// Разделяем строку, получаем массив if (count($tmp) >= 2) { $output_arr[2] = $tmp[0]; $output_arr[2000] = $tmp[1]; } } return $output_arr; }

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

    @Andchir еще хотел спросить, как можно реализовать разделение столбцов при экспорте тип ввода ТВ param-edit, в экселе выводит видalt text нужно через разделитель || сделать 2 столбца и т.д., я понимаю что нужно через filter_export, можете подсказать, спасибо

    Читать далее
  • Покажите скриншот, чтобы было видно что вы вводите в значение по умолчанию.

    Читать далее