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(); }
/** * 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; }
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; }
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); }