Commit 15b6552f51fc70a91d3c070cc4012eb5892200bd
1 parent
240fe900
Sitemap
Showing
1 changed file
with
13 additions
and
17 deletions
Show diff stats
console/SiteMapController.php
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | namespace artweb\artbox\ecommerce\console; | 3 | namespace artweb\artbox\ecommerce\console; |
| 4 | 4 | ||
| 5 | use artweb\artbox\ecommerce\models\Brand; | 5 | use artweb\artbox\ecommerce\models\Brand; |
| 6 | + use artweb\artbox\ecommerce\models\Product; | ||
| 6 | use artweb\artbox\ecommerce\models\ProductVariant; | 7 | use artweb\artbox\ecommerce\models\ProductVariant; |
| 7 | use artweb\artbox\language\components\LanguageUrlManager; | 8 | use artweb\artbox\language\components\LanguageUrlManager; |
| 8 | use artweb\artbox\language\models\Language; | 9 | use artweb\artbox\language\models\Language; |
| @@ -41,18 +42,8 @@ | @@ -41,18 +42,8 @@ | ||
| 41 | 42 | ||
| 42 | public function getVariants() | 43 | public function getVariants() |
| 43 | { | 44 | { |
| 44 | - return ProductVariant::find() | ||
| 45 | - ->with('lang') | ||
| 46 | - ->with('product.lang') | ||
| 47 | - ->select('*', 'DISTINCT ON (product_id)') | ||
| 48 | - ->andWhere( | ||
| 49 | - [ | ||
| 50 | - '!=', | ||
| 51 | - 'stock', | ||
| 52 | - 0, | ||
| 53 | - ] | ||
| 54 | - ); | ||
| 55 | - | 45 | + return Product::find() |
| 46 | + ->with('enabledVariants.lang'); | ||
| 56 | } | 47 | } |
| 57 | 48 | ||
| 58 | public function getSeoLinks() | 49 | public function getSeoLinks() |
| @@ -254,16 +245,21 @@ | @@ -254,16 +245,21 @@ | ||
| 254 | } | 245 | } |
| 255 | 246 | ||
| 256 | foreach ($this->getVariants() | 247 | foreach ($this->getVariants() |
| 257 | - ->batch(1000) as $rows) { | ||
| 258 | - foreach ($rows as $row) { | ||
| 259 | - if (!preg_match("@^[a-zA-Z\d]+$@i", $row->sku)) { | 248 | + ->each(1000) as $row) { |
| 249 | + /** | ||
| 250 | + * @var Product $row | ||
| 251 | + */ | ||
| 252 | + if(!empty($row->enabledVariants)) { | ||
| 253 | + $variant = $row->enabledVariants[0]; | ||
| 254 | + } | ||
| 255 | + if(!empty($variant)) { | ||
| 256 | + if (!preg_match("@^[a-zA-Z\d]+$@i", $variant->sku)) { | ||
| 260 | continue; | 257 | continue; |
| 261 | } | 258 | } |
| 262 | $url = $urlManager->createAbsoluteUrl( | 259 | $url = $urlManager->createAbsoluteUrl( |
| 263 | [ | 260 | [ |
| 264 | 'catalog/product', | 261 | 'catalog/product', |
| 265 | - 'product' => $row->product->lang->alias, | ||
| 266 | - 'variant' => $row->sku, | 262 | + 'product' => $row->lang->alias, |
| 267 | ] | 263 | ] |
| 268 | ); | 264 | ); |
| 269 | $this->createRow($url, 0.7, 'Daily'); | 265 | $this->createRow($url, 0.7, 'Daily'); |