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;
}
Thnx爲您的快速回復。我早先做過,但不成功,如果你可以簡短地解釋,這將是冤枉的。 – ANKIT
我傳遞參數在數組中,所以根據我高度修改的應用方法。 – ANKIT
你能否顯示你修改的應用方法?更新你的問題。 –