微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Prestashop 1.7.6.5:按特征对产品进行排序

如何解决Prestashop 1.7.6.5:按特征对产品进行排序

我希望能够通过按特征排序来展示我的产品 (ps_feature)。 怎么做以及修改哪些文件? 我设法通过修改 templates/catalog/_partial/products.tpl 文件并在 override/classes/Product.PHP 文件中创建一个函数来做到这一点,并且它可以工作。 但是如果我在没有分页的情况下显示我的所有产品,它就会起作用。一旦我设置了分页(例如每页 50 个产品),该功能仅适用于每组 50 个产品而不适用于所有产品! 我之前必须在另一个文件中进行此修改,但我不知道是哪一个(categoryController.PHP,...)? 感谢您的帮助

我用新函数 getordreFeatureProduct 修改了这个文件:products.tpl:

<div class="products row">
{$tabFeatureProduct = Product::getordreFeatureProduct($listing.products)}

{** {foreach from=$listing.products item="product"} **}
{foreach from=$tabFeatureProduct item="product"}
    {$display = Product::getProductsWithRights($product.id,$category.id,$customer.id)}
    {if $display == "true"}
        {block name='product_miniature'}
            {include file='catalog/_partials/miniatures/product.tpl' product=$product}
        {/block}
    {/if}
{/foreach}

这是我的功能,它允许重新排序特征:

public static function getordreFeatureProduct($tabprod)
{   // Nouveau Tri :
    //      - Famille       -> ['features'][x]['name'] == 'Famille'
    //      - Lieux         -> ['features'][x]['name'] == 'Lieux'
    //      - Type          -> ['features'][x]['name'] == 'Type'
    //      - Collecion     -> ['features'][x]['name'] == 'Collection'  
    //      - Ss-Catégorie  -> ['features'][x]['name'] == 'Sous-Categorie'  
    
    //***** 1er TRI sur la Famille *****
    foreach($tabprod as $key => $value) 
    {   //recherche de la clé Famille
        $clef='';
        foreach($value['features'] as $kf => $vf)
        {   if($vf['name'] == 'Famille')
            {   $clef = $kf;
            }
        }
        
        $tri_famille[$key] = $value['features'][$clef]['value'];
    }
    
    //***** 2ème TRI sur le LIEUX_PDF *****
    foreach($tabprod as $key => $value) 
    {   //recherche de la clé Lieux
        $clef='';
        foreach($value['features'] as $kf => $vf)
        {   if($vf['name'] == 'Lieux_PDF')
            {   $clef = $kf;
            }
        }
        
        $tri_lieux[$key] = $value['features'][$clef]['value'];
    }
    
    //***** 3ème TRI sur le TYPE *****
    foreach($tabprod as $key => $value) 
    {   //recherche de la clé Type
        $clef='';
        foreach($value['features'] as $kf => $vf)
        {   if($vf['name'] == 'Type')
            {   $clef = $kf;
            }
        }
        
        $tri_type[$key] = $value['features'][$clef]['value'];
    }
    
    //***** 4ème TRI sur la Collection PDF *****
    foreach($tabprod as $key => $value) 
    {   //recherche de la clé Type
        $clef='';
        foreach($value['features'] as $kf => $vf)
        {   if($vf['name'] == 'Collection_PDF')
            {   $clef = $kf;
            }
        }
        
        $tri_collec[$key] = $value['features'][$clef]['value'];
    }
    
    //***** 5ème TRI sur la Sous-Catégorie *****
    foreach($tabprod as $key => $value) 
    {   //recherche de la clé Type
        $clef='';
        foreach($value['features'] as $kf => $vf)
        {   if($vf['name'] == 'Sous-Categorie')
            {   $clef = $kf;
            }
        }
        
        $tri_sscat[$key] = $value['features'][$clef]['value'];
    }
    
    //Tri complet selon les 4 ordres de tri : Famille/Type/Collection_PDF/Sous-Categorie
    array_multisort($tri_famille,SORT_ASC,$tri_lieux,$tri_type,$tri_collec,$tri_sscat,$tabprod);
                    
    return $tabprod;
}

功能可以很好地重新排序我的产品,但仅针对每个页面而不是所有产品。如果我修改每页的最大产品数量(例如 1000),它就可以完美运行。 之前可能需要在程序中进行修改,但我不知道是哪个?也许是 ProductListingFrontController.PHP 程序,但我不知道在哪里? 谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。