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


tagManager2, проблема с сортировкой дробных чисел

  • @Andchir А как посмотреть? До этого просто проблем не возникало)

  • @Andchir В firebug ошибок нет

  • @Andchir И в журнале ошибок ModX пусто

  • В наборе параметров включить debug и посмотреть запросы в журнале ошибок (пора бы его назвать просто "консоль").
    http://wiki.modx-shopkeeper.ru/doku.php?id=getproducts

    До этого просто проблем не возникало)

    До чего "этого"?

  • @Andchir

    (
        [0] => Array
            (
                [0] => isfolder01
                [1] => 0
                [2] => 2
            )
    
    )
    
    [2016-07-18 09:08:16] (ERROR @ /home/nerpaby/public_html/core/components/getproducts/model/getproducts.class.php : 667) [INFO] getProducts: total = 4 - SELECT `sc`.*, (SELECT `value` FROM `modx_site_tmplvar_contentvalues` WHERE `tmplvarid` = '5' AND `contentid` = `sc`.`id` LIMIT 1) AS `price`
            FROM `modx_site_content` `sc`
            WHERE `sc`.`parent` IN (3,12,13,14,16,17,23,24)
    AND `sc`.`published` = 1 AND `sc`.`deleted` = 0
    AND `sc`.`context_key` = 'web' AND (`sc`.`isfolder` = :isfolder01)
    
    AND `sc`.`id` IN (
            SELECT `tvc`.`contentid`
            FROM `modx_site_tmplvar_contentvalues` AS `tvc`,
                 `modx_site_tmplvars` AS `tv`
            WHERE `tv`.`id` = `tvc`.`tmplvarid`AND `tv`.`name` = :tvname0 AND (CAST(`tvc`.`value` AS DECIMAL(10,2)) >= :tvvalue01)
    AND `tvc`.`contentid` IN
        (
            SELECT `tvc`.`contentid`
            FROM `modx_site_tmplvar_contentvalues` AS `tvc`,
                 `modx_site_tmplvars` AS `tv`
            WHERE `tv`.`id` = `tvc`.`tmplvarid`AND `tv`.`name` = :tvname1 AND (CAST(`tvc`.`value` AS DECIMAL(10,2)) <= :tvvalue11)
        )
    )
            ORDER BY CAST(`price` AS SIGNED) asc
            LIMIT 0, 6 
            
    Array
    (
        [0] => Array
            (
                [0] => isfolder01
                [1] => 0
                [2] => 2
            )
    
    )
    
    Array
    (
        [0] => Array
            (
                [0] => tvname0
                [1] => price
                [2] => 2
            )
    
        [1] => Array
            (
                [0] => tvvalue01
                [1] => 13
                [2] => 2
            )
    
        [2] => Array
            (
                [0] => tvname1
                [1] => price
                [2] => 2
            )
    
        [3] => Array
            (
                [0] => tvvalue11
                [1] => 14
                [2] => 2
            )
    
    )
    
    [2016-07-18 09:08:27] (ERROR @ /home/nerpaby/public_html/core/components/getproducts/model/getproducts.class.php : 667) [INFO] getProducts: total = 4 - SELECT `sc`.*, (SELECT `value` FROM `modx_site_tmplvar_contentvalues` WHERE `tmplvarid` = '5' AND `contentid` = `sc`.`id` LIMIT 1) AS `price`
            FROM `modx_site_content` `sc`
            WHERE `sc`.`parent` IN (3,12,13,14,16,17,23,24)
    AND `sc`.`published` = 1 AND `sc`.`deleted` = 0
    AND `sc`.`context_key` = 'web' AND (`sc`.`isfolder` = :isfolder01)
    
    AND `sc`.`id` IN (
            SELECT `tvc`.`contentid`
            FROM `modx_site_tmplvar_contentvalues` AS `tvc`,
                 `modx_site_tmplvars` AS `tv`
            WHERE `tv`.`id` = `tvc`.`tmplvarid`AND `tv`.`name` = :tvname0 AND (CAST(`tvc`.`value` AS DECIMAL(10,2)) >= :tvvalue01)
    AND `tvc`.`contentid` IN
        (
            SELECT `tvc`.`contentid`
            FROM `modx_site_tmplvar_contentvalues` AS `tvc`,
                 `modx_site_tmplvars` AS `tv`
            WHERE `tv`.`id` = `tvc`.`tmplvarid`AND `tv`.`name` = :tvname1 AND (CAST(`tvc`.`value` AS DECIMAL(10,2)) <= :tvvalue11)
        )
    )
            ORDER BY CAST(`price` AS SIGNED) desc
            LIMIT 0, 6 
            
    Array
    (
        [0] => Array
            (
                [0] => isfolder01
                [1] => 0
                [2] => 2
            )
    
    )
    
    Array
    (
        [0] => Array
            (
                [0] => tvname0
                [1] => price
                [2] => 2
            )
    
        [1] => Array
            (
                [0] => tvvalue01
                [1] => 13
                [2] => 2
            )
    
        [2] => Array
            (
                [0] => tvname1
                [1] => price
                [2] => 2
            )
    
        [3] => Array
            (
                [0] => tvvalue11
                [1] => 14
                [2] => 2
            )
    
    )
  • У getProducts есть только конвертация строки в целое число при сортировке. У TV все значения хранятся как строки. Попробуйте в файле "/core/components/getproducts/model/getproducts.class.php" строку (592):

    $orderby_str .= "CAST(`{$this->config['sortbyTV']}` AS SIGNED)";
    

    заменить на такую:

    $orderby_str .= "CAST(`{$this->config['sortbyTV']}` AS DECIMAL(10,2))";
    
  • @Andchir спасибо, все работает, filters_simple.js вернул как и было строку

    slider_steps: [10, 0.1],//Число единиц шага слайдера
    
  • Подскажите, как в фильтре поставить "Число единиц шага слайдера" только целые числа (чтобы не было дроби) ???
    alt text

  • Сам разобрался)))) В файле filter.js просто поменял строчка
    var slider_step = maxValue - minValue < 100 ? 0.1 : 1;

    на
    var slider_step = maxValue - minValue < 1 ? 1 : 1;

 

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

  • Z

    Спасибо, действительно проще создать отдельно.

    Читать далее
  • Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]].

    Можно не использовать [[+addit_data]], а выводить параметры по-отдельности.

    Цитата из документации:

    [[+shk_любой доп.параметр]] - любой доп. параметр, выбранный при добавлении товара в корзину (из [[+addit_data]]), например [[+shk_param1]].
    Если параметры сделаны в виде чекбоксов, то чтобы вывести отдельно каждый из них, нужно добавлять индекс (номер от нуля) для параметров следующих за первым.
    Пример: [[+shk_param1]], [[+shk_param1_1]], [[+shk_param1_2]] ...
    [[+shk_любой доп.параметр_price]] - цена доп.параметра. Пример: [[+shk_param1_price]].

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

    Доброго времени суток. Не могу разобраться, как передать данные migx-поля в корзину в плейсхолдер без "дублирования" в [[+addit_data]]
    Суть в чем: У меня есть 2 цены у товара (со скидкой и без скидки) Форма для отправки в корзину:

    <form action="[[~[[*resource_id]]? &scheme=`abs`]][[*alias]].html" method="post"> <input type="hidden" name="shk-id" value="[[*id]]" /> <input type="hidden" name="shk-name" value="[[*pagetitle]]" /> <input type="hidden" name="price_old__[[*id]]__add" value="[[*price_old]]" /> <input type="hidden" name="shk-count" value="1" /> <div class="product-price"> Цена: <span class="shk-price">[[!*price:shk_curr_rate:num_format]]</span> Старая цена - <span class="shk-price-old">[[+price_old]]</span> [[!+shk_currency]] </div> <div class="padding-lr-30"> <h5>Дополнительные услуги</h5> [[*param1]] </div> <div class="product-price"> <button class="btn btn-lg btn-primary" type="submit" class="shk-but">В корзину</button> </div> </form>

    Данные со "старой ценой" в корзину попадают нормально и выводится в нужном месте в плейсхолдере:
    [[+shk_price_old]]
    Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]]. Как сделать чтобы старая цена не выводилась в [[+addit_data]]? Или может я как то не правильно передаю MIGX-параметр в корзину ? Заранее спасибо.

    Читать далее
  • Фотографии, как я понял, это второй вопрос. Я по нему пока ничего не отвечал и не просил информации. Это не отменяет того, что в вашем конфиге есть ошибка, о которой я писал выше. Не нужно задавать разные вопросы в одной теме, чтобы не было путаницы.
    http://forum.modx-shopkeeper.ru/topic/15/рекомендации-по-оформлению-темы-с-вопросом

    Читать далее