Commit 7913794001c19d701d9af8c1eddcb2c20ab7cc29
1 parent
ccc6baf5
fix product modal
Showing
5 changed files
with
39 additions
and
25 deletions
Show diff stats
common/models/ProductLang.php
frontend/controllers/SiteController.php
... | ... | @@ -102,8 +102,8 @@ |
102 | 102 | ->orderBy('id') |
103 | 103 | ->limit(4) |
104 | 104 | ->all(); |
105 | - $productsCompany = Product::find()->where(['!=','type',Product::TYPE_PRIVATE])->all(); | |
106 | - $productsPrivate = Product::find()->where(['!=','type',Product::TYPE_COMPANY])->all(); | |
105 | + $productsCompany = Product::find()->with(['lang', 'image'])->where(['!=','type',Product::TYPE_PRIVATE])->all(); | |
106 | + $productsPrivate = Product::find()->with(['lang', 'image'])->where(['!=','type',Product::TYPE_COMPANY])->all(); | |
107 | 107 | return $this->render( |
108 | 108 | 'index', |
109 | 109 | [ | ... | ... |
frontend/views/site/_product.php
1 | +<?php | |
2 | + | |
3 | +/** | |
4 | + * @var Product $product | |
5 | + */ | |
6 | + | |
7 | +use common\models\Product; | |
8 | + | |
9 | +?> | |
1 | 10 | <div class="col-xs-6 col-sm-3 index-solution-slider__col"> |
2 | 11 | <div class="index-solution-slider__item"> |
3 | - <a href="#" class="index-solution-slider__item_img"> | |
12 | + <a href="#" data-toggle="modal" data-target="#cardProduct" data-image="<?= $product->image->getUrl() ?>" data-price="<?= $product->price ?>" data-sku="<?= $product->sku ?>" class="index-solution-slider__item_img"> | |
4 | 13 | <!--обрезать по высоте в 211px--> |
5 | - <img src="/img/new-index/slider-items/slider-item-1.jpg" alt=""> | |
14 | + <?= $product->image->getImg([]) ?> | |
6 | 15 | </a> |
7 | - <a href="#" class="index-solution-slider__item_link">Промышленная солнечная электростанция 2 МВт | |
8 | - "Под ключ"</a> | |
9 | - <div class="index-solution-slider__item_price">1740000.00 $</div> | |
16 | + <a href="#" data-toggle="modal" data-target="#cardProduct" data-image="<?= $product->image->getUrl() ?>" data-price="<?= $product->price ?>" data-sku="<?= $product->sku ?>" class="index-solution-slider__item_link"> | |
17 | + <?= $product->lang->title ?> | |
18 | + </a> | |
19 | + <div class="index-solution-slider__item_price"><?= $product->price ?> $</div> | |
10 | 20 | </div> |
11 | 21 | </div> |
12 | 22 | \ No newline at end of file | ... | ... |
frontend/views/site/index.php
... | ... | @@ -550,8 +550,6 @@ $coordinates['lon'] = empty($settings->lon) ? 0 : $settings->lon; |
550 | 550 | width="100%" height="380" style="border:0;" allowfullscreen="" loading="lazy"></iframe> |
551 | 551 | </section> |
552 | 552 | </div> |
553 | -<a href="#" class="animation-hover" data-boo="fffff" data-title="hhh" data-toggle="modal" data-target="#cardProduct"> | |
554 | - Получить консультацию </a> | |
555 | 553 | <!-- Modal --> |
556 | 554 | <div class="modal fade" id="cardProduct" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> |
557 | 555 | <div class="modal-dialog modal-lg"> | ... | ... |
frontend/web/js/product.js
1 | 1 | var phoneInput = document.querySelector('#cardProduct [type="tel"]'); |
2 | 2 | var counter = document.querySelector('#cardProduct .product-counter__input'); |
3 | - | |
3 | +var price = 0; | |
4 | 4 | if (phoneInput) { |
5 | 5 | phoneInput.addEventListener('input', phoneHandleInput); |
6 | 6 | } |
7 | 7 | $('#cardProduct').on('show.bs.modal', function (e) { |
8 | - var button = $(e.relatedTarget) | |
9 | - console.log(button.data('boo')); | |
8 | + var button = $(e.relatedTarget); | |
9 | + price = button.data('price'); | |
10 | + $('#cardProduct .product-counter__value').data('price', price); | |
11 | + var itemPrice = counter.parentElement.querySelector('.product-counter__value'); | |
12 | + itemPrice.innerHTML = `${price} ${itemPrice.dataset.currency}`; | |
13 | + counter.querySelector('input').value = 1; | |
10 | 14 | }) |
11 | - | |
12 | -if (counter) { | |
13 | - counterFunc(counter); | |
15 | +if(counter){ | |
16 | + counterFunc(counter); | |
14 | 17 | } |
15 | 18 | |
19 | + | |
16 | 20 | function phoneHandleInput(e) { |
17 | 21 | e.target.value = phoneMasks(e.target.value); |
18 | 22 | } |
... | ... | @@ -27,8 +31,8 @@ function phoneMasks(phone) { |
27 | 31 | } |
28 | 32 | |
29 | 33 | function counterFunc(counter) { |
30 | - let itemPrice = counter.parentElement.querySelector('.product-counter__value'); | |
31 | - itemPrice.innerHTML = `${itemPrice.dataset.price} ${itemPrice.dataset.currency}`; | |
34 | + var itemPrice = counter.parentElement.querySelector('.product-counter__value'); | |
35 | + itemPrice.innerHTML = `${price} ${itemPrice.dataset.currency}`; | |
32 | 36 | |
33 | 37 | counter.querySelector('input').value = 1; |
34 | 38 | counter.addEventListener('input', counterHandleInput); |
... | ... | @@ -42,7 +46,7 @@ function counterFunc(counter) { |
42 | 46 | } |
43 | 47 | |
44 | 48 | function counterHandleChange(e) { |
45 | - const value = e.target.value.replace(/\D/g, ''); | |
49 | + var value = e.target.value.replace(/\D/g, ''); | |
46 | 50 | if (value == 0) { |
47 | 51 | e.target.value = 1; |
48 | 52 | } |
... | ... | @@ -51,14 +55,16 @@ function counterFunc(counter) { |
51 | 55 | |
52 | 56 | function increment(e) { |
53 | 57 | e.preventDefault(); |
54 | - const value = Number(counter.querySelector('input').value); | |
58 | + var value = Number(counter.querySelector('input').value); | |
59 | + //console.log(value); | |
55 | 60 | counter.querySelector('input').value = value + 1; |
61 | + console.log(value); | |
56 | 62 | updateSummary(); |
57 | 63 | } |
58 | 64 | |
59 | 65 | function decrement(e) { |
60 | 66 | e.preventDefault(); |
61 | - const value = Number(counter.querySelector('input').value); | |
67 | + var value = Number(counter.querySelector('input').value); | |
62 | 68 | if (value > 1) { |
63 | 69 | counter.querySelector('input').value = value - 1; |
64 | 70 | updateSummary(); |
... | ... | @@ -66,11 +72,11 @@ function counterFunc(counter) { |
66 | 72 | } |
67 | 73 | |
68 | 74 | function updateSummary() { |
69 | - const amount = counter.querySelector('input').value; | |
75 | + var amount = counter.querySelector('input').value; | |
70 | 76 | if (amount >= 1) { |
71 | - const oldSum = Number(itemPrice.dataset.price) * 10; | |
72 | - const newSum = String(oldSum * amount); | |
73 | - itemPrice.innerHTML = `${newSum.slice(0, -2)}.${newSum.slice(-2)} ${itemPrice.dataset.currency}`; | |
77 | + var oldSum = Number(price); | |
78 | + var newSum = String(oldSum * amount); | |
79 | + itemPrice.innerHTML = `${newSum} ${itemPrice.dataset.currency}`; | |
74 | 80 | } |
75 | 81 | } |
76 | 82 | } |
77 | 83 | \ No newline at end of file | ... | ... |