Improved lighthouse score for default theme

This commit is contained in:
jitendra 2020-10-05 17:13:36 +05:30
parent 4292a400e0
commit 77655fd95d
49 changed files with 128 additions and 99 deletions

View File

@ -537,6 +537,7 @@ class CartRule
}
$coupons = $this->cartRuleCouponRepository->where(['code' => $cart->coupon_code])->get();
foreach ($coupons as $coupon) {
if (in_array($coupon->cart_rule_id, explode(',', $cart->applied_cart_rule_ids))) {
return true;

View File

@ -293,6 +293,7 @@ class Cart
public function getItemByProduct($data)
{
$items = $this->getCart()->all_items;
foreach ($items as $item) {
if ($item->product->getTypeInstance()->compareOptions($item->additional, $data['additional'])) {
if (isset($data['additional']['parent_id'])) {
@ -402,6 +403,7 @@ class Cart
public function getCart(): ?\Webkul\Checkout\Contracts\Cart
{
$cart = null;
if ($this->getCurrentCustomer()->check()) {
$cart = $this->cartRepository->findOneWhere([
'customer_id' => $this->getCurrentCustomer()->user()->id,
@ -591,6 +593,7 @@ class Cart
if (! $cart = $this->getCart()) {
return false;
}
if (count($cart->items) === 0) {
$this->cartRepository->delete($cart->id);
@ -604,7 +607,9 @@ class Cart
if ($validationResult->isItemInactive()) {
$this->removeItem($item->id);
$isInvalid = true;
session()->flash('info', __('shop::app.checkout.cart.item.inactive'));
}

View File

@ -17,7 +17,11 @@ class ChannelTableSeeder extends Seeder
'name' => 'Default',
'theme' => 'velocity',
'root_category_id' => 1,
'home_page_content' => '<p>@include("shop::home.slider") @include("shop::home.featured-products") @include("shop::home.new-products")</p><div class="banner-container"><div class="left-banner"><img src="https://s3-ap-southeast-1.amazonaws.com/cdn.uvdesk.com/website/1/201902045c581f9494b8a1.png" /></div><div class="right-banner"><img src="https://s3-ap-southeast-1.amazonaws.com/cdn.uvdesk.com/website/1/201902045c581fb045cf02.png" /> <img src="https://s3-ap-southeast-1.amazonaws.com/cdn.uvdesk.com/website/1/201902045c581fc352d803.png" /></div></div>',
'home_page_content' => '<p>@include("shop::home.slider") @include("shop::home.featured-products") @include("shop::home.new-products")</p>
<div class="banner-container">
<div class="left-banner"><img data-src="themes/default/assets/images/1.webp" class="lazyload" alt="test" width="720" height="720" /></div>
<div class="right-banner"><img data-src="themes/default/assets/images/2.webp" class="lazyload" alt="test" width="460" height="330" /> <img data-src="themes/default/assets/images/3.webp" class="lazyload" alt="test" width="460" height="330" /></div>
</div>',
'footer_content' => '<div class="list-container"><span class="list-heading">Quick Links</span><ul class="list-group"><li><a href="@php echo route(\'shop.cms.page\', \'about-us\') @endphp">About Us</a></li><li><a href="@php echo route(\'shop.cms.page\', \'return-policy\') @endphp">Return Policy</a></li><li><a href="@php echo route(\'shop.cms.page\', \'refund-policy\') @endphp">Refund Policy</a></li><li><a href="@php echo route(\'shop.cms.page\', \'terms-conditions\') @endphp">Terms and conditions</a></li><li><a href="@php echo route(\'shop.cms.page\', \'terms-of-use\') @endphp">Terms of Use</a></li><li><a href="@php echo route(\'shop.cms.page\', \'contact-us\') @endphp">Contact Us</a></li></ul></div><div class="list-container"><span class="list-heading">Connect With Us</span><ul class="list-group"><li><a href="#"><span class="icon icon-facebook"></span>Facebook </a></li><li><a href="#"><span class="icon icon-twitter"></span> Twitter </a></li><li><a href="#"><span class="icon icon-instagram"></span> Instagram </a></li><li><a href="#"> <span class="icon icon-google-plus"></span>Google+ </a></li><li><a href="#"> <span class="icon icon-linkedin"></span>LinkedIn </a></li></ul></div>',
'name' => 'Default',
'default_locale_id' => 1,

View File

@ -1,3 +1,4 @@
@if (request()->route()->getName() == 'shop.checkout.onepage.index')
<script src="https://www.paypal.com/sdk/js?client-id={{core()->getConfigData('sales.paymentmethods.paypal_smart_button.client_id')}}"></script>
<script>
@ -51,4 +52,5 @@
paypal.Buttons(options).render(".paypal-button-container");
});
});
</script>
</script>
@endif

View File

@ -35,10 +35,10 @@ class ProductImage extends AbstractProduct
if (! $product->parent_id && ! count($images)) {
$images[] = [
'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.png'),
'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.png'),
'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png'),
'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png'),
'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.webp'),
'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.webp'),
'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'),
'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'),
];
}
@ -64,10 +64,10 @@ class ProductImage extends AbstractProduct
];
} else {
$image = [
'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.png'),
'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.png'),
'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png'),
'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.png'),
'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.webp'),
'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.webp'),
'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'),
'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'),
];
}

