如何解决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 举报,一经查实,本站将立刻删除。