Модели
Покупка
Владельцам
Акции
Актуальные
О нас
class CarsController extends Controller { public function actionCars($mark='bmw') { $this->layout = '//layouts/'.$mark.'/main'; $rubric = Rubrics::model()->find('chpu=:chpu',[':chpu'=>'cars']); if(!$rubric) $rubric = new Rubrics(); $rubric->name = 'Модельный ряд'; $rubric->link = '/cars/'; $mark = Yii::app()->params['mark']; $title = Data::model()->getData($rubric,'title',$mark); $keywords = Data::model()->getData($rubric,'keywords',$mark); $description = Data::model()->getData($rubric,'description',$mark); $data = array( 'rubric'=>$rubric, 'title'=>($title ? $title->value : $rubric->name), 'keywords'=>$keywords ? $keywords->value : $rubric->keywords, 'description'=>$description ? $description->value : $rubric->description, ); $this->render(Yii::app()->user->getState('mark').'/rubric',$data); } public function actionRubric($id=null) { if(is_numeric($id)) $rubric = Rubrics::model()->findByPk($id); else{ $rubric = Rubrics::model()->find('chpu=:chpu',[':chpu'=>'cars']); if(!$rubric) $rubric = new Rubrics(); $rubric->name = 'Модельный ряд'; $rubric->link = '/cars/'; } $mark = Yii::app()->params['mark']; $title = Data::model()->getData($rubric,'title',$mark); $keywords = Data::model()->getData($rubric,'keywords',$mark); $description = Data::model()->getData($rubric,'description',$mark); $data = array( 'rubric'=>$rubric, 'title'=>($title ? $title->value : $rubric->name), 'keywords'=>$keywords ? $keywords->value : $rubric->keywords, 'description'=>$description ? $description->value : $rubric->description, ); if(in_array($rubric->chpu,['new','new_bmw','new_mini','new_moto'])) { $condition = 'rubric_id=:rubricId and status>=1'; $params = [':rubricId'=>$rubric->id]; $order = 'price'; $data['price_min'] = Cars::model()->find([ 'select'=>'min(price) as price', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], // 'order'=>'price' ])->price; $data['price_max'] = Cars::model()->find([ 'select'=>'max(price) as price', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], 'order'=>'price desc' ])->price; $data['volume_min'] = Cars::model()->find([ 'select'=>'volume', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], 'order'=>'volume' ])->volume; $data['volume_max'] = Cars::model()->find([ 'select'=>'volume', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], 'order'=>'volume desc' ])->volume; $ids = Cars::model()->find([ 'select'=>'group_concat(model_id) as model_id', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], ])->model_id; if($ids) $data['models'] = Cars::model()->findAll([ 'condition'=>'id IN ('.$ids.')', 'order'=>'pos desc, id' ]); $bodyTypes = Cars::model()->find([ 'select'=>'group_concat(body_id) as body_id', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], ])->body_id; if($bodyTypes) $data['body_types'] = DictParams::model()->findAll([ 'condition'=>'metacar_id IN ('.$bodyTypes.')', 'order'=>'id' ]); $driveTypes = Cars::model()->find([ 'select'=>'group_concat(drive_id) as drive_id', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], ])->drive_id; if($driveTypes) $data['drive_types'] = DictParams::model()->findAll([ 'condition'=>'metacar_id IN ('.$driveTypes.')', 'order'=>'id' ]); $body_types = Yii::app()->request->getParam('body_type'); if($body_types){ $condition .= ' and body_id IN ('.$body_types.')'; } $drive_types = Yii::app()->request->getParam('drive_type'); if($drive_types){ $condition .= ' and drive_id IN ('.$drive_types.')'; } $volume_from = Yii::app()->request->getParam('volume_from'); $volume_to = Yii::app()->request->getParam('volume_to'); if($volume_from){ $condition .= ' and volume between :volumeFrom and :volumeTo'; $params[':volumeFrom'] = $volume_from; $params[':volumeTo'] = $volume_to; } $price_from = Yii::app()->request->getParam('price_from'); $price_to = Yii::app()->request->getParam('price_to'); if($price_from){ $condition .= ' and price between :priceFrom and :priceTo'; $params[':priceFrom'] = $price_from; $params[':priceTo'] = $price_to; } $modelId = Yii::app()->request->getParam('model_id'); if($modelId){ $condition .= ' and model_id IN ('.trim($modelId,',').')'; // $params[':modelId'] = trim($modelId,','); } $sort = Yii::app()->request->getParam('sort'); if($sort){ $order = str_replace('_',' ',$sort); Yii::app()->user->setState('sort',$sort); } $data['data'] = Cars::model()->findAll([ 'condition'=>$condition, 'params'=>$params, 'order'=>$order, ]); if(Yii::app()->request->isAjaxRequest) $this->renderPartial('bmw/stock_data',$data); else $this->render('bmw/stock',$data); } else $this->render(Yii::app()->user->getState('mark').'/single',$data); // $this->render(Yii::app()->user->getState('mark').'_rubric',$data); } public function actionSingle($id) { $crumbs = Yii::app()->params['crumbs']; $rubric = $crumbs[count($crumbs)-2]; $cars = Cars::model()->findByPk($id); if(!$cars || $rubric->id!=$cars->rubric_id) $this->render('/errors/404'); $rubric = $cars->rubric; $crumbs = Yii::app()->params['crumbs']; $crumbs[] = $cars; Yii::app()->params['crumbs'] = $crumbs; $mark = Yii::app()->params['mark']; $title = Data::model()->getData($cars,'title',$mark); $keywords = Data::model()->getData($cars,'keywords',$mark); $description = Data::model()->getData($cars,'description',$mark); $data = array( 'data'=>$cars, 'rubric'=>$rubric, 'title'=>'Новые авто. '.($title ? $title->value : ($cars->title ? $cars->title : $cars->name)), 'keywords'=>$keywords ? $keywords->value : ($cars->keywords ? $cars->keywords : $cars->name), 'description'=>$description ? $description->value : ($cars->description ? $cars->description : $cars->name), ); if(in_array($rubric->chpu,['new','new_bmw','new_mini','new_moto'])){ $this->render(Yii::app()->user->getState('mark').'/stock_single',$data); } else $this->render(Yii::app()->user->getState('mark').'/single',$data); } }