/** * Display products by manufacturer * * @param $seo_alias * @throws CHttpException */ public function actionIndex($seo_alias) { $this->model = ShopManufacturer::model()->findByAttributes(array('seo_alias' => $seo_alias)); if (!$this->model) { throw new CHttpException(404, Yii::t('ShopModule.admin', 'NO_FOUND_BRAND')); } $this->pageTitle = $this->model->seo_title ? $this->model->seo_title : $this->model->name; $this->pageKeywords = $this->model->seo_keywords; $this->pageDescription = $this->model->seo_description; $query = new ShopProduct(null); $query->attachBehaviors($query->behaviors()); $query->active(); $query->applyManufacturers($this->model->id); $provider = new ActiveDataProvider($query, array('id' => false, 'pagination' => array('pageSize' => $this->allowedPageLimit[0]))); $this->render('index', array('provider' => $provider)); }
/** * @return array of category manufacturers */ public function getCategoryManufacturers() { $cr = new CDbCriteria(); $cr->select = 't.manufacturer_id, t.id'; $cr->group = 't.manufacturer_id'; $cr->addCondition('t.manufacturer_id IS NOT NULL'); //@todo: Fix manufacturer translation $mdl = $this->model; $dependency = new CDbCacheDependency('SELECT MAX(date_update) FROM {{shop_product}}'); //$dependency = new CChainedCacheDependency(); $manufacturers = ShopProduct::model()->cache($this->controller->cacheTime, $dependency)->active()->applyCategories($mdl, null)->with(array('manufacturer' => array('with' => array('productsCount' => array('scopes' => array('active', 'applyCategories' => array($mdl, null), 'applyAttributes' => array($this->getOwner()->activeAttributes), 'applyMinPrice' => array($this->convertCurrency(Yii::app()->request->getQuery('min_price'))), 'applyMaxPrice' => array($this->convertCurrency(Yii::app()->request->getQuery('max_price')))))))))->findAll($cr); $data = array('title' => Yii::t('default', 'Производитель'), 'selectMany' => true, 'filters' => array()); if ($manufacturers) { foreach ($manufacturers as $m) { $m = $m->manufacturer; if ($m) { $model = new ShopProduct(null); $model->attachBehaviors($model->behaviors()); $model->active()->cache($this->controller->cacheTime, $dependency)->applyCategories($this->model)->applyMinPrice($this->convertCurrency(Yii::app()->request->getQuery('min_price')))->applyMaxPrice($this->convertCurrency(Yii::app()->request->getQuery('max_price')))->applyAttributes($this->getOwner()->activeAttributes)->applyManufacturers($m->id); $data['filters'][] = array('title' => $m->name, 'count' => $model->count(), 'queryKey' => 'manufacturer', 'queryParam' => $m->id); } } } return $data; }