2013-02-05 92 views
0

在分層導航中,當我選擇特定屬性時,它從左側選擇面板中消失,所以我想我應該可以選擇多次。 如果我從它的收集來了解它,那會很有幫助。分層導航中的多選Magento

- 提前感謝。

public function apply(Zend_Controller_Request_Abstract $request, $filterBlock) { 
    $filter = $request->getParam($this->_requestVar); 
    if (is_array($filter)) { 
     $text = array(); 
     foreach ($filter as $f) 
      array_push ($text, $this->_getOptionText($f)); 
      if ($filter && $text) { 
      $this->_getResource()->applyFilterToCollection($this, $filter); 
      $this->getLayer()->getState()->addFilter($this->_createItem($text, $filter)); 
      $this->_items = array(); 
     } 
     return $this; 
    } 
    $text = $this->_getOptionText($filter); 
    if ($filter && $text) { 
     $this->_getResource()->applyFilterToCollection($this, $filter); 
     $this->getLayer()->getState()->addFilter($this->_createItem($text, $filter)); 
     $this->_items = array(); 
    } 
    return $this; 
} 


public function applyFilterToCollection($filter, $value) 
{ 
    $collection = $filter->getLayer()->getProductCollection(); 
    $attribute = $filter->getAttributeModel(); 
    $connection = $this->_getReadAdapter(); 
    $tableAlias = $attribute->getAttributeCode() . '_idx'; 
    if (!is_array($value)) { 
     $conditions = array(
     "{$tableAlias}.entity_id = e.entity_id", 
     $connection->quoteInto("{$tableAlias}.attribute_id = ?", $attribute->getAttributeId()), 
     $connection->quoteInto("{$tableAlias}.store_id = ?", $collection->getStoreId()), 
     $connection->quoteInto("{$tableAlias}.value = ?", $value) 
    ); 
    }else{ 

     $conditions = array(
     "{$tableAlias}.entity_id = e.entity_id", 
     $connection->quoteInto("{$tableAlias}.attribute_id = ?", $attribute->getAttributeId()), 
     $connection->quoteInto("{$tableAlias}.store_id = ?", $collection->getStoreId()), 
     $connection->quoteInto("{$tableAlias}.value in (?)",$value) 
    ); 
    } 

    $collection->getSelect()->join(
     array($tableAlias => $this->getMainTable()), 
     implode(' AND ', $conditions), 
     array() 
    ); 

    //echo $collection->getSelect(); 

    return $this; 
} 

回答

0

我做過類似的東西,你必須重寫Mage_Catalog_Model_Layer_Filter_Attribute類,它使用的方法應用於()來篩選結果。

+0

Thnx爲您的快速回復。我早先做過,但不成功,如果你可以簡短地解釋,這將是冤枉的。 – ANKIT

+0

我傳遞參數在數組中,所以根據我高度修改的應用方法。 – ANKIT

+0

你能否顯示你修改的應用方法?更新你的問題。 –