This PHP code sorts the items by price (ascending / descending), but there are items in the list with zero price ("Price on request") and need to be displayed at the end.
The question is: how can this be done?
$sort = $this->_getParam('sort');
$sort = $sort === 'ordr' ? '' : $sort;
$sort_type = $this->_getParam('sort_type');
f ($sort) {
if ($sort_type == 'desc') {
$products->setOrderField('price DESC');
} else {
$products->setOrderField('price ASC');
}
}
There is also the old code:
$products->setOrderField(($sort == 'price' || $sort == 'price_param' ? 'isprice desc, price_param' : $sort) . ' ' . $sort_type);
But, but it gives an error:
An error occurred
Exception information:
Message: Select query cannot join with another table
Stack trace:
#0 /var/www/u0221427/data/www/irice.ru/library/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Table_Select->assemble()
#1 /var/www/u0221427/data/www/irice.ru/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#2 /var/www/u0221427/data/www/irice.ru/library/Zend/Db/Table/Abstract.php(1577): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#3 /var/www/u0221427/data/www/irice.ru/library/Zend/Db/Table/Abstract.php(1392): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#4 /var/www/u0221427/data/www/irice.ru/application/models/mappers/EntityMapper.php(140): Zend_Db_Table_Abstract->fetchAll(Object(Zend_Db_Table_Select))
#5 /var/www/u0221427/data/www/irice.ru/application/models/mappers/EntityMapper.php(61): A_Model_Mapper_EntityMapper->doFindAllBy(Array, Array)
#6 /var/www/u0221427/data/www/irice.ru/application/models/collections/AbstractCollection.php(65): A_Model_Mapper_EntityMapper->__call('doFindAllBy', Array)
#7 /var/www/u0221427/data/www/irice.ru/application/models/collections/AbstractCollection.php(83): A_Model_Collection_AbstractCollection->notifyAccess()
#8 /var/www/u0221427/data/www/irice.ru/application/models/collections/AbstractCollection.php(94): A_Model_Collection_AbstractCollection->getRow(0)
#9 /var/www/u0221427/data/www/irice.ru/application/models/collections/AbstractCollection.php(117): A_Model_Collection_AbstractCollection->current()
#10 /var/www/u0221427/data/www/irice.ru/application/views/scripts/catalog/list.phtml(2): A_Model_Collection_AbstractCollection->valid()
#11 /var/www/u0221427/data/www/irice.ru/application/views/scripts/catalog/view.phtml(212): include('/var/www/u02214...')
#12 /var/www/u0221427/data/www/irice.ru/library/Zend/View.php(157): include('/var/www/u02214...')
#13 /var/www/u0221427/data/www/irice.ru/library/Zend/View/Abstract.php(888): Zend_View->_run('/var/www/u02214...')
#14 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/Helper/ViewRenderer.php(912): Zend_View_Abstract->render(NULL)
#15 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/Helper/ViewRenderer.php(933): Zend_Controller_Action_Helper_ViewRenderer->renderScript('catalog/view.ph...', NULL)
#16 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/Helper/ViewRenderer.php(972): Zend_Controller_Action_Helper_ViewRenderer->render()
#17 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/HelperBroker.php(277): Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#18 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action.php(527): Zend_Controller_Action_HelperBroker->notifyPostDispatch()
#19 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('viewAction')
#20 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#21 /var/www/u0221427/data/www/irice.ru/library/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#22 /var/www/u0221427/data/www/irice.ru/library/Zend/Application.php(384): Zend_Application_Bootstrap_Bootstrap->run()
#23 /var/www/u0221427/data/www/irice.ru/index.php(55): Zend_Application->run()
#24 {main}
Request Parameters:
Fatal error: Uncaught Error: Call to a member function getParams() on array in /var/www/u0221427/data/www/irice.ru/application/views/scripts/error/error.phtml:23
Stack trace:
#0 /var/www/u0221427/data/www/irice.ru/library/Zend/View.php(157): include()
#1 /var/www/u0221427/data/www/irice.ru/library/Zend/View/Abstract.php(888): Zend_View->_run('/var/www/u02214...')
#2 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/Helper/ViewRenderer.php(912): Zend_View_Abstract->render(NULL)
#3 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/Helper/ViewRenderer.php(933): Zend_Controller_Action_Helper_ViewRenderer->renderScript('error/error.pht...', NULL)
#4 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/Helper/ViewRenderer.php(972): Zend_Controller_Action_Helper_ViewRenderer->render()
#5 /var/www/u0221427/data/www/irice.ru/library/Zend/Controller/Action/HelperBroker.php(277): Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#6 /var/www/u0221427/data/www/irice.ru/library/Z in /var/www/u0221427/data/www/irice.ru/application/views/scripts/error/error.phtml on line 23