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>

Ни кто не подскажет в чем дело?

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