Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Smarty Sortieren nach Products_Quantity im Template als INT nicht string

    manne35

    • Fördermitglied
    • Beiträge: 615
    • Geschlecht:
    Hallo, vielleicht könnt Ihr mir helfen.
    Ich krieg nur eine Sortierung nach string hin hätte aber gern auch eine INT Zahlensortierung.

    Ich will die Produkte im Produkt listing sortieren nach Menge, also in der Datei
    template/module/includes/product_listing_include.html
    aus
          
    Code: PHP  [Auswählen]
    {foreach name=aussen item=module_data from=$module_content}

    mach ich
    Code: PHP  [Auswählen]
    {foreach name=aussen item=module_data from=$module_content|@sortby:PRODUCTS_QUANTITY}

    und den modifier  in Datei template/smarty/modifier.sortby.php

    Code: PHP  [Auswählen]
    <?php

    function array_sort_by_fields(&$data, $sortby){
          static $sort_funcs = array();
        if (empty($sort_funcs[$sortby]))
        {
            $code = "\$c=0;";
            foreach (explode(',', $sortby) as $key)
            {
               $d = '1';
                  if (substr($key, 0, 1) == '-')
                  {
                     $d = '-1';
                     $key = substr($key, 1);
                  }
                  if (substr($key, 0, 1) == '#')
                  {
                     $key = substr($key, 1);
                   $code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
                  }
                  else
                  {
                   $code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
                }
            }
                   
           
            $code .= 'return $c;';
            $sort_func = $sort_funcs[$sortby] = create_function('$a, $b', $code);
        }
        else
        {
            $sort_func = $sort_funcs[$sortby];
        }  
        uasort ($data, $sort_func);  
      }
     
    #
    # Modifier: sortby - allows arrays of named arrays to be sorted by a given field
    #
    function smarty_modifier_sortby($arrData,$sortfields) {
       array_sort_by_fields($arrData,$sortfields);
       return $arrData;
    }
    ?>

    Die Zahlen werden aber als String sortiert nicht als Zahl ?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=37310.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    manne35

    • Fördermitglied
    • Beiträge: 615
    • Geschlecht:
    hallo manne:
    Es genügt bei Deinem smartymodifier wenn Du die Raute nutzt und die 2 Spargänsefüschen:

    @sortby:'#PRODUCTS_QUANTITY'

    Dann gehts.
    gruss
    manne