Commit 8c6aa8ad881366e220e999096252740baaa9983a
1 parent
102557ef
Корзина и миниатюры
Showing
4 changed files
with
307 additions
and
34 deletions
Show diff stats
frontend/views/basket/cart.php
| ... | ... | @@ -9,19 +9,21 @@ |
| 9 | 9 | ?> |
| 10 | 10 | <span class="badge"><?= $count; ?></span> |
| 11 | 11 | <?php |
| 12 | - echo Html::a( | |
| 13 | - Html::tag( | |
| 14 | - 'span', | |
| 15 | - \Yii::t('app', 'Корзина'), | |
| 16 | - [ | |
| 17 | - 'class' => 'sub-title', | |
| 18 | - ] | |
| 19 | - ), | |
| 12 | +echo Html::a( | |
| 13 | + Html::tag( | |
| 14 | + 'span', | |
| 15 | + \Yii::t('app', 'Корзина'), | |
| 20 | 16 | [ |
| 21 | - '/checkout/index', | |
| 22 | - ], | |
| 23 | - [ | |
| 24 | - 'class' => 'cart-item-link', | |
| 17 | + 'class' => 'sub-title', | |
| 25 | 18 | ] |
| 26 | - ); | |
| 19 | + ), | |
| 20 | + [ | |
| 21 | + '#', | |
| 22 | + ], | |
| 23 | + [ | |
| 24 | + 'class' => 'cart-item-link', | |
| 25 | + 'data-toggle' => 'modal', | |
| 26 | + 'data-target' => '#basket-modal', | |
| 27 | + ] | |
| 28 | +); | |
| 27 | 29 | ?> | ... | ... |
frontend/views/layouts/main.php
| ... | ... | @@ -6,6 +6,7 @@ |
| 6 | 6 | * @var User $user |
| 7 | 7 | */ |
| 8 | 8 | use artbox\core\components\SeoComponent; |
| 9 | + use artbox\core\helpers\ImageHelper; | |
| 9 | 10 | use artbox\core\models\Feedback; |
| 10 | 11 | use artbox\core\models\Image; |
| 11 | 12 | use artbox\core\models\Page; |
| ... | ... | @@ -256,27 +257,29 @@ _________________________________________________________ --> |
| 256 | 257 | </ul> |
| 257 | 258 | </div> |
| 258 | 259 | <!--/.nav-collapse --> |
| 259 | - | |
| 260 | - <div class="cart-item" id="cart"> | |
| 261 | - <span class="badge">0</span> | |
| 262 | - <?php | |
| 263 | - echo Html::a( | |
| 264 | - Html::tag( | |
| 265 | - 'span', | |
| 266 | - \Yii::t('app', 'Корзина'), | |
| 267 | - [ | |
| 268 | - 'class' => 'sub-title', | |
| 269 | - ] | |
| 270 | - ), | |
| 271 | - [ | |
| 272 | - '/checkout/index', | |
| 273 | - ], | |
| 274 | - [ | |
| 275 | - 'class' => 'cart-item-link', | |
| 276 | - ] | |
| 277 | - ); | |
| 278 | - ?> | |
| 279 | - </div> | |
| 260 | + | |
| 261 | + <div class="cart-item" id="cart"> | |
| 262 | + <span class="badge">0</span> | |
| 263 | + <?php | |
| 264 | + echo Html::a( | |
| 265 | + Html::tag( | |
| 266 | + 'span', | |
| 267 | + \Yii::t('app', 'Корзина'), | |
| 268 | + [ | |
| 269 | + 'class' => 'sub-title', | |
| 270 | + ] | |
| 271 | + ), | |
| 272 | + [ | |
| 273 | + '#', | |
| 274 | + ], | |
| 275 | + [ | |
| 276 | + 'class' => 'cart-item-link', | |
| 277 | + 'data-toggle' => 'modal', | |
| 278 | + 'data-target' => '#basket-modal', | |
| 279 | + ] | |
| 280 | + ); | |
| 281 | + ?> | |
| 282 | + </div> | |
| 280 | 283 | |
| 281 | 284 | <div class="search-block" id="search"> |
| 282 | 285 | <?php |
| ... | ... | @@ -518,6 +521,225 @@ _________________________________________________________ --> |
| 518 | 521 | </div> |
| 519 | 522 | </div> |
| 520 | 523 | <!-- *** FEEDBACK MODAL END *** --> |
| 524 | + | |
| 525 | + <!-- *** MODAL BASKET START *** --> | |
| 526 | + | |
| 527 | + <div class="modal fade" id="basket-modal" tabindex="-1" role="dialog" aria-labelledby="Login" aria-hidden="true"> | |
| 528 | + <div class="modal-dialog modal-lg"> | |
| 529 | + | |
| 530 | + <div class="modal-content"> | |
| 531 | + <div class="modal-header"> | |
| 532 | + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> | |
| 533 | + <h4 class="modal-title callback text-center" id="Login"> | |
| 534 | + <?php | |
| 535 | + echo Html::a( | |
| 536 | + Html::tag( | |
| 537 | + 'span', | |
| 538 | + \Yii::t('app', 'Ваша корзина') | |
| 539 | + ), | |
| 540 | + [ | |
| 541 | + '/checkout/index', | |
| 542 | + ] | |
| 543 | + ); | |
| 544 | + ?> | |
| 545 | + </h4> | |
| 546 | + </div> | |
| 547 | + <div class="modal-body"> | |
| 548 | + <?php | |
| 549 | + /** | |
| 550 | + * @var \artbox\order\models\Basket $basket | |
| 551 | + */ | |
| 552 | + $basket = \Yii::$app->get('basket'); | |
| 553 | + $data = $basket->getData(); | |
| 554 | + $variants = []; | |
| 555 | + if (!empty($data)) { | |
| 556 | + $variants = $basket->findModels(array_keys($data)); | |
| 557 | + } | |
| 558 | + $formatter = \Yii::$app->formatter; | |
| 559 | + $sum = 0; | |
| 560 | + $sumDiscount = 0; | |
| 561 | + foreach ($basket->findModels(array_keys($basket->getData())) as $variant) { | |
| 562 | + $count = $basket->getItem($variant->id)[ 'count' ]; | |
| 563 | + $sum += $variant->price * $count; | |
| 564 | + if (!empty($variant->price_old)) { | |
| 565 | + $sumDiscount += ( $variant->price_old - $variant->price ) * $count; | |
| 566 | + } | |
| 567 | + } | |
| 568 | + | |
| 569 | + if (!empty($variants)) { | |
| 570 | + ?> | |
| 571 | + <div class="clearfix"> | |
| 572 | + <div class="col-md-12 clearfix"> | |
| 573 | + <table class="table"> | |
| 574 | + <thead> | |
| 575 | + <tr> | |
| 576 | + <th colspan="2"><?php echo \Yii::t('app', 'Продукт'); ?></th> | |
| 577 | + <th><?php echo \Yii::t('app', 'Количество'); ?></th> | |
| 578 | + <th><?php echo \Yii::t('app', 'Цена за единицу'); ?></th> | |
| 579 | + <th><?php echo \Yii::t('app', 'Скидка'); ?></th> | |
| 580 | + <th colspan="2"><?php echo \Yii::t('app', 'Всего'); ?></th> | |
| 581 | + </tr> | |
| 582 | + </thead> | |
| 583 | + <tbody> | |
| 584 | + <?php | |
| 585 | + foreach ($variants as $variant) { | |
| 586 | + $count = $basket->getItem($variant->id)[ 'count' ]; | |
| 587 | + ?> | |
| 588 | + <tr data-id="<?php echo $variant->id; ?>" class="product-row-basket"> | |
| 589 | + <td> | |
| 590 | + <?php | |
| 591 | + echo Html::a( | |
| 592 | + ImageHelper::set($variant->product->image->getPath()) | |
| 593 | + ->fillResize(50, 50) | |
| 594 | + ->renderImage( | |
| 595 | + [ | |
| 596 | + 'alt' => $variant->product->lang->title, | |
| 597 | + 'title' => $variant->product->lang->title, | |
| 598 | + ] | |
| 599 | + ), | |
| 600 | + [ | |
| 601 | + '/product/view', | |
| 602 | + 'id' => $variant->product->id, | |
| 603 | + ], | |
| 604 | + [ | |
| 605 | + 'target' => '_blank', | |
| 606 | + ] | |
| 607 | + ); | |
| 608 | + ?> | |
| 609 | + </td> | |
| 610 | + <td> | |
| 611 | + <?php | |
| 612 | + echo Html::a( | |
| 613 | + $variant->product->lang->title, | |
| 614 | + [ | |
| 615 | + '/product/view', | |
| 616 | + 'id' => $variant->product->id, | |
| 617 | + ], | |
| 618 | + [ | |
| 619 | + 'target' => '_blank', | |
| 620 | + ] | |
| 621 | + ); | |
| 622 | + ?> | |
| 623 | + </td> | |
| 624 | + <td> | |
| 625 | + <?php | |
| 626 | + echo Html::input( | |
| 627 | + 'number', | |
| 628 | + '', | |
| 629 | + $count, | |
| 630 | + [ | |
| 631 | + 'class' => 'form-control increase-product-basket', | |
| 632 | + ] | |
| 633 | + ); | |
| 634 | + ?> | |
| 635 | + </td> | |
| 636 | + <td> | |
| 637 | + <?php | |
| 638 | + echo $formatter->asDecimal($variant->price ? : 0, 2); | |
| 639 | + ?> | |
| 640 | + </td> | |
| 641 | + <td> | |
| 642 | + <?php | |
| 643 | + if (!empty($variant->price_old)) { | |
| 644 | + echo $formatter->asDecimal($variant->price_old - $variant->price, 2); | |
| 645 | + } else { | |
| 646 | + echo $formatter->asDecimal(0, 2); | |
| 647 | + } | |
| 648 | + ?> | |
| 649 | + </td> | |
| 650 | + <td> | |
| 651 | + <?php | |
| 652 | + echo $formatter->asDecimal( | |
| 653 | + ( $variant->price ? : 0 ) * $count, | |
| 654 | + 2 | |
| 655 | + ); | |
| 656 | + ?> | |
| 657 | + </td> | |
| 658 | + <td><a href="#" class="remove-product-cart"><i class="fa fa-trash-o"></i></a> | |
| 659 | + </td> | |
| 660 | + </tr> | |
| 661 | + <?php | |
| 662 | + } | |
| 663 | + ?> | |
| 664 | + </tbody> | |
| 665 | + <tfoot> | |
| 666 | + <tr> | |
| 667 | + <th colspan="5"><?php echo \Yii::t('app', 'Всего'); ?></th> | |
| 668 | + <th colspan="2"><?php echo $formatter->asDecimal($sum, 2); ?></th> | |
| 669 | + </tr> | |
| 670 | + </tfoot> | |
| 671 | + </table> | |
| 672 | + </div> | |
| 673 | + <div class="col-md-12 clearfix"> | |
| 674 | + <div class="box" id="order-summary"> | |
| 675 | + <div class="box-header"> | |
| 676 | + <h3>Итоговый счет</h3> | |
| 677 | + </div> | |
| 678 | + <p class="text-muted small"><?php echo \Yii::t( | |
| 679 | + 'app', | |
| 680 | + 'Стоимость доставки рассчитывается в зависимости от адреса и способа доставки' | |
| 681 | + ); ?></p> | |
| 682 | + | |
| 683 | + <div class="table-responsive"> | |
| 684 | + <table class="table"> | |
| 685 | + <tbody> | |
| 686 | + <tr> | |
| 687 | + <td><?php echo \Yii::t('app', 'Всего за товары'); ?></td> | |
| 688 | + <th><?php echo $formatter->asDecimal($sum, 2); ?></th> | |
| 689 | + </tr> | |
| 690 | + <tr> | |
| 691 | + <td><?php echo \Yii::t('app', 'Сумма скидки'); ?></td> | |
| 692 | + <th><?php echo $formatter->asDecimal($sumDiscount, 2); ?></th> | |
| 693 | + </tr> | |
| 694 | + <tr class="total"> | |
| 695 | + <td><?php echo \Yii::t('app', 'Итого к оплате'); ?></td> | |
| 696 | + <th><?php echo $formatter->asDecimal($sum, 2); ?></th> | |
| 697 | + </tr> | |
| 698 | + </tbody> | |
| 699 | + </table> | |
| 700 | + </div> | |
| 701 | + </div> | |
| 702 | + </div> | |
| 703 | + <div class="col-md-12 clearfix"> | |
| 704 | + | |
| 705 | + <div class="box"> | |
| 706 | + | |
| 707 | + <div class="table-responsive"> | |
| 708 | + | |
| 709 | + | |
| 710 | + </div> | |
| 711 | + <!-- /.table-responsive --> | |
| 712 | + | |
| 713 | + <div class="box-footer"> | |
| 714 | + <div class="pull-right"> | |
| 715 | + <?php | |
| 716 | + echo Html::a( | |
| 717 | + \Yii::t( | |
| 718 | + 'app', | |
| 719 | + ' Оформить заказ ' | |
| 720 | + ) . Html::icon('chevron-right', [ 'prefix' => 'fa fa-' ]), | |
| 721 | + [ 'checkout/info' ], | |
| 722 | + [ | |
| 723 | + 'class' => 'btn btn-success', | |
| 724 | + ] | |
| 725 | + ) | |
| 726 | + ?> | |
| 727 | + </div> | |
| 728 | + </div> | |
| 729 | + </div> | |
| 730 | + | |
| 731 | + </div> | |
| 732 | + </div> | |
| 733 | + <?php | |
| 734 | + } else { | |
| 735 | + echo Html::tag('p', \Yii::t('app', 'Ваша корзина пуста!')); | |
| 736 | + } | |
| 737 | + ?> | |
| 738 | + </div> | |
| 739 | + </div> | |
| 740 | + </div> | |
| 741 | + </div> | |
| 742 | + <!-- *** MODAL BASKET END *** --> | |
| 521 | 743 | <?php |
| 522 | 744 | if (!$isHome) { |
| 523 | 745 | ?> | ... | ... |
frontend/views/site/_slider_product.php
| ... | ... | @@ -31,6 +31,37 @@ |
| 31 | 31 | ); |
| 32 | 32 | ?> |
| 33 | 33 | </div> |
| 34 | + | |
| 35 | + <div class="vcovers"> | |
| 36 | + <?php | |
| 37 | + $qwe = 0; | |
| 38 | + while($qwe < 5){?> | |
| 39 | + | |
| 40 | + <div class="vcover"> | |
| 41 | + <?php | |
| 42 | + echo Html::a( | |
| 43 | + Html::img( | |
| 44 | + ImageHelper::set( | |
| 45 | + $product->image ? $product->image->getPath() : '@frontend/web/img/no-image.png' | |
| 46 | + ) | |
| 47 | + ->fillResize(40, 40) | |
| 48 | + ->render(), | |
| 49 | + [ | |
| 50 | + 'class' => 'img-responsive-image1', | |
| 51 | + ] | |
| 52 | + ), | |
| 53 | + [ | |
| 54 | + 'product/view', | |
| 55 | + 'id' => $product->id, | |
| 56 | + ] | |
| 57 | + ); | |
| 58 | + ?> | |
| 59 | + </div> | |
| 60 | + <?php | |
| 61 | + $qwe++; | |
| 62 | + } | |
| 63 | + ?> | |
| 64 | + </div> | |
| 34 | 65 | <!-- /.image --> |
| 35 | 66 | <div class="text"> |
| 36 | 67 | <h3> | ... | ... |
frontend/web/css/style.css
| ... | ... | @@ -4731,4 +4731,22 @@ a i.fa, button i.fa, span.fa { |
| 4731 | 4731 | |
| 4732 | 4732 | .box .btn.btn-template-main { |
| 4733 | 4733 | margin-bottom: 5px; |
| 4734 | +} | |
| 4735 | + | |
| 4736 | +.vcovers { | |
| 4737 | + position: absolute; | |
| 4738 | + top: 0; | |
| 4739 | + right: 20px; | |
| 4740 | + height: 260px; | |
| 4741 | + overflow: hidden; | |
| 4742 | +} | |
| 4743 | + | |
| 4744 | +.vcovers .vcover img.img-responsive-image1 { | |
| 4745 | + border: 1px solid #eeeeee; | |
| 4746 | + margin: 5px 0px; | |
| 4747 | + transition:0.2s; | |
| 4748 | +} | |
| 4749 | + | |
| 4750 | +.vcovers .vcover img:hover{ | |
| 4751 | + border: 1px solid rgb(0, 91, 172); | |
| 4734 | 4752 | } |
| 4735 | 4753 | \ No newline at end of file | ... | ... |