Commit 02e6c2ba5ebfe45b5f0bdb3302ab95a45eb1e1be

Authored by Karnovsky A
1 parent 0ff57d01

-

common/modules/product/models/Category.php
... ... @@ -136,7 +136,7 @@ class Category extends \yii\db\ActiveRecord
136 136 public function getProducts() {
137 137 return $this->hasMany(Product::className(), ['product_id' => 'product_id'])
138 138 ->viaTable('product_category', ['category_id' => 'category_id'])
139   - ->with(['variants'])
  139 + ->joinWith(['variants'])
140 140 ->andOnCondition(['!=', ProductVariant::tableName() .'.stock', 0]);
141 141 // return $this->getRelations('product_categories');
142 142 }
... ...
common/modules/product/models/Product.php
... ... @@ -105,6 +105,10 @@ class Product extends \yii\db\ActiveRecord
105 105 ];
106 106 }
107 107  
  108 + public function getUrl() {
  109 + return '/product/'. $this->alias;
  110 + }
  111 +
108 112 /**
109 113 * @return \yii\db\ActiveQuery
110 114 */
... ...
frontend/config/main.php
... ... @@ -74,6 +74,8 @@ return [
74 74 'brands' => 'catalog/brands',
75 75 ]
76 76 ],
  77 + 'priceparam.xml' => 'site/priceparam',
  78 + 'price.xml' => 'site/price',
77 79 // 'catalog' => 'catalog/all',
78 80 // 'catalog/<translit:\w+>' => 'catalog/index',
79 81 // 'products/search' => 'products/search',
... ...
frontend/controllers/SiteController.php
... ... @@ -3,6 +3,9 @@
3 3 namespace frontend\controllers;
4 4  
5 5 use common\modules\product\models\Category;
  6 +use common\modules\product\models\CategorySearch;
  7 +use common\modules\product\models\Product;
  8 +use common\modules\product\models\ProductVariant;
6 9 use Yii;
7 10 use yii\web\Controller;
8 11 use common\models\Page;
... ... @@ -54,24 +57,21 @@ class SiteController extends Controller
54 57  
55 58 public function actionPriceparam ()
56 59 {
57   - if (! $catalog = Category::find ()
58   - ->where (['translit' => $_GET['translit']])
59   - ->with ('parent')
60   - ->one ()
61   - )
  60 + $category_alias = Yii::$app->request->get('category');
  61 + $is_count = Yii::$app->request->get('count', false);
  62 +
  63 + if ( !($category = CategorySearch::findByAlias($category_alias)))
62 64 {
63   - throw new HttpException(404, 'Данной странице не существует!');
  65 + throw new HttpException(404, 'Данной страницы не существует!');
64 66 }
65 67  
66   - //var_dump();die;
67   -
68   - $products = Products::find ()->where (['catalog_id' => $catalog->id])->all();
69   - if (isset($_GET['count'])){
70   -
71   - print (count($products));die;
  68 + $products = $category->products;
72 69  
  70 + if ($is_count) {
  71 + print (count($products));
  72 + exit;
73 73 }
74   -//var_dump($products);die();
  74 +
75 75 set_time_limit (0);
76 76 header ("Content-Type: text/xml");
77 77 print '<?xml version="1.0" encoding="UTF-8" ?>';
... ... @@ -83,81 +83,61 @@ class SiteController extends Controller
83 83 print "<categories>";
84 84  
85 85 print "<category>";
86   - print "<id>" . $catalog->id . "</id>";
  86 + print "<id>" . $category->category_id . "</id>";
87 87 print "<parentId></parentId>";
88   - print "<name>" . $catalog->name . "</name>";
  88 + print "<name>" . $category->name . "</name>";
89 89 print "</category>";
90 90  
91 91  
92 92 print "</categories>";
93 93 print "<items>";
94   - foreach ($products as $product)
95   - {
96   - $color = Mod::find()->where ('
97   - (onstock_status_id > 0 OR is_always_active > 0)
98   - AND cost > 0
99   - AND status = 1
100   - ')->where(['product_id' => $product->id])->all();
101   -
102   - $brend = Brends::find()->where(['id' => $product->brend_id])->one();
103   - //$brends = Brends::find()->orderBy('sort ASC')->all();
104   -
105   - //var_dump($brend);die;
  94 + /** @var Product $product */
  95 + foreach ($products as $product) {
  96 + /** @var ProductVariant $variant */
  97 + foreach ($product->enabledVariants as $variant) {
106 98  
107   - foreach($color as $v) {
108   -
109   - $col = $v['color'];
110   - $pr = $v['cost'];
111   - $old_pr = $v['old_cost'];
112 99 print "<item>";
113   - print "<id>" . htmlspecialchars ($v['id']) . "</id>";
114   - print "<categoryId>" . htmlspecialchars ($product->catalog_id) . "</categoryId>";
115   - print "<vendor>".$brend['name']."</vendor>";
116   - print "<code>" . htmlspecialchars ($v['art']) . "</code>";
117   - print "<typeprefix>" . htmlspecialchars (substr($catalog->name, 0,-2)) ." </typeprefix>";
118   - print "<name>" . htmlspecialchars ($product->name) ." </name>";
119   - print "<param>". $col . " </param>";
120   - print "<description>" . htmlspecialchars ($product->body_ru) . "</description>";
121   - print "<url>http://rukzachok.com.ua/products/" . htmlspecialchars ($_GET['translit']) . "/" . htmlspecialchars ($product->translit). "</url>";
122   - print "<image>http://rukzachok.com.ua/upload/mod/big/" . $v['image'] . "</image>";
123   - print "<priceRUAH>" . $pr . "</priceRUAH>";
124   - print "<oldprice>" . $old_pr . "</oldprice>";
  100 + print "<id>" . htmlspecialchars($variant->product_variant_id) . "</id>";
  101 + print "<categoryId>" . htmlspecialchars($product->category->category_id) . "</categoryId>";
  102 + print "<vendor>" . $product->brand->name . "</vendor>";
  103 + print "<code>" . htmlspecialchars($variant->sku) . "</code>";
  104 + print "<typeprefix>" . htmlspecialchars(substr($category->name, 0, -2)) . " </typeprefix>";
  105 + print "<name>" . htmlspecialchars($product->name) . " </name>";
  106 + print "<param>" . $variant->name . " </param>";
  107 + print "<description>" . htmlspecialchars($product->description) . "</description>";
  108 + print "<url>http://rukzachok.com.ua{$product->url}#{$variant->product_variant_id}</url>";
  109 + print "<image>http://rukzachok.com.ua{$variant->imageUrl}</image>";
  110 + print "<priceRUAH>" . $product->price . "</priceRUAH>";
  111 + print "<oldprice>" . $product->price_old . "</oldprice>";
125 112 print "<priceRUSD></priceRUSD>";
126 113 print "<stock>В наличии</stock>";
127 114 print "<guarantee></guarantee>";
128 115 print "</item>";
129   -
130 116 }
131 117 }
132   -
133   -
134 118 print "</items>";
135 119  
136 120 print "</price>";
137   -
138   -
139 121 }
140 122  
141 123 public function actionPrice()
142 124 {
  125 + $category_alias = Yii::$app->request->get('category');
  126 + $is_count = Yii::$app->request->get('count', false);
143 127  
144   - if (! $catalog = Category::find ()
145   - ->where (['translit' => $_GET['translit']])
146   - ->with ('parent')
147   - ->one ()
148   - )
  128 + if ( !($category = CategorySearch::findByAlias($category_alias)))
149 129 {
150   - throw new HttpException(404, 'Данной странице не существует!');
  130 + throw new HttpException(404, 'Данной страницы не существует!');
151 131 }
152 132  
  133 + $products = $category->products;
153 134  
  135 + if ($is_count) {
  136 + print (count($products));
  137 + exit;
  138 + }
154 139  
155   - $products = Products::find ()->where (['catalog_id' => $catalog->id])->all();
156   - if (isset($_GET['count'])){
157   -
158   - print (count($products));die;
159 140  
160   - }
161 141 //var_dump($products);die();
162 142 set_time_limit (0);
163 143 header ("Content-Type: text/xml");
... ... @@ -170,43 +150,30 @@ class SiteController extends Controller
170 150 print "<categories>";
171 151  
172 152 print "<category>";
173   - print "<id>" . $catalog->id . "</id>";
  153 + print "<id>" . $category->category_id . "</id>";
174 154 print "<parentId></parentId>";
175   - print "<name>" . $catalog->name . "</name>";
  155 + print "<name>" . $category->name . "</name>";
176 156 print "</category>";
177 157  
178 158 print "</categories>";
179 159 print "<items>";
  160 + /** @var Product $product */
180 161 foreach ($products as $product)
181 162 {
182   - $color = Mod::find()->where ('
183   - (onstock_status_id > 0 OR is_always_active > 0)
184   - AND cost > 0
185   - AND status = 1
186   - ')->where(['product_id' => $product->id])->all();
187   -
188   - $brend = Brends::find()->where(['id' => $product->brend_id])->one();
189   - //$brends = Brends::find()->orderBy('sort ASC')->all();
190   -
191   - //var_dump($brend);die;
192   -
193   - foreach($color as $v) {
194   -
195   - $col = $v['color'];
196   - $pr = $v['cost'];
197   - $old_pr = $v['old_cost'];
  163 + /** @var ProductVariant $variant */
  164 + foreach ($product->enabledVariants as $variant) {
198 165  
199 166 print "<item>";
200   - print "<id>" . htmlspecialchars ($v['id']) . "</id>";
201   - print "<categoryId>" . htmlspecialchars ($product->catalog_id) . "</categoryId>";
202   - print "<vendor>".$brend['name']."</vendor>";
203   - print "<code>" . htmlspecialchars ($v['art']) . "</code>";
204   - print "<name>" . htmlspecialchars ($product->name) ." ". $col . " </name>";
205   - print "<description>" . htmlspecialchars ($product->body_ru) . "</description>";
206   - print "<url>http://rukzachok.com.ua/products/" . htmlspecialchars ($_GET['translit']) . "/" . htmlspecialchars ($product->translit) . "</url>";
207   - print "<image>http://rukzachok.com.ua/upload/mod/big/" . $v['image'] . "</image>";
208   - print "<priceRUAH>" . $pr . "</priceRUAH>";
209   - print "<oldprice>" . $old_pr . "</oldprice>";
  167 + print "<id>" . htmlspecialchars($variant->product_variant_id) . "</id>";
  168 + print "<categoryId>" . htmlspecialchars($product->category->category_id) . "</categoryId>";
  169 + print "<vendor>" . $product->brand->name . "</vendor>";
  170 + print "<code>" . htmlspecialchars($variant->sku) . "</code>";
  171 + print "<name>" . htmlspecialchars($product->name) . " </name>";
  172 + print "<description>" . htmlspecialchars($product->description) . "</description>";
  173 + print "<url>http://rukzachok.com.ua{$product->url}#{$variant->product_variant_id}</url>";
  174 + print "<image>http://rukzachok.com.ua{$variant->imageUrl}</image>";
  175 + print "<priceRUAH>" . $product->price . "</priceRUAH>";
  176 + print "<oldprice>" . $product->price_old . "</oldprice>";
210 177 print "<priceRUSD></priceRUSD>";
211 178 print "<stock>В наличии</stock>";
212 179 print "<guarantee></guarantee>";
... ...