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


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;

 

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