예제 #1
0
 public function parseUrl($manager, $request, $pathInfo, $rawPathInfo)
 {
     if (preg_match('%^(/?([\\w\\-.]+))+$%', $pathInfo, $matches)) {
         //разбиваем путь по слешам и берем последнюю составляющую пути
         $pages = preg_split("/\\//", $pathInfo);
         //$element = end($pages);
         $element_arr = explode('.', end($pages));
         $element = $element_arr[0];
         if (in_array('brands', $pages)) {
             if (count($pages) == 3) {
                 if ($brand = CatalogBrands::model()->find(array('select' => 'id', 'condition' => 'link=:link', 'params' => array(':link' => $element)))) {
                     return 'catalog/brands/index/view/' . $element;
                 } else {
                     return false;
                 }
             } elseif (count($pages) == 4) {
                 return 'catalog/brands/index/view/' . $pages[2] . '/coll/' . $element;
             } else {
                 return false;
             }
         } else {
             if ($page = CatalogCategory::model()->find(array('select' => 'id', 'condition' => 'link=:link', 'params' => array(':link' => $element)))) {
                 // если есть - преобразуем адрес
                 return '/catalog/default/category/link/' . $element;
             } else {
                 // если такой категории нет - проверяем, может быть есть такой товар
                 if ($product = CatalogProduct::model()->find(array('select' => 'id', 'condition' => 'link=:link', 'params' => array(':link' => $element)))) {
                     // если есть - преобразуем адрес
                     return '/catalog/default/product/id/' . $product->id;
                 } else {
                     // если нет - не применяем правило
                     return false;
                 }
             }
         }
     }
     return false;
     // не применяем данное правило
 }
 public function run()
 {
     // устанавливаем условие для отбора
     $criteria = new CDbCriteria();
     $criteria->select = 't.title,t.photo,t.price,t.link, t.article, t.state';
     $criteria->compare('on_main', true);
     $criteria->with = array('idCategoryFast');
     /*$dataProvider = new CActiveDataProvider('CatalogProduct', array(
                'criteria'=>$criteria,
     		'sort' => array(
     			'defaultOrder' => 'sort_order ASC',
     			),
                'pagination'=>false,
            ));*/
     $products = CatalogProduct::model()->findAll($criteria);
     // Тасуем продукты
     if (is_array($products)) {
         shuffle($products);
     }
     $this->render('prodtomain', array('products' => $products));
     return parent::run();
 }
예제 #3
0
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer the ID of the model to be loaded
  */
 public function loadModel($id)
 {
     $model = CatalogProduct::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
예제 #4
0
 public function getMaxSortOrder()
 {
     $models = CatalogProduct::model()->findAll();
     foreach ($models as $model) {
         $sort_orders[] = $model->sort_order;
     }
     if (!empty($sort_orders)) {
         arsort($sort_orders);
         $max_order = current($sort_orders);
     } else {
         $max_order = 0;
     }
     return $max_order;
 }
예제 #5
0
 public function createUrl($route, $params = array(), $ampersand = '&')
 {
     // если формируем ссылку на категорию
     if ($route == 'category') {
         if (isset($params['link'])) {
             return '/catalog' . CatalogCategory::getCategoryRoute($params['link']);
         }
     }
     // если формируем ссылку на товар
     if ($route == 'product') {
         // если передано id товара
         if (isset($params['id'])) {
             // если существует такой продукт
             if ($product = CatalogProduct::model()->find(array('condition' => 'id=:id', 'params' => array(':id' => $params['id'])))) {
                 // берем категорию продукта
                 $category = CatalogCategory::model()->with('parentShort')->findByPk($product->id_category);
                 // возвращаем путь к категории товара и прибавляем в конце id
                 return '/catalog' . CatalogCategory::getCategoryRouteFast($category) . '/' . $product->id;
             }
         }
     }
     // если условия не сработали - формируем адрес обычным образом
     return parent::createUrl($route, $params, $ampersand);
 }