public function loadModel($id) { if (($model = ProduceItem::model()->findByPk($id)) === null) { throw new CHttpException(404, 'Страница не найдена'); } return $model; }
public function actionShow($alias) { $model = ProduceItem::model()->published()->with(array('color', 'images' => array('scopes' => 'published', 'order' => 'images.sort ASC')))->findByAlias($alias); if (!$model) { throw new CHttpException(404); } // Учитываем фильтр в каталоге $filter = Yii::app()->user->getState('produceCatalogFilter'); // Определяем следующий товар $nextProduct = $model->getNextProduct($filter); // Определяем предыдущий товар $prevProduct = $model->getPrevProduct($filter); // Добавляем в просмотренное $this->getModule()->getComponent('watched')->put($model); $this->render('item', array('model' => $model, 'nextProduct' => $nextProduct, 'prevProduct' => $prevProduct, 'returnUrl' => Yii::app()->user->getState('produceCatalogReturnUrl'))); }
public function getPrevProduct($filter = array()) { $criteria = $this->_constructCriteriaByFilter($filter); $criteria->order = 'category.sort DESC, t.sort DESC'; // Условие выборки по порядку $fullCriteria = clone $criteria; $fullCriteria->addCondition('((t.category_id = :category_id AND t.sort <= :sort) OR category.sort < :category_sort) AND t.id <> :id'); $fullCriteria->params = array_merge($fullCriteria->params, array(':category_id' => $this->category_id, ':sort' => $this->sort, ':category_sort' => $this->category->sort, ':id' => $this->id)); $prevProduct = ProduceItem::model()->published()->find($fullCriteria); if ($prevProduct === null) { $prevProduct = ProduceItem::model()->published()->find($criteria); } return $prevProduct; }
public function getPrevProduct($filter = array()) { $criteria = $this->_constructCriteriaByFilter($filter); $criteria->order = 't.category_id DESC, cast(t.title as unsigned) DESC, t.title DESC'; // Условие выборки по порядку $fullCriteria = clone $criteria; $fullCriteria->addCondition('cast(concat(category_id, t.title) as unsigned) <= (SELECT cast(concat(category_id, title) as unsigned) from `' . $this->tableName() . '` WHERE id = :id) AND t.id <> :id'); $fullCriteria->params[':id'] = $this->id; $fullCriteria->order = ' t.category_id DESC, cast(t.title AS unsigned) DESC, t.title DESC'; $prevProduct = ProduceItem::model()->published()->find($fullCriteria); if ($prevProduct === null) { $prevProduct = ProduceItem::model()->published()->find($criteria); } return $prevProduct; }