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


shopkeeper3 и цена в зависимости от площади

  • Добрый день! использую последнюю версию шопкипер и modx 2.5.6-pl
    Столкнулся с проблемой. Магазин торгует полотном, есть цена, например, 10000р за 1м квадратный.
    по умолчанию вывел 2 инпута с типом number, у которого выставил 1000 - ширина и 1000 - высота, собственно цена этого полотна составляет 10000р посчитать 1миллиметр квадратный не составляет труда, 10000рублей / на 1000000 и получаем 0,01 . Потом по этой же формуле будем считать стоимость полотна которое посетитель хочет купить.

    Проблема в обновлении цены и передачи этой же новой цены в корзину. Смотрю в сторону плагина на событие OnSHKgetProductPrice но тут возникает проблемка. Поскольку ширина и высота не является доп. параметрами они не доступны в системных событиях, т.е. достать их не получится. Вопрос в том, как передать ширину и высоту полотна, которое выберет сам покупатель в плагин который реагирует на событие OnSHKgetProductPrice ??

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

    Подскажите, есть ли другой "штатный" вариант как решить такую задачу, или нужно делать такой велосипед как я предложил?)

    Буду признателен за любые мысли, спасибо!

  • Еще вопрос. заметил что отвалился фильтр TagManager2. Сейчас на странице каталога только по цене фильтруется.Когда фильтр не задействован - все товары отображаются, когда дергаю ползунок - все товары пропадают, хотя под фильтр много какие не попадают. В журнале ошибок вылетает public_html/core/components/tag_manager2/model/tm_base.class.php : 49) PHP warning: explode() expects parameter 2 to be string, array given, хотя до этого все было нормально... Странно.... Начал копать и выяснил, что ранее созданный плагин на событие OnSHKgetProductPrice как раз и вызывает эту проблему. Решил закомментировать все что в нем написал, т.е. оставил только <?php - результата 0, так же фильтр валится и не работает пока сам плагин вовсе не отключу, поставлю галочку "Плагин отключен". Как это связано и как решить "конфликт"?

  • Смотрю в сторону плагина на событие OnSHKgetProductPrice но тут возникает проблемка. Поскольку ширина и высота не является доп. параметрами они не доступны в системных событиях

    Я думаю они будут доступны в глобальном массиве $_POST.

    В журнале ошибок вылетает public_html/core/components/tag_manager2/model/tm_base.class.php : 49) PHP warning: explode() expects parameter 2 to be string, array given, хотя до этого все было нормально...

    В консоли браузера есть ошибки? Надо в системных настройках выставить debug = 0.

  • Участник @Andchir написал в shopkeeper3 и цена в зависимости от площади:

    Я думаю они будут доступны в глобальном массиве $_POST.

    Да, переделал под POST - доступны стали

    Участник @Andchir написал в shopkeeper3 и цена в зависимости от площади:

    В консоли браузера есть ошибки? Надо в системных настройках выставить debug = 0.

    В консоли браузера пусто, вообще ничего.

    Как решить конфликт с tagmanager2 и событием OnSHKgetProductPrice? При добавлении в корзину плагин работает корректно, но при этом почему-то не работает из-за него фильтр, можете подсказать в чем дело?

  • Как решить конфликт с tagmanager2 и событием OnSHKgetProductPrice? При добавлении в корзину плагин работает корректно, но при этом почему-то не работает из-за него фильтр, можете подсказать в чем дело?

    Ждем когда наши экстрасенсы посмотрят код вашего плагина.

  • @Andchir вот код

    <?php
    // ini_set('display_errors',1);
    // error_reporting(E_ALL);
    
    $output->name == "OnSHKgetProductPrice";
    
    
    $product_S = isset($_POST['product_S']) && is_numeric($_POST['product_S']) ? $_POST['product_S'] : 1000000;
     
    
    if(isset($purchaseArray) && !empty($purchaseArray)){
        $output = 0;
        $price_tv_name = 'price';//Имя TV цены
        $p_id = isset($purchaseArray['id']) && is_numeric($purchaseArray['id']) ? $purchaseArray['id'] : 0;
    
        if($p_id){
            
            $price_tv = $modx->getObject('modTemplateVar',array('name'=>$price_tv_name));
            $output = $price_tv->renderOutput($p_id);
    
            $output = ceil (floatval($output)/1000000*$product_S);
        
        }
        //$modx->log(E_ERROR, json_encode($purchaseArray).' _ OnSHKgetProductPrice!!!!!!!!!!!!!!!!!!!!!!');
        //$modx->log(E_ERROR, $price.' '.$id.' OnSHKgetProductPrice!!!!!!!!!!!!!!!!!!!!!!');
        $modx->event->_output = '';
        $modx->event->output($output);
    }
    

    Но даже если плагин пустой фильтр все равно не работает, именно начинает работать tagmanager2 когда плагин выключаю. Проверил на другом магазине, просто создал пустой плагин с таким событием и фильтр сразу отвалился... Может я что-то не так настроил в tagmanager2 ?
    При гет запросе

    ?f_price[from]=16820&f_price[to]=39296
    

    на странице товары пропадают, когда сам меняю на ?f_price[from]=16820 то товары выводятся, но нижняя граница по цене не отрабатывает, выводятся все товары

  • Настройки tagmanager2 http://joxi.ru/BA0v40YSJ1lLem
    Сниппет: getPage http://joxi.ru/ZrJyqYKH9Q3V1A http://joxi.ru/LmGD3eWFeB4xl2
    Вызов

    <div class="col-sm-4 col-md-3 sidebar-filter" id="filters" style="display: none;">
        	  <div class="name_sidebar">Выбор по параметрам</div>
        	  <form action="[[~[[*id]]]]" method="get" class="form-filters">
                  
    	    <input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />  
                
                    [[tmFilters?
                        &filterOuterTpl=`2tm2_filterOuterTpl`
                        &filterTpl=`2tm2_filterTpl`
                        &filterNumericOuterTpl=`2tm2_filterOuterTpl`
                        &filterNumericTpl=`2tm2_filterNumericTpl`
                        
                      
                        &toPlaceholder=`filters`
                        &filtersType=`filters`
                        &jsMap=`1`
                    ]]
    
                    [[+filters]]
                    
                    <button type="button" class="res btn_ btn-orange" onclick="window.location.href = window.location.pathname; return false;">Сбросить фильтр</button>
    		</form>
        	</div>
        	
        	<div class="col-sm-8_ col-md-9_ col-xs-12">
        	  <div class="row prods_ flex_" >
        	      <div class="flex prods" id="products">
        	          [[!tmCatalog]]
        	      </div>
        	  </div>
        	  
            <div class="pagination" >
                <ul class="pages" id="pages">
                    [[!+page.nav]]
                </ul>
            </div>
    
  • Ни кто не подскажет в чем дело?

  • Добрый день! Данная проблема решается созданием дополнительного поля в шаблоне вывода товара в каталог.
    Пример учета скидки из TV:
    <input type="hidden" name="itemPrice" value="[[+tv.med_discount:is=``:then=[[+tv.price]]:else=[[+tv.price:subtract=[[+tv.price:mpy=[[+tv.med_discount]]:div=100]] ]]]]" />

    где +tv.price - ТВ поле цены,
    +tv.med_discount - ТВ поле скидки

    Создаем плагин itemPrice
    текст:
    <?php
    $output = 0;
    if(!empty($_POST['itemPrice']) && is_numeric($_POST['itemPrice'])){
    $output = $_POST['itemPrice'];
    }else{
    $output = $modx->getOption('price',$scriptProperties,0);
    }
    $modx->event->_output = '';
    $modx->event->output($output);
    return '';

    Выбираем для плагина системное событие "OnSHKgetProductPrice"

 

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

  • Что нового в 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

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

    Читать далее