Commit 63e867f2b4f99fedfdd89c2f4b261b33cd469f22
1 parent
ec2fe6c9
big commti
Showing
4 changed files
with
89 additions
and
21 deletions
Show diff stats
common/behaviors/Slug.php
@@ -22,7 +22,6 @@ class Slug extends Behavior | @@ -22,7 +22,6 @@ class Slug extends Behavior | ||
22 | 22 | ||
23 | public function getSlug( $event ) | 23 | public function getSlug( $event ) |
24 | { | 24 | { |
25 | - | ||
26 | if(!empty($this->owner->{$this->in_attribute})){ | 25 | if(!empty($this->owner->{$this->in_attribute})){ |
27 | if ( empty( $this->owner->{$this->out_attribute} ) ) { | 26 | if ( empty( $this->owner->{$this->out_attribute} ) ) { |
28 | $this->owner->{$this->out_attribute} = $this->generateSlug( $this->owner->{$this->in_attribute} ); | 27 | $this->owner->{$this->out_attribute} = $this->generateSlug( $this->owner->{$this->in_attribute} ); |
@@ -47,7 +46,7 @@ class Slug extends Behavior | @@ -47,7 +46,7 @@ class Slug extends Behavior | ||
47 | private function slugify( $slug ) | 46 | private function slugify( $slug ) |
48 | { | 47 | { |
49 | if ( $this->translit ) { | 48 | if ( $this->translit ) { |
50 | - return yii\helpers\Inflector::slug( TransliteratorHelper::process( $slug ), '-', true ); | 49 | + return yii\helpers\Inflector::slug( $this->translit( $slug ), '-', true ); |
51 | } else { | 50 | } else { |
52 | return $this->slug( $slug, '-', true ); | 51 | return $this->slug( $slug, '-', true ); |
53 | } | 52 | } |
@@ -77,4 +76,69 @@ class Slug extends Behavior | @@ -77,4 +76,69 @@ class Slug extends Behavior | ||
77 | ->one(); | 76 | ->one(); |
78 | } | 77 | } |
79 | 78 | ||
79 | + | ||
80 | + static function translit ($string, $setting = 'all') | ||
81 | + { | ||
82 | + $letter = array ( | ||
83 | + | ||
84 | + 'а' => 'a', 'б' => 'b', 'в' => 'v', | ||
85 | + 'г' => 'g', 'д' => 'd', 'е' => 'e', | ||
86 | + 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', | ||
87 | + 'и' => 'i', 'й' => 'y', 'к' => 'k', | ||
88 | + 'л' => 'l', 'м' => 'm', 'н' => 'n', | ||
89 | + 'о' => 'o', 'п' => 'p', 'р' => 'r', | ||
90 | + 'с' => 's', 'т' => 't', 'у' => 'u', | ||
91 | + 'ф' => 'f', 'х' => 'h', 'ц' => 'c', | ||
92 | + 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', | ||
93 | + 'ь' => "", 'ы' => 'y', 'ъ' => "", | ||
94 | + 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', | ||
95 | + 'ї' => 'yi', 'є' => 'ye', 'і' => 'ee', | ||
96 | + | ||
97 | + 'А' => 'A', 'Б' => 'B', 'В' => 'V', | ||
98 | + 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', | ||
99 | + 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', | ||
100 | + 'И' => 'I', 'Й' => 'Y', 'К' => 'K', | ||
101 | + 'Л' => 'L', 'М' => 'M', 'Н' => 'N', | ||
102 | + 'О' => 'O', 'П' => 'P', 'Р' => 'R', | ||
103 | + 'С' => 'S', 'Т' => 'T', 'У' => 'U', | ||
104 | + 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', | ||
105 | + 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', | ||
106 | + 'Ь' => "", 'Ы' => 'Y', 'Ъ' => "", | ||
107 | + 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', | ||
108 | + 'Ї' => 'Yi', 'Є' => 'Ye', 'І' => 'Ee' | ||
109 | + ); | ||
110 | + | ||
111 | + $symbol = array ( | ||
112 | + ' ' => '-', "'" => '', '"' => '', | ||
113 | + '!' => '', "@" => '', '#' => '', | ||
114 | + '$' => '', "%" => '', '^' => '', | ||
115 | + ';' => '', "*" => '', '(' => '', | ||
116 | + ')' => '', "+" => '', '~' => '', | ||
117 | + '.' => '', ',' => '-', '?' => '', | ||
118 | + '…' => '', '№' => 'N', '°' => '', | ||
119 | + '`' => '', '|' => '', '&' => '-and-', | ||
120 | + '<' => '', '>' => '' | ||
121 | + ); | ||
122 | + | ||
123 | + if ($setting == 'all') | ||
124 | + { | ||
125 | + $converter = $letter + $symbol; | ||
126 | + } | ||
127 | + else if ($setting == 'letter') | ||
128 | + { | ||
129 | + $converter = $letter; | ||
130 | + } | ||
131 | + else if ($setting == 'symbol') | ||
132 | + { | ||
133 | + $converter = $symbol; | ||
134 | + } | ||
135 | + | ||
136 | + $url = strtr ($string, $converter); | ||
137 | + | ||
138 | + $url = str_replace ("---", '-', $url); | ||
139 | + $url = str_replace ("--", '-', $url); | ||
140 | + | ||
141 | + return $url; | ||
142 | + } | ||
143 | + | ||
80 | } | 144 | } |
81 | \ No newline at end of file | 145 | \ No newline at end of file |
common/modules/product/CatalogUrlManager.php
@@ -171,7 +171,7 @@ class CatalogUrlManager implements UrlRuleInterface { | @@ -171,7 +171,7 @@ class CatalogUrlManager implements UrlRuleInterface { | ||
171 | $filter_options = explode(';', $filter_str); | 171 | $filter_options = explode(';', $filter_str); |
172 | foreach ($filter_options as $filter_option) { | 172 | foreach ($filter_options as $filter_option) { |
173 | $filter_exp = explode('=', $filter_option); | 173 | $filter_exp = explode('=', $filter_option); |
174 | - if(is_array($filter_exp)){ | 174 | + if(!empty($filter_exp[1])){ |
175 | list($filter_key, $filter_option) = explode('=', $filter_option); | 175 | list($filter_key, $filter_option) = explode('=', $filter_option); |
176 | if($filter_key == 'prices') { // price-interval section | 176 | if($filter_key == 'prices') { // price-interval section |
177 | $prices = explode(':', $filter_option); | 177 | $prices = explode(':', $filter_option); |
common/modules/product/models/Export.php
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | 2 | ||
3 | namespace common\modules\product\models; | 3 | namespace common\modules\product\models; |
4 | 4 | ||
5 | + use common\modules\rubrication\models\TaxGroup; | ||
5 | use yii\base\Model; | 6 | use yii\base\Model; |
6 | 7 | ||
7 | class Export extends Model | 8 | class Export extends Model |
@@ -26,13 +27,12 @@ | @@ -26,13 +27,12 @@ | ||
26 | 27 | ||
27 | 28 | ||
28 | $products = Product::find() | 29 | $products = Product::find() |
29 | - ->joinWith([ | 30 | + ->with([ |
30 | 'variantsWithFilters', | 31 | 'variantsWithFilters', |
31 | 'brand', | 32 | 'brand', |
32 | 'categories', | 33 | 'categories', |
33 | - ]) | ||
34 | - ->with('filters') | ||
35 | - ->limit(1000) | 34 | + 'filters']) |
35 | + ->limit(100) | ||
36 | ->offset($from) | 36 | ->offset($from) |
37 | ->all(); | 37 | ->all(); |
38 | $filesize = Product::find() | 38 | $filesize = Product::find() |
@@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
58 | 58 | ||
59 | $list = [ | 59 | $list = [ |
60 | $categories, | 60 | $categories, |
61 | - $product->brand->name, | 61 | + !empty($product->brand) ? $product->brand ->name :'', |
62 | $product->name, | 62 | $product->name, |
63 | '', | 63 | '', |
64 | ( ( !empty( $product->description ) ) ? $product->description : '' ), | 64 | ( ( !empty( $product->description ) ) ? $product->description : '' ), |
@@ -79,7 +79,7 @@ | @@ -79,7 +79,7 @@ | ||
79 | 79 | ||
80 | fclose($handle); | 80 | fclose($handle); |
81 | 81 | ||
82 | - $from += 1000; | 82 | + $from += 100; |
83 | $end = false; | 83 | $end = false; |
84 | if($from > $filesize) { | 84 | if($from > $filesize) { |
85 | $end = true; | 85 | $end = true; |
@@ -104,16 +104,22 @@ | @@ -104,16 +104,22 @@ | ||
104 | 104 | ||
105 | public function convertFilterToString($filters) | 105 | public function convertFilterToString($filters) |
106 | { | 106 | { |
107 | - $fittersArray = []; | ||
108 | - foreach($filters as $filter) { | ||
109 | - $fittersArray[ $filter->taxGroup->alias ][] = $filter->value; | 107 | + if(!empty($filters)){ |
108 | + $fittersArray = []; | ||
109 | + foreach($filters as $filter) { | ||
110 | + if($filter->taxGroup instanceof TaxGroup){ | ||
111 | + $fittersArray[ $filter->taxGroup->alias ][] = $filter->value; | ||
112 | + } | ||
113 | + | ||
114 | + } | ||
115 | + $filterString = []; | ||
116 | + | ||
117 | + foreach($fittersArray as $filterName => $filterRows) { | ||
118 | + $row = implode(',', $filterRows); | ||
119 | + $filterString[] = "[{$filterName}:{$row}]"; | ||
120 | + } | ||
121 | + return implode('*', $filterString); | ||
110 | } | 122 | } |
111 | - $filterString = []; | ||
112 | - | ||
113 | - foreach($fittersArray as $filterName => $filterRows) { | ||
114 | - $row = implode(',', $filterRows); | ||
115 | - $filterString[] = "[{$filterName}:{$row}]"; | ||
116 | - } | ||
117 | - return implode('*', $filterString); | 123 | + |
118 | } | 124 | } |
119 | } | 125 | } |
120 | \ No newline at end of file | 126 | \ No newline at end of file |
frontend/controllers/SiteController.php
@@ -93,10 +93,8 @@ class SiteController extends Controller | @@ -93,10 +93,8 @@ class SiteController extends Controller | ||
93 | } | 93 | } |
94 | 94 | ||
95 | public function actionError(){ | 95 | public function actionError(){ |
96 | - | ||
97 | return $this->render('error', [ | 96 | return $this->render('error', [ |
98 | 'code'=>'404', | 97 | 'code'=>'404', |
99 | -// 'message'=>Yii::$app->errorHandler->exception->getMessage(), | ||
100 | ]); | 98 | ]); |
101 | } | 99 | } |
102 | } | 100 | } |