我有一个可配置的产品,其中包含与之相关的简单产品.防爆.鞋子的属性大小和宽度简单.
我在此之前已经看到过这种问题,有许多形式没有解决方案.有谁知道如何修复此功能?我很惊讶这不是开箱即用的.
Rak*_*har -1
您必须通过将核心文件复制到 local/Mage 目录来自定义核心文件。
假设您必须改变尺寸和颜色。
打开文件app\code\core\Mage\Catalog\Model\Layer.php
添加以下代码后:-
$collection
->addAttributeToSelect(
Mage::getSingleton('catalog/config')->getProductAttributes()
)
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addUrlRewrite($this->getCurrentCategory()->getId());
Run Code Online (Sandbox Code Playgroud)
您必须针对所选属性对其进行自定义:-
例如 :-
if(isset($_GET['size']))
{
$query = 'SELECT value FROM aw_layerednavigation_filter_option_eav WHERE name="title" AND option_id IN ( '.$_GET['size'].' )';
$results = $readConnection->fetchAll($query);
$sizeLabels = array();
foreach($results as $_r){
$size_labels[] = $_r['value'];
}
$query = 'SELECT parent_id FROM advance_filter WHERE size IN ( '.implode(",",$size_labels).' ) AND qty > 0';
$results = $readConnection->fetchAll($query);
foreach($results as $_r){
$size_prod_Ids[] = $_r['parent_id'];
}
}
$color_prod_Ids = array();
if(isset($_GET['color']))
{
$query = 'SELECT value FROM aw_layerednavigation_filter_option_eav WHERE name="title" AND option_id IN ( '.$_GET['color'].' )';
$results = $readConnection->fetchAll($query);
$color_labels = array();
foreach($results as $_r){
$color_labels[] = strtoupper($_r['value']);
}
$query = 'SELECT parent_id FROM advance_filter WHERE color IN ( "'.implode(",",$color_labels).'" ) AND qty > 0';
$results = $readConnection->fetchAll($query);
foreach($results as $_r){
$color_prod_Ids[] = $_r['parent_id'];
}
}
$productIds = array_merge($size_prod_Ids,$color_prod_Ids);
if(count($productIds) > 0){
$collection->addAttributeToFilter('entity_id', array('in' => array_unique($productIds)));
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助..!!
| 归档时间: |
|
| 查看次数: |
1575 次 |
| 最近记录: |