View File

@ -23,6 +23,7 @@
"dependencies": {
"accounting": "^0.4.1",
"ez-plus": "^1.2.1",
"lazysizes": "^5.2.2",
"vee-validate": "^2.2.15",
"vue-flatpickr": "^2.3.0",
"vue-slider-component": "^3.1.0"

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/shop.js": "/js/shop.js?id=e8a8f56c4e7037f09d9f",
"/css/shop.css": "/css/shop.css?id=5921caa0500dc820d23f"
"/js/shop.js": "/js/shop.js?id=e47aa8374e8e18deedd0",
"/css/shop.css": "/css/shop.css?id=4d6a80790b697b2dc931"
}

View File

@ -7,11 +7,13 @@ import axios from 'axios';
import VueSlider from 'vue-slider-component';
import accounting from 'accounting';
import ImageSlider from './components/image-slider';
import 'lazysizes';
window.jQuery = window.$ = $;
window.Vue = Vue;
window.VeeValidate = VeeValidate;
window.axios = axios;
require("./bootstrap");
require("ez-plus/src/jquery.ez-plus.js");

View File

@ -1,22 +1,23 @@
<template>
<transition name="slide">
<div class="slider-content" v-if="images.length>0">
<transition name="slide">
<div class="slider-content" v-if="images.length > 0">
<ul class="slider-images">
<li v-for="(image, index) in images" :key="index" v-bind:class="{'show': index==currentIndex}">
<img class="slider-item" :src="image" />
<div class="show-content" v-bind:class="{'show': index==currentIndex}" :key="index" v-html="content[index]"></div>
</li>
</ul>
<ul class="slider-images">
<li v-for="(image, index) in images" :key="index" v-bind:class="{'show': index==currentIndex}">
<img class="slider-item" :alt="image.title" :src="image.path"/>
<div class="show-content" v-bind:class="{'show': index==currentIndex}" :key="index" v-html="content[index]"></div>
</li>
</ul>
<div class="slider-control" v-if="images_loaded">
<span class="icon dark-left-icon slider-left" @click="changeIndexLeft"></span>
<span class="icon light-right-icon slider-right" @click="changeIndexRight"></span>
</div>
<div class="slider-control" v-if="images_loaded">
<span class="icon dark-left-icon slider-left" @click="changeIndexLeft"></span>
<span class="icon light-right-icon slider-right" @click="changeIndexRight"></span>
</div>
</div>
</transition>
</transition>
</template>
<script>
export default {
@ -37,11 +38,14 @@ export default {
return {
images: [],
currentIndex: -1,
content: [],
current: false,
images_loaded: false,
currentIndex: -1,
content: [],
current: false,
images_loaded: false,
};
},
@ -56,17 +60,21 @@ export default {
},
setProps() {
var this_this = this;
var self = this;
this.slides.forEach(function(slider) {
this_this.images.push(this_this.public_path+'/storage/'+slider.path);
self.images.push({
'path': self.public_path + '/storage/' + slider.path,
'title' : slider.title
});
this_this.content.push(slider.content);
self.content.push(slider.content);
});
this.currentIndex = 0;
if(this.images.length == 0) {
this.images.push = "vendor/webkul/shop/assets/images/banner.png";
if (this.images.length == 0) {
this.images.push = {'path': 'vendor/webkul/shop/assets/images/banner.png'};
} else {
this.images_loaded = true;
}
@ -90,24 +98,19 @@ export default {
}
};
</script>
<style>
.slide-enter-active {
transition: all 0.2s cubic-bezier(0.55, 0.085, 0.68, 0.53);
}
.slide-leave-active {
transition: all 0.25s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.slide-enter, .slide-leave-to {
-webkit-transform: scaleY(0) translateZ(0);
transform: scaleY(0) translateZ(0);
opacity: 0;
}
</style>

View File

@ -1,4 +1,4 @@
@import url("https://fonts.googleapis.com/css?family=Montserrat:400,500");
@import url("https://fonts.googleapis.com/css?family=Montserrat:400,500&display=swap");
//shop variables
$brand-color: #0031F0;

View File

@ -33,7 +33,7 @@
<div class="item mt-5">
<div class="item-image" style="margin-right: 15px;">
<a href="{{ route('shop.productOrCategory.index', $url_key) }}"><img src="{{ $productBaseImage['medium_image_url'] }}" /></a>
<a href="{{ route('shop.productOrCategory.index', $url_key) }}"><img src="{{ $productBaseImage['medium_image_url'] }}" alt="" /></a>
</div>
<div class="item-details">

View File

@ -41,7 +41,7 @@
@php
$images = $item->product->getTypeInstance()->getBaseImage($item);
@endphp
<img src="{{ $images['small_image_url'] }}" />
<img src="{{ $images['small_image_url'] }}" alt=""/>
</div>
<div class="item-details">

View File

@ -78,7 +78,7 @@
<div class="item mb-5" style="margin-bottom: 5px;">
<div class="item-image">
<img src="{{ $productBaseImage['medium_image_url'] }}" />
<img src="{{ $productBaseImage['medium_image_url'] }}" alt=""/>
</div>
<div class="item-details">

View File

@ -111,7 +111,7 @@
</div>
@if (core()->getConfigData('sales.orderSettings.invoice_slip_design.logo'))
<div class="image">
<img class="logo" src="{{ Storage::url(core()->getConfigData('sales.orderSettings.invoice_slip_design.logo')) }}"/>
<img class="logo" src="{{ Storage::url(core()->getConfigData('sales.orderSettings.invoice_slip_design.logo')) }}" alt=""/>
</div>
@endif
<div class="merchant-details">

View File

@ -36,7 +36,7 @@
<div class="media-info">
<?php $image = $productImageHelper->getProductBaseImage($review->product); ?>
<a href="{{ route('shop.productOrCategory.index', $review->product->url_key) }}" title="{{ $review->product->name }}">
<img class="media" src="{{ $image['small_image_url'] }}"/>
<img class="media" src="{{ $image['small_image_url'] }}" alt=""/>
</a>
<div class="info">

View File

@ -22,7 +22,7 @@
<div class="account-item-card mt-15 mb-15">
<div class="media-info">
<?php $image = $productImageHelper->getGalleryImages($review->product); ?>
<img class="media" src="{{ $image[0]['small_image_url'] }}" />
<img class="media" src="{{ $image[0]['small_image_url'] }}" alt="" />
<div class="info mt-20">
<div class="product-name">{{$review->product->name}}</div>

View File

@ -38,7 +38,7 @@
$image = $item->product->getTypeInstance()->getBaseImage($item);
@endphp
<img class="media" src="{{ $image['small_image_url'] }}" />
<img class="media" src="{{ $image['small_image_url'] }}" alt="" />
<div class="info">
<div class="product-name">

View File

@ -1,5 +1,5 @@
@if ($logo = core()->getCurrentChannel()->logo_url)
<img src="{{ $logo }}" alt="{{ config('app.name') }}" style="height: 40px; width: 110px;"/>
@else
<img src="{{ bagisto_asset('images/logo.svg') }}">
<img src="{{ bagisto_asset('images/logo.svg') }}" alt="">
@endif

View File

@ -58,7 +58,7 @@
<img
class="image-wrapper"
:src="product['{{ $attribute['code'] }}']"
:onerror="`this.src='${baseUrl}/vendor/webkul/ui/assets/images/product/large-product-placeholder.png'`" />
:onerror="`this.src='${baseUrl}/vendor/webkul/ui/assets/images/product/large-product-placeholder.png'`" alt="" />
</a>
@break
@ -112,7 +112,7 @@
<img
class="image-wrapper"
:src="'storage/' + product.product['{{ $attribute['code'] }}']"
:onerror="`this.src='${baseUrl}/vendor/webkul/ui/assets/images/product/large-product-placeholder.png'`" />
:onerror="`this.src='${baseUrl}/vendor/webkul/ui/assets/images/product/large-product-placeholder.png'`" alt="" />
</a>
@break;
@default

View File

@ -4,7 +4,7 @@
<div class="featured-heading">
{{ __('shop::app.home.featured-products') }}<br/>
<span class="featured-seperator" style="color:lightgrey;">_____</span>
<span class="featured-seperator" style="color: #d7dfe2;">_____</span>
</div>
<div class="featured-grid product-grid-4">

View File

@ -4,7 +4,7 @@
<div class="featured-heading">
{{ __('shop::app.home.new-products') }}<br/>
<span class="featured-seperator" style="color:lightgrey;">_____</span>
<span class="featured-seperator" style="color: #d7dfe2;">_____</span>
</div>
<div class="product-grid-4">

View File

@ -1,14 +1,14 @@
<section class="news-update">
<div class="news-update-grid">
<div class="block1">
<img src="vendor/webkul/shop/assets/images/1.png" />
<img src="vendor/webkul/shop/assets/images/1.png" alt="" />
</div>
<div class="block2">
<div class="sub-block1">
<img src="vendor/webkul/shop/assets/images/2.png" />
<img src="vendor/webkul/shop/assets/images/2.png" alt="" />
</div>
<div class="sub-block2">
<img src="vendor/webkul/shop/assets/images/3.png" />
<img src="vendor/webkul/shop/assets/images/3.png" alt="" />
</div>
</div>
</div>

View File

@ -1,3 +1,5 @@
<section class="slider-block">
<image-slider :slides='@json($sliderData)' public_path="{{ url()->to('/') }}"></image-slider>
</section>
@if (count($sliderData))
<section class="slider-block" style="height: 500px">
<image-slider :slides='@json($sliderData)' public_path="{{ url()->to('/') }}"></image-slider>
</section>
@endif

View File

@ -29,11 +29,11 @@
<div class="list-container">
@if(core()->getConfigData('customer.settings.newsletter.subscription'))
<span class="list-heading">{{ __('shop::app.footer.subscribe-newsletter') }}</span>
<label class="list-heading" for="subscribe-field">{{ __('shop::app.footer.subscribe-newsletter') }}</label>
<div class="form-container">
<form action="{{ route('shop.subscribe') }}">
<div class="control-group" :class="[errors.has('subscriber_email') ? 'has-error' : '']">
<input type="email" class="control subscribe-field" name="subscriber_email" placeholder="Email Address" required><br/>
<input type="email" id="subscribe-field" class="control subscribe-field" name="subscriber_email" placeholder="Email Address" required><br/>
<button class="btn btn-md btn-primary">{{ __('shop::app.subscription.subscribe') }}</button>
</div>
@ -49,10 +49,10 @@
}
?>
<span class="list-heading">{{ __('shop::app.footer.locale') }}</span>
<label class="list-heading" for="locale-switcher">{{ __('shop::app.footer.locale') }}</label>
<div class="form-container">
<div class="control-group">
<select class="control locale-switcher" onchange="window.location.href = this.value" @if (count(core()->getCurrentChannel()->locales) == 1) disabled="disabled" @endif>
<select class="control locale-switcher" id="locale-switcher" onchange="window.location.href = this.value" @if (count(core()->getCurrentChannel()->locales) == 1) disabled="disabled" @endif>
@foreach (core()->getCurrentChannel()->locales as $locale)
@if (isset($serachQuery))
@ -67,10 +67,10 @@
</div>
<div class="currency">
<span class="list-heading">{{ __('shop::app.footer.currency') }}</span>
<label class="list-heading" for="currency-switcher">{{ __('shop::app.footer.currency') }}</label>
<div class="form-container">
<div class="control-group">
<select class="control locale-switcher" onchange="window.location.href = this.value">
<select class="control locale-switcher" id="currency-switcher" onchange="window.location.href = this.value">
@foreach (core()->getCurrentChannel()->currencies as $currency)
@if (isset($serachQuery))

View File

@ -11,11 +11,11 @@
<div class="left-content">
<ul class="logo-container">
<li>
<a href="{{ route('shop.home.index') }}">
<a href="{{ route('shop.home.index') }}" aria-label="Logo">
@if ($logo = core()->getCurrentChannel()->logo_url)
<img class="logo" src="{{ $logo }}" />
<img class="logo" src="{{ $logo }}" alt="" />
@else
<img class="logo" src="{{ bagisto_asset('images/logo.svg') }}" />
<img class="logo" src="{{ bagisto_asset('images/logo.svg') }}" alt="" />
@endif
</a>
</li>
@ -24,12 +24,14 @@
<ul class="search-container">
<li class="search-group">
<form role="search" action="{{ route('shop.search.index') }}" method="GET" style="display: inherit;">
<label for="search-bar" style="position: absolute; z-index: -1;">Search</label>
<input
required
name="term"
type="search"
value="{{ $term }}"
class="search-field"
id="search-bar"
placeholder="{{ __('shop::app.header.search-text') }}"
>
@ -37,7 +39,7 @@
<div class="search-icon-wrapper">
<button class="" class="background: none;">
<button class="" class="background: none;" aria-label="Search">
<i class="icon icon-search"></i>
</button>
</div>
@ -217,17 +219,17 @@
</div>
@push('scripts')
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs" defer></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet" defer></script>
<script type="text/x-template" id="image-search-component-template">
<div>
<label class="image-search-container" for="image-search-container">
<label class="image-search-container" :for="'image-search-container-' + _uid">
<i class="icon camera-icon"></i>
<input type="file" id="image-search-container" ref="image_search_input" v-on:change="uploadImage()"/>
<input type="file" :id="'image-search-container-' + _uid" ref="image_search_input" v-on:change="uploadImage()"/>
<img id="uploaded-image-url" :src="uploaded_image_url"/>
<img :id="'uploaded-image-url-' + + _uid" :src="uploaded_image_url" alt=""/>
</label>
</div>
</script>
@ -271,7 +273,7 @@
net = await mobilenet.load();
const imgElement = document.getElementById('uploaded-image-url');
const imgElement = document.getElementById('uploaded-image-url-' + + self._uid);
try {
const result = await net.classify(imgElement);

View File

@ -5,8 +5,9 @@
$categories = [];
foreach (app('Webkul\Category\Repositories\CategoryRepository')->getVisibleCategoryTree(core()->getCurrentChannel()->root_category_id) as $category) {
if ($category->slug)
if ($category->slug) {
array_push($categories, $category);
}
}
?>

View File

@ -10,9 +10,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta http-equiv="content-language" content="{{ app()->getLocale() }}">
<link rel="stylesheet" href="{{ asset('vendor/webkul/ui/assets/css/ui.css') }}">
<link rel="stylesheet" href="{{ bagisto_asset('css/shop.css') }}">
<link rel="stylesheet" href="{{ asset('vendor/webkul/ui/assets/css/ui.css') }}">
@if ($favicon = core()->getCurrentChannel()->favicon_url)
<link rel="icon" sizes="16x16" href="{{ $favicon }}" />
@ -56,7 +56,7 @@
@yield('slider')
<div class="content-container">
<main class="content-container">
{!! view_render_event('bagisto.shop.layout.content.before') !!}
@ -64,7 +64,7 @@
{!! view_render_event('bagisto.shop.layout.content.after') !!}
</div>
</main>
</div>

View File

@ -8,7 +8,7 @@
title="{{ __('shop::app.customer.compare.add-tooltip') }}"
@click="addProductToCompare"
style="cursor: pointer">
<img src="{{ asset('themes/default/assets/images/compare_arrows.png') }}" />
<img src="{{ asset('themes/default/assets/images/compare_arrows.png') }}" alt="" />
</a>
</script>

View File

@ -31,7 +31,7 @@
<div class="category-block" @if ($category->display_mode == 'description_only') style="width: 100%" @endif>
<div class="hero-image mb-35">
@if (!is_null($category->image))
<img class="logo" src="{{ $category->image_url }}" />
<img class="logo" src="{{ $category->image_url }}" alt="" />
@endif
</div>

View File

@ -14,7 +14,7 @@
<div class="product-image">
<a href="{{ route('shop.productOrCategory.index', $product->url_key) }}" title="{{ $product->name }}">
<img src="{{ $productBaseImage['medium_image_url'] }}" onerror="this.src='{{ asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.png') }}'"/>
<img src="{{ $productBaseImage['medium_image_url'] }}" onerror="this.src='{{ asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.png') }}'" alt="" height="500"/>
</a>
</div>

View File

@ -23,7 +23,7 @@
<i class="icon grid-view-icon"></i>
</span>
@else
<a href="{{ $toolbarHelper->getModeUrl('grid') }}" class="grid-view">
<a href="{{ $toolbarHelper->getModeUrl('grid') }}" class="grid-view" aria-label="Grid">
<i class="icon grid-view-icon"></i>
</a>
@endif
@ -33,16 +33,16 @@
<i class="icon list-view-icon"></i>
</span>
@else
<a href="{{ $toolbarHelper->getModeUrl('list') }}" class="list-view">
<a href="{{ $toolbarHelper->getModeUrl('list') }}" class="list-view" aria-label="list">
<i class="icon list-view-icon"></i>
</a>
@endif
</div>
<div class="sorter">
<label>{{ __('shop::app.products.sort-by') }}</label>
<label for="sort-by-toolbar">{{ __('shop::app.products.sort-by') }}</label>
<select onchange="window.location.href = this.value">
<select onchange="window.location.href = this.value" id="sort-by-toolbar">
@foreach ($toolbarHelper->getAvailableOrders() as $key => $order)
@ -56,9 +56,9 @@
</div>
<div class="limiter">
<label>{{ __('shop::app.products.show') }}</label>
<label for="show-toolbar">{{ __('shop::app.products.show') }}</label>
<select onchange="window.location.href = this.value">
<select onchange="window.location.href = this.value" id="show-toolbar">
@foreach ($toolbarHelper->getAvailableLimits() as $limit)

View File

@ -16,7 +16,7 @@
<div class="product-image">
<a href="{{ route('shop.productOrCategory.index', $product->url_key) }}" title="{{ $product->name }}">
<img src="{{ $productBaseImage['medium_image_url'] }}" />
<img src="{{ $productBaseImage['medium_image_url'] }}" alt="" />
</a>
</div>

View File

@ -18,7 +18,7 @@
<div class="product-info">
<div class="product-image">
<a href="{{ route('shop.productOrCategory.index', $product->url_key) }}" title="{{ $product->name }}">
<img src="{{ $productBaseImage['medium_image_url'] }}" />
<img src="{{ $productBaseImage['medium_image_url'] }}" alt="" />
</a>
</div>

View File

@ -28,7 +28,7 @@
@elseif ($attribute['type'] == 'image' && $attribute['value'])
<td>
<a href="{{ route('shop.product.file.download', [$product->product_id, $attribute['id']])}}">
<img src="{{ Storage::url($attribute['value']) }}" style="height: 20px; width: 20px;"/>
<img src="{{ Storage::url($attribute['value']) }}" style="height: 20px; width: 20px;" alt=""/>
</a>
</td>
@else

View File

@ -50,7 +50,7 @@
<span v-if="attribute.swatch_type == 'color'" :style="{ background: option.swatch_value }"></span>
<img v-if="attribute.swatch_type == 'image'" :src="option.swatch_value" />
<img v-if="attribute.swatch_type == 'image'" :src="option.swatch_value" alt="" />
<span v-if="attribute.swatch_type == 'text'">
@{{ option.label }}

View File

@ -30,7 +30,7 @@
</li>
<li class="thumb-frame" v-for='(thumb, index) in thumbs' @mouseover="changeImage(thumb)" :class="[thumb.large_image_url == currentLargeImageUrl ? 'active' : '']" id="thumb-frame">
<img :src="thumb.small_image_url"/>
<img :src="thumb.small_image_url" alt=""/>
</li>
<li class="gallery-control bottom" @click="moveThumbs('bottom')" v-if="(thumbs.length > 4) && this.is_move.down">
@ -40,7 +40,7 @@
</ul>
<div class="product-hero-image" id="product-hero-image">
<img :src="currentLargeImageUrl" id="pro-img" :data-image="currentOriginalImageUrl"/>
<img :src="currentLargeImageUrl" id="pro-img" :data-image="currentOriginalImageUrl" alt=""/>
@auth('customer')
<a @if ($wishListHelper->getWishlistProduct($product)) class="add-to-wishlist already" @else class="add-to-wishlist" @endif href="{{ route('customer.wishlist.add', $product->product_id) }}">

View File

@ -50,7 +50,7 @@
<script type="text/x-template" id="image-search-result-component-template">
<div class="image-search-result">
<div class="searched-image">
<img :src="searched_image_url"/>
<img :src="searched_image_url" alt=""/>
</div>
<div class="searched-terms">

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

View File

@ -19,3 +19,9 @@
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
<IfModule mod_expires.c>
<filesMatch ".(css|jpg|jpeg|png|gif|js|svg|ico|webp)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
</IfModule>