Commit 02e6c2ba5ebfe45b5f0bdb3302ab95a45eb1e1be
1 parent
0ff57d01
-
Showing
4 changed files
with
62 additions
and
89 deletions
Show diff stats
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
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>"; | ... | ... |