0

私のカテゴリービュー用。オプション値でセッションを設定するためにajaxを使用する選択ドロップダウンがあります。

オーバーライドしMage_Catalog_Block_Product_Listました。

ajax から処理されたこのセッション値は、' protected function _getProductCollection()' オーバーライドで呼び出され、必要に応じて製品コレクションをフィルタリングします。

私の最初の問題は、これらの属性の 3 つの値に基づいて、属性でフィルター処理したいということです。

 $collection = parent::_getProductCollection();
 $collection ->addAttributeToFilter('name', array('in' => array('Cat','Adam', 'Paul')));
 $collection->addAttributeToSort('name = Cat', 'DESC');
 $collection->addAttributeToSort('name = Adam', 'DESC');
 $collection->addAttributeToSort('name = Paul', 'DESC');

  return $this->_productCollection; 

問題は、これらを必要に応じて配置したいということです。たとえば、最初に Cat が必要で、次に Adam、次に Paul が必要です。これらを配置する方法はありますか?

2 番目の問題は、' sort by' オプションを配置する必要があることです。「asc」がデフォルトですが、降順でデフォルトにするために必要なものです。

'Mage_Catalog_Block_Product_List_Toolbar'これまでのところ、このコードをオーバーライドして使用しました。

protected $_direction           = 'desc';

しかし、これは方向性を変えていません。

並べ替えは、作成したカスタム製品コレクションよりも優先されますか?

ログ

a:5:{i:0;s:126:"SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1582 ネイティブ関数 'FIND_IN_SET' の呼び出しのパラメーター数が正しくありません";i:1;s:6707:"# 0 /var/www/vhosts/mydomain.com/httpdocs/mypath/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(配列) /var/www/vhosts/mydomain.com /httpdocs/mypath/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(配列) /var/www/vhosts/mydomain.com/httpdocs/mypath/lib/Zend/Db/Adapter/Abstract. php(479): Zend_Db_Statement->execute(配列) /var/www/vhosts/mydomain.com/httpdocs/mypath/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query(' SELECT COUNT(DI...', Array) /var/www/vhosts/mydomain.com/httpdocs/mypath/lib/Varien/Db/Adapter/Pdo/Mysql.php(419): Zend_Db_Adapter_Pdo_Abstract->query('SELECT COUNT(DI...', 配列) /var/www/vhosts/mydomain.com/httpdocs/mypath/lib/Zend/Db/Adapter/Abstract.php(825): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select) 、配列) /var/www/vhosts/mydomain.com/httpdocs/mypath/lib/Varien/Data/Collection/Db.php(225): Zend_Db_Adapter_Abstract->fetchOne(Object(Varien_Db_Select), Array) /var/www/ vhosts/mydomain.com/httpdocs/mypath/lib/Varien/Data/Collection.php(225): Varien_Data_Collection_Db->getSize() /var/www/vhosts/mydomain.com/httpdocs/mypath/lib/Varien/Data/ Collection.php(211): Varien_Data_Collection->getLastPageNumber() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(1036) : Varien_Data_Collection->getCurPage() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(871):Mage_Eav_Model_Entity_Collection_Abstract->_loadEntities(false, false) /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Review/Model/Observer.php(78): Mage_Eav_Model_Entity_Collection_Abstract->load() / var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Model/App.php(1334): Mage_Review_Model_Observer->catalogBlockProductCollectionBeforeToHtml(Object(Varien_Event_Observer)) /var/www/vhosts/ mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Model/App.php(1307): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Review_Model_Observer), 'catalogBlockPro...', Object(Varien_Event_Observer)) / var/www/vhosts/mydomain.com/httpdocs/mypath/app/Mage.php(447): Mage_Core_Model_App->dispatchEvent('catalog_block_p...', Array) /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Catalog/Block/Product/List.php(163): Mage::dispatchEvent('catalog_block_p...', Array) /var/www/vhosts/mydomain. com/httpdocs/mypath/app/code/core/Mage/Core/Block/Abstract.php(862): Mage_Catalog_Block_Product_List->_beforeToHtml() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/ core/Mage/Core/Block/Abstract.php(582): Mage_Core_Block_Abstract->toHtml() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Abstract. php(526): Mage_Core_Block_Abstract->_getChildHtml('product_list', true) /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Catalog/Block/Category/View.php(85) ): Mage_Core_Block_Abstract->getChildHtml('product_list') /var/www/vhosts/mydomain.com/httpdocs/mypath/app/design/frontend/default/gomer/template/catalog/category/view.phtml(115): Mage_Catalog_Block_Category_View->getProductListHtml() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Template.php(241): include('/var /www/vhosts...') /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('フロントエンド/default...') /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView() /var/ www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Template->_toHtml() /var/www/vhosts/mydomain.com/httpdocs/ mypath/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/メイジ/コア/ブロック/Abstract.php(863):Mage_Core_Block_Text_List->_toHtml() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Abstract.php(582): Mage_Core_Block_Abstract->toHtml() /var/www /vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Abstract.php(526): Mage_Core_Block_Abstract->_getChildHtml('content', true) /var/www/vhosts/mydomain. com/httpdocs/mypath/app/design/frontend/default/gomer/template/page/2columns-left.phtml(49): Mage_Core_Block_Abstract->getChildHtml('content') /var/www/vhosts/mydomain.com/httpdocs /mypath/app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/vhosts...') /var/www/vhosts/mydomain.com/httpdocs/mypath /app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('フロントエンド/デフォルト...') /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/ core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Template->_toHtml() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Model/Layout. php(555): Mage_Core_Block_Abstract->toHtml() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout-> getOutput() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Catalog/controllers/CategoryController.php(159): Mage_Core_Controller_Varien_Action->renderLayout() /var/www/vhosts/ mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Catalog_CategoryController->viewAction() /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('ビュー') /var/www/vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) /var/www /vhosts/mydomain.com/httpdocs/mypath/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch() /var/www/vhosts/mydomain.com/httpdocs/mypath /app/Mage.php(683): Mage_Core_Model_App->run(配列) /var/www/vhosts/mydomain.com/httpdocs/mypath/index.php(87): Mage::run('', 'store' ) {main}";s:3:"url";s:72:"/mypath/index.php/books-for-adults/autobiography-and-biography.html";s:11:"script_name";s:22:"/mypath/index.php";s:4:"スキン";s:7:"英語";}

4

1 に答える 1

0

フィンセットを使用してみてください:

$collection->addAttributeToFilter('name', array('finset'=>array('Cat','Adam','Paul')));

finset は MySQL の FIND_IN_SET 関数を使用します。

于 2013-02-01T13:34:43.263 に答える