Сохранить
Сохраняем
  • M
    miec-pavel

    Шел 2019 ... Стала аналогичная задача, обновление цен и количества без смены родителя.
    Конфиг

    $cf_config['content_row'] = array(
        array('Артикул',array(10,'tv')),
        array('Цена',array(3,'tv')),
        array('Остаток',array(11,'tv'))
    );
    
    $cf_config['imp_chk_tvid_val'] = '10';
    

    В файле catalogfill.class.php функция insertToDB в обновлении товара делаем

    unset( $insertArr['content'][$this->config['parent_field']] );
    

    Не знаю на сколько это костыльное решение, но ошибок не возникает, данные обновляются

    написал в Поддержка Читать далее
  • M
    miec-pavel

    Всем привет, столкнулся с проблемой, версия modx 2.5.6 shopkeeper3 3.2.7-pl2.
    Проблема заключается в том что, на странице благодарности за заказ передаю параметры в сниппет

    [[!pay_order? &price=`[[+shk.price]]` &orderId=`[[+shk.id]]` &full_date=`[[+shk.full_date]]` &payment=`[[+shk.payment]]`]]
    

    И увидел следующую картину, в этот сниппет попадают не значения этих плейсхолдеров, а , например, [[+shk.payment]] как строка.

    Проверил так

    $arr1 = str_split($payment);
    echo '<pre>';
    print_r($arr1);
    

    получил

    Array
    (
        [0] => [
        [1] => [
        [2] => +
        [3] => s
        [4] => h
        [5] => k
        [6] => .
        [7] => i
        [8] => d
        [9] => ]
        [10] => ]
    )
    

    При этом это только с плейсхолдерами от shopkeeper3, если передаю [[*content]] - все отлично работает. Вопрос, как передать нужные мне плейсхолдеры в сниппет.

    PS. Эти плейсхолдеры работают, на странице выводятся http://joxi.ru/nAy8Xx1hYGeqK2

    <p>[[+shk.price]]</p>
    <p>[[+shk.id]]</p>
    <p>[[+shk.full_date]]</p>
    <p>[[+shk.payment]]</p>
    

    написал в Поддержка Читать далее
  • M
    miec-pavel

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

    написал в Поддержка Читать далее
  • M
    miec-pavel

    Настройки 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>
    

    написал в Поддержка Читать далее
  • M
    miec-pavel

    @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 то товары выводятся, но нижняя граница по цене не отрабатывает, выводятся все товары

    написал в Поддержка Читать далее
  • M
    miec-pavel

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

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

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

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

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

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

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

    написал в Поддержка Читать далее
  • M
    miec-pavel

    Еще вопрос. заметил что отвалился фильтр 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, так же фильтр валится и не работает пока сам плагин вовсе не отключу, поставлю галочку "Плагин отключен". Как это связано и как решить "конфликт"?

    написал в Поддержка Читать далее
  • M
    miec-pavel

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

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

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

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

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

    написал в Поддержка Читать далее