我正在使用magento connect的"分层导航SEO"。
但是我希望过滤器(带结果)总是显示。我的要求与这里发现的其他问题不相似。
例如…在计算机类别中(使用样本数据)有4个品牌和三种颜色(黑色,棕色和银色)我选择"Apple"作为品牌,可用的颜色只有银色,但我想像以前一样显示所有3种颜色(记住……不是所有的颜色(比如粉色、品红等)。如果我选择滤镜(无结果),所有的颜色,如白色,紫红色,粉红色等都会显示出来,这是我不想要的
我只想要最初与category相关的过滤器。我是新来的magento编码
帮忙吗?
in app'code'local'Catalin'SEO'Model'Catalog'Resource'Layer'Filter'Attribute.php
编辑公共函数getCount($filter)
转到最后一行
$connection->fetchPairs($select);…$pairCarry = $connection->fetchPairs($select);
$pairCarryfin = $this->checkTheAttributes($pairCarry, $tableAlias, $attribute);
return $pairCarryfin;
然后添加下面的函数…
public function checkTheAttributes($pairCarry, $tableAlias, $attribute){
$category = Mage::registry('current_category');
if($category){
$query = "SELECT DISTINCT `$tableAlias`.`value`, COUNT($tableAlias.entity_id) AS `count` FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=".$category->getStoreId()." AND cat_index.visibility IN(2, 4) AND cat_index.category_id='".$category->getId()."'
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0
INNER JOIN `catalog_product_index_eav` AS `$tableAlias` ON $tableAlias.entity_id = e.entity_id AND $tableAlias.attribute_id = '".$attribute->getAttributeId()."' AND $tableAlias.store_id = '".$category->getStoreId()."' GROUP BY `$tableAlias`.`value`";
}
else{
$query = "SELECT DISTINCT `$tableAlias`.`value`, COUNT($tableAlias.entity_id) AS `count` FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4)
INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0
INNER JOIN `catalog_product_index_eav` AS `$tableAlias` ON $tableAlias.entity_id = e.entity_id AND $tableAlias.attribute_id = '".$attribute->getAttributeId()."' AND $tableAlias.store_id = 1 GROUP BY `$tableAlias`.`value`";
}
$connection = $this->_getReadAdapter();
$pairCarry_inter = $connection->fetchPairs($query);
if(!empty($pairCarry)){
$odd = array_diff_key($pairCarry_inter, $pairCarry);
if(!empty($odd)){
foreach($odd as $k=>$v){
$odd[$k] = 0;
}
$pairCarry_inter = $pairCarry + $odd;
}
}
else{
foreach($pairCarry_inter as $k => $v){
$pairCarry_inter[$k] = 0;
}
}
$pairCarry_complete = $pairCarry_inter;
return $pairCarry_complete;
}