Commit aaf8d6bb by liumengfei

Merge branch 'developer' into production

parents 5974a3f3 eb308e39
/app/etc/config.php
/.gitignore
cache
composer_home
log
page_cache
view_preprocessed
static
errors
media
opt
/app/etc/env.php
generated
var
.idea
/.php_cs.cache
/app/design/frontend/Joshine/breeze/Magento_Theme/templates/root.phtml
/pub/feed
/lib/web/images/loader-1.gif
/lib/web/images/loader-2.gif
......@@ -19,6 +19,8 @@ use Magento\Store\Model\StoreManagerInterface;
use Magento\Catalog\Model\CategoryList;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Eav\Api\AttributeRepositoryInterface;
use Magento\Store\Model\Website;
use Magento\ConfigurableProduct\Model\Product\Type\Configurable;
/**
* Class SomeCommand
*/
......@@ -46,7 +48,10 @@ class GoogleFeed extends Command
private $scopeConfigInterface;
/* @var AttributeRepositoryInterface */
private $attributeRepositoryInterface;
/* @var Website */
private $webSite;
/* @var Configurable */
private $configurable;
/*table title*/
private $columns = array(
'id',
......@@ -143,7 +148,9 @@ class GoogleFeed extends Command
StoreManagerInterface $storeManager,
CategoryList $categoryList,
ScopeConfigInterface $scopeConfigInterface,
AttributeRepositoryInterface $attributeRepositoryInterface
AttributeRepositoryInterface $attributeRepositoryInterface,
Website $webSite,
Configurable $configurable
)
{
$this->state = $state;
......@@ -158,6 +165,8 @@ class GoogleFeed extends Command
$this->categoryList = $categoryList;
$this->scopeConfigInterface = $scopeConfigInterface;
$this->attributeRepositoryInterface = $attributeRepositoryInterface;
$this->webSite = $webSite;
$this->configurable = $configurable;
parent::__construct();
}
......@@ -196,7 +205,6 @@ class GoogleFeed extends Command
$criteria = $this->searchCriteriaBuilder
->addFilter('status', '1', 'eq')
->addFilter('visibility', '4', 'eq')
->addFilter('type_id','simple','eq')
->addFilter('category_id',$categoryId,'in')
->create();
......@@ -268,8 +276,8 @@ class GoogleFeed extends Command
$data['google product category'] = $categoryGoogleProductCategory[$categoryId]['GoogleProductCategory'];
$data['product type'] = $categoryGoogleProductCategory[$categoryId]['product type'];
$data['link'] = $product->getProductUrl();
$data['mobile link'] = $product->getProductUrl();
$data['link'] = $this->getConfigProductUrl($product);
$data['mobile link'] = $data['link'];
$currentStore = $this->storeManager->getStore();
$mediaUrl = $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
......@@ -290,7 +298,7 @@ class GoogleFeed extends Command
$data['price'] = number_format($finalPriceAmt,2) . ' USD';
$data['brand'] = $this->getStoreName();
$mpu = explode('-',$product->getSku())[0];
$mpu = stripos($product->getSku(),'-') ? explode('-',$product->getSku())[0] : explode('_',$product->getSku())[0];
$data['mpn'] = $mpu;
$data['gender'] = 'Female';
$data['age group'] = 'Adult';
......@@ -299,7 +307,7 @@ class GoogleFeed extends Command
$optionText = $attribute->getSource()->getOptionText($product->getColor());
if (in_array($optionText,$this->pattern)){
$colorShort = $this->explode('-',$product->getSku())[1];
$colorShort = stripos($product->getSku(),'-') ? explode('-',$product->getSku())[1] : explode('_',$product->getSku())[1];
$data['color'] = $this->color[$colorShort];
}else{
$data['color'] = $optionText;
......@@ -307,7 +315,11 @@ class GoogleFeed extends Command
$data['size system'] = '';
$attribute = $this->attributeRepositoryInterface->get('4', 'size');
$sizeText = $attribute->getSource()->getOptionText($product->getSize());
$sizeText = $attribute->getSource()->getOptionText($attribute->getSize());
$skuSize = stripos($product->getSku(),'-') ? explode('-',$product->getSku()) : explode('_',$product->getSku());
if (isset($skuSize[2])){
$sizeText = $skuSize[2];
}
$data['size'] = $sizeText;
$data['item group id'] = $mpu;
$data['material'] = '';
......@@ -329,7 +341,9 @@ class GoogleFeed extends Command
*/
public function getStoreName()
{
return $this->storeManager->getStore()->getName();
$webSiteId = $this->storeManager->getStore()->getWebsiteId();
$collection = $this->webSite->load($webSiteId,'website_id');
return $collection->getName();
}
public function getPrdouctType($category,&$name){
......@@ -341,4 +355,20 @@ class GoogleFeed extends Command
return $name;
}
public function getConfigProductUrl($product){
$configProductIds = $this->configurable->getParentIdsByChild($product->getId());
if (!$configProductIds){
return $product->getProductUrl();
}
if(is_array($configProductIds) && !empty($configProductIds)){
$configProductId = $configProductIds[0];
}
if(is_int($configProductIds)){
$configProductId = $configProductIds;
}
$configurablProduct =$this->productRepository->getById($configProductId, false, $product->getStoreId());
$url = $configurablProduct->getUrlModel()->getUrl($configurablProduct);
return $url;
}
}
......@@ -56,13 +56,13 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
<div class="joshine-review-container joshine-clearfix joshine-hidden-md joshine-hidden-sm joshine-hidden-xs">
<h1 class="joshine-review-title">
Customer Reviews
<?= __("Customer Reviews") ?>
</h1>
<div class="joshine-review">
<div class="joshine-review-averate joshine-bg-silver">
<div class="joshine-review-item joshine-review-rating-box">
<div class="name">
Average Rating
<?= __("Average Rating") ?>
</div>
<div class="ave-rate">
<div class="joshine-rating-container">
......@@ -73,7 +73,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
</div>
<div class="joshine-review-item">
<div class="name">
Did the item fit well?
<?= __("Did the item fit well?") ?>
</div>
<?php foreach ($block->getDetailedSummary() as $key => $detail) : ?>
......@@ -89,7 +89,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
</div>
<div class="joshine-review-item add-new-box">
<a href="#review-form" title="Write a review" class="add-new-button joshine-btn joshine-btn-dark joshine-review-add-btn">
Write a review
<?= __("Write a review") ?>
</a>
</div>
</div>
......@@ -129,7 +129,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
<div class="joshine-foot-mark rate-fit">
<div class="rate-fit-item">
<?php $fitsValue = $review->getSizeFits(); ?>
<span><strong class="joshine-font-w-bolder">Size Fits:</strong> <?= $helper->translateSizeFits($fitsValue); ?></span>
<span><strong class="joshine-font-w-bolder"><?= __("Size Fits") ?> :</strong> <?= $helper->translateSizeFits($fitsValue); ?></span>
</div>
</div>
</div>
......@@ -139,7 +139,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
</div>
<div class="joshine-review-list-item-right">
<div class="joshine-review-helpful joshine-font-c-darkgray joshine-font-text">
<span>helpful</span>
<span> <?= __('helpful') ?> </span>
<span class="joshine-like <?= $block->getPlusVotedClass($review->getId()); ?>" data-review-id="<?= $review->getId(); ?>">
<input name="form_key" type="hidden" value="<?= /* @noEscape */ $block->getFormKey(); ?>" />
</span>
......@@ -160,13 +160,13 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
<div class="joshine-review-container-mobile joshine-hidden-lg">
<h4 class="joshine-review-title joshine-font-w-bolder">
Customer Reviews
<?= __("Customer Reviews") ?>
</h4>
<div class="joshine-review">
<div class="joshine-review-averate joshine-bg-silver joshine-clearfix">
<div class="joshine-review-item joshine-review-rating-box">
<div class="name">
Average Rating
<?= __("Average Rating") ?>
</div>
<div class="ave-rate row">
<div class="joshine-rating-container joshine-col-xs-8">
......@@ -177,7 +177,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
</div>
<div class="joshine-review-item">
<div class="name">
Did the item fit well?
<?= __("Did the item fit well?") ?>
</div>
<?php foreach ($block->getDetailedSummary() as $key => $detail) : ?>
<div class="fit-item">
......@@ -194,7 +194,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
<div class="joshine-review-item add-new-box">
<a href="#review-form" title="Write a review" class="add-new-button joshine-btn joshine-btn-dark joshine-review-add-btn">
Write a review
<?= __("Write a review") ?>
</a>
</div>
......@@ -231,7 +231,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
<div class="row joshine-foot-mark">
<?php $fitsValue = $review->getSizeFits(); ?>
<span><strong class="joshine-font-w-bolder">Size Fits:</strong> <?= $helper->translateSizeFits($fitsValue); ?></span>
<span><strong class="joshine-font-w-bolder"><?= __("Size Fits") ?>:</strong> <?= $helper->translateSizeFits($fitsValue); ?></span>
</div>
<div class="row joshine-font-w-bolder" style="font-size: .9em;">
......@@ -653,7 +653,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
<div class="joshine-foot-mark rate-fit">
<div class="rate-fit-item">
<span><strong class="joshine-font-w-bolder">Size Fits:</strong> <span data-review-js="fits"></span></span>
<span><strong class="joshine-font-w-bolder"><?= __("Size Fits") ?>>:</strong> <span data-review-js="fits"></span></span>
</div>
</div>
</div>
......@@ -691,9 +691,8 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
<script type="text/javascript">
require([
'jquery','ko'
], function ($) {
'jquery','ko', 'mage/translate'
], function ($, ko) {
$(".joshine-review-add-btn").on('click',function () {
$(".block.review-add").removeClass('joshine-hidden');
});
......@@ -1144,7 +1143,7 @@ $imagesBlock = $helper->getReviewImagesBlock(15, $block->getProductId());
let review = findReviewById(shouldReviewId);
$(".review-box-title").html(review.title);
let fits_text = fitsTranslate(review.size_fits);
$(".review-box-size").html("Size Fits:"+ fits_text);
$(".review-box-size").html($.mage.__("Size Fits")+ ": " + fits_text);
$(".review-box-content").html(review.detail);
$("#review-box-id").val(review.review_id);
}
......
<div class="joshine-review-filter joshine-clearfix">
<div class="joshine-review-tab joshine-review-tab-container">
<span class="tab active joshine-inline-block joshine-font-c-deepin review-js-with-image">All Reviews</span>
<span class="tab active joshine-inline-block joshine-font-c-deepin review-js-with-image"><?= __("All Reviews")?> </span>
<span class="tab review-with-image joshine-inline-block review-js-with-image joshine-hidden">With Image</span>
</div>
<div class="joshine-review-select-wrap joshine-hidden">
......
......@@ -363,6 +363,14 @@
</depends>
</field>
</group>
<group id="top_country" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Top Country</label>
<field id="top_countrys" translate="label" type="text" sortOrder="10" showInDefault="1">
<label>置顶国家</label>
<comment>国家简码为2个大写字母,多个用英文逗号隔开.</comment>
</field>
</group>
</section>
<section id="admin" translate="label" type="text" sortOrder="20" showInDefault="1">
<label>Admin</label>
......
......@@ -16,7 +16,6 @@
var isMobile = window.matchMedia("(pointer:coarse)").matches;
var productIds = localStorage.getItem('recently_viewed') || '';
if (productIds != '') {
console.log('productIds',productIds)
$.ajax({
url: '/catalog/product/recently',
data: {ids: productIds},
......
......@@ -112,6 +112,11 @@ class Onepage extends \Magento\Framework\View\Element\Template
{
return $this->_scopeConfigInterface->getValue('carriers/flatrate/price');
}
public function getFullFreeShip()
{
return $this->_scopeConfigInterface->getValue('carriers/freeshipping/free_shipping_subtotal');
}
/**
* Get base url for block.
*
......
......@@ -94,13 +94,13 @@ else
<div class="content-wrap">
<div class="free_message">
<div class="msg-title">
<p style="font-weight: bold;">Shipping Fee</p>
<p style="font-weight: bold;"><?= $block->escapeHtml(__('Shipping Fee')) ?> </p>
</div>
<div class="msg-content">
Spend <span style="color:#EB001B;font-size: 16px;font-weight: bold;"><?= $block->escapeHtml(
<?= $block->escapeHtml(__('Spend')) ?> <span style="color:#EB001B;font-size: 16px;font-weight: bold;"><?= $block->escapeHtml(
$this->helper(Magento\Checkout\Helper\Data::class)->formatPrice($difference_price),
['span']
) ?></span> more and get <span style="font-weight: bold;">FREE SHIPPING</span>!
) ?></span> <?= $block->escapeHtml(__('more and get')) ?> <span style="font-weight: bold;"><?= $block->escapeHtml(__('FREE SHIPPING')) ?></span>!
</div>
</div>
</div>
......@@ -112,10 +112,10 @@ else
<div class="content-wrap">
<div class="free_message">
<div class="msg-content">
Spend <span style="color:#EB001B;font-size: 16px;"><?= $block->escapeHtml(
<?= $block->escapeHtml(__('Spend')) ?> <span style="color:#EB001B;font-size: 18px;"><?= $block->escapeHtml(
$this->helper(Magento\Checkout\Helper\Data::class)->formatPrice($difference_price),
['span']
) ?></span> more and get FREE SHIPPING!
) ?></span><?= $block->escapeHtml(__(' more and get')) ?> <span style="font-weight: bold;"><?= $block->escapeHtml(__('FREE SHIPPING')) ?></span>
</div>
</div>
</div>
......@@ -143,7 +143,7 @@ else
data-mage-init='{"shoppingCart":{"emptyCartButton": ".action.clear",
"updateCartActionContainer": "#update_cart_action_container"}}'>
<caption class="table-caption"><?= $block->escapeHtml(__('Shopping Cart Items')) ?></caption>
<thead><td><div class="item-summary">Item Summary</div></td></thead>
<thead><td><div class="item-summary"><?= $block->escapeHtml(__('Item Summary')) ?></div></td></thead>
<tr>
<td class="col item first" scope="col"><span><?= $block->escapeHtml(__('Item')) ?></span></td>
<td class="col price" scope="col"><span><?= $block->escapeHtml(__('Price')) ?></span></td>
......@@ -220,31 +220,29 @@ require(['jquery'], function ($) {
if (isMobile) {
var fixHeight = $('.area-blk-notitle').height();
$(window).scroll(function () {
if(!$('#checkout-step-shipping').is(":visible")) {
$(window).scroll(function () {
$(window).scroll(function () {
var scrollTop = $(document).scrollTop();
var fixTop = $('.area-blk-notitle').offset().top;
var tableTop = $('#shopping-cart-table').offset().top;
var tableHeight = $('#shopping-cart-table').height();
var headerHeight = $('.page-header').height();
if(scrollTop >= fixTop - headerHeight)
var scrollTop = $(document).scrollTop();
var fixTop = $('.area-blk-notitle').offset().top;
var tableTop = $('#shopping-cart-table').offset().top;
var tableHeight = $('#shopping-cart-table').height();
var headerHeight = $('.page-header').height();
if(scrollTop >= fixTop - headerHeight)
{
if(scrollTop < tableTop + tableHeight - fixHeight)
{
if(scrollTop < tableTop + tableHeight - fixHeight)
{
$('.area-blk-notitle .content-wrap').addClass("area-fix");
$('.area-blk-notitle .content-wrap').css({ "top": headerHeight});
}
else
{
$('.area-blk-notitle .content-wrap').removeClass("area-fix");
}
$('.area-blk-notitle .content-wrap').addClass("area-fix");
$('.area-blk-notitle .content-wrap').css({ "top": headerHeight});
}
else {
else
{
$('.area-blk-notitle .content-wrap').removeClass("area-fix");
}
});
}
}
else {
$('.area-blk-notitle .content-wrap').removeClass("area-fix");
}
});
});
}
......
......@@ -7,6 +7,15 @@
?>
<?php
/** @var $block \Magento\Checkout\Block\Cart */
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$_cart = $objectManager->get('\Magento\Checkout\Model\Cart');
$subtotal = $_cart->getGrandTotal();
$subtotalStr = $block->escapeHtml(
$this->helper(Magento\Checkout\Helper\Data::class)->formatPrice($subtotal),
['span']
);
?>
<?php if (!$block->hasError()) :?>
<style>
......@@ -16,13 +25,42 @@
flex-grow: 1;
white-space: nowrap;
}
@media(max-width:768px)
{
.checkout-methods-items .checkout-now{
background-color: #FFFFFF!important;
}
.checkout-methods-items .checkout-now button.checkout{
background-color: #ffa800!important;
}
.checkout-now.button-static .now-grand-total{
display: none;
}
}
@media(min-width:768px)
{
.now-grand-total{
display: none;
}
.checkout-methods-items .checkout-now{
margin-bottom: 1rem;
}
}
</style>
<div class="checkout methods items checkout-methods-items" style="background-color: #f2f2f2;">
<div style="background-color: #fff;width:100%;gap: 1rem;">
<div class="item checkout-now" style="margin:10px 0px 20px 0px;">
<div class="item checkout-now">
<div class="now-grand-total" style="font-size: 18px;width:100%;">
<div style="float: left;text-align: left;"><strong>Order Total:</strong></div>
<div style="float: right;text-align: right;"><?= $subtotalStr ?></div>
</div>
<button type="button" data-role="proceed-to-checkout" title="Checkout Now" class="action primary checkout">
<span class="secure"><img alt="" src="/media/wysiwyg/secure.png"></span>
<span>Checkout Now</span>
<span><?= __("Checkout Now") ?></span>
</button>
</div>
......@@ -39,7 +77,7 @@
</style>
<div class="or-checkout-with" style="display: flex;width:100%;line-height: 1.2rem;"><span>OR CHECKOUT WITH</span></div>
<div class="or-checkout-with" style="display: flex;width:100%;line-height: 1.2rem;"><span><?= __("OR CHECKOUT WITH") ?></span></div>
......@@ -47,7 +85,7 @@
ec_shortcut_jjTyyXrRb0sVUXZkA5EduNvUofEEqeuO">
<div class="checkout-logo-medium">
<input type="image" data-action="checkout-form-submit" data-checkout-url="/paypal/express/start/button/1/" src="/static/frontend/Joshine/breeze/en_US/Magento_Paypal/images/paypal-color.svg" alt="Checkout with PayPal" title="Checkout with PayPal">
<div class="checkout-txt">Checkout</div>
<div class="checkout-txt"><?= __("Checkout") ?></div>
</div>
</div>
<style type="text/css">
......@@ -62,7 +100,7 @@
<a href="https://www.securecheckout.billmelater.com/paycapture-content/fetch?hash=AU826TU8&amp;content=/bmlweb/ppwpsiw.html">
<img src="https://www.paypalobjects.com/webstatic/en_US/btn/btn_bml_text.png">
</a>
<div class="checkout-txt">Checkout</div>
<div class="checkout-txt"><?= __("Checkout") ?></div>
</div>
</div>
</div>
......@@ -101,8 +139,10 @@
var positionUl = $('.cart-container .checkout-methods-items .checkout-now')
if (window.outerHeight + $(document).scrollTop() < $(positionUl).parent().offset().top + 50) {
$(positionUl).removeClass("button-static");
$('.now-grand-total').show();
} else {
$(positionUl).addClass("button-static");
$('.now-grand-total').hide();
}
});
......
......@@ -5,22 +5,27 @@
define([
'jquery',
'uiComponent'
], function ($, Component) {
'Magento_Checkout/js/view/summary/abstract-total',
'Magento_Checkout/js/model/quote'
], function ($, Component,quote) {
'use strict';
return Component.extend({
defaults: {
template: 'Magento_Checkout/placeorder'
},
totals: quote.getTotals(),
placeOrder:function(){
if($('#checkout-step-shipping').is(":visible"))
{
return false;
}
$('.checkout-index-index .payment-method._active').find('.actions-toolbar').find('button').trigger('click');
}
,
getTotalPrice:function(){
return this.getFormattedPrice(this.totals().grand_total);
}
});
});
......@@ -235,7 +235,12 @@ define([
quote.shippingMethod()['carrier_code'] + '_' + quote.shippingMethod()['method_code'] :
null;
}),
is_mobile: function(){
return window.matchMedia("(pointer:coarse)").matches;
},
full_free_ship: function(){
return window.checkoutConfig.full_free_ship;
},
/**
* @param {Object} shippingMethod
* @return {Boolean}
......
......@@ -5,12 +5,18 @@
*/
-->
<div id="checkout_place_order">
<button id="place-order" data-bind="click: placeOrder">
<span class="button-inner">
<span class="secure">
<img alt="" src="/media/wysiwyg/secure.png">
<div class="fix-content">
<div class="now-order-total" style="font-size: 18px;width:95%;margin:0 auto;">
<div style="float: left;text-align: left;"><strong>Order Total:</strong></div>
<div style="float: right;text-align: right;" data-bind="text: getTotalPrice()"></div>
</div>
<button id="place-order" data-bind="click: placeOrder">
<span class="button-inner">
<span class="secure">
<img alt="" src="/media/wysiwyg/secure.png">
</span>
<span class="txt">Place Order</span>
</span>
<span class="txt">Place Order</span>
</span>
</button>
</button>
</div>
</div>
\ No newline at end of file
......@@ -4,40 +4,133 @@
* See COPYING.txt for license details.
*/
-->
<!-- ko ifnot: $parent.is_mobile() -->
<tr class="row"
click="element.selectShippingMethod">
<!-- ko if: $parent.rates().length == 1 -->
<td class="col col-method">
<input type="radio"
class="radio"
ifnot="method.error_message"
attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
'checked': element.rates().length == 1" />
<td class="col col-method" colspan="4">
<div class="method-content">
<div class="method-title">
<!-- ko if: $parent.rates().length == 1 -->
<input type="radio"
class="radio"
ifnot="method.error_message"
attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
'checked': element.rates().length == 1" />
<!-- /ko -->
<!-- ko if: $parent.rates().length > 1 -->
<input type="radio"
class="radio"
ifnot="method.error_message"
ko-checked="element.isSelected"
ko-value="method.carrier_code + '_' + method.method_code"
attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
'checked': element.isSelected" />
<!-- /ko -->
<!-- ko ifnot: (method.error_message) -->
<span class="col col-price">
<each args="element.getRegion('price')" render=""></each>
</span>
<!-- /ko -->
<span class="col col-method"
attr="'id': 'label_method_' + method.method_code + '_' + method.carrier_code"
text="method.method_title"></span>
<span class="col col-carrier"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code"
text="method.carrier_title"></span>
</div>
<!-- ko if: (method.amount) -->
<div class="method-msg">
<span class="col col-msg"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code_msg">
10-15 Working Days - <span class="free-over ff">Free Over <span text="$parent.full_free_ship()"></span></span>
</span>
</div>
<!-- /ko -->
<!-- ko ifnot: (method.amount) -->
<div class="method-msg">
<span class="col col-msg"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code_msg">
10-15 Working Days</span>
</span>
</div>
<!-- /ko -->
</div>
</td>
<!-- /ko -->
<!-- ko if: $parent.rates().length > 1 -->
<td class="col col-method">
<input type="radio"
class="radio"
ifnot="method.error_message"
ko-checked="element.isSelected"
ko-value="method.carrier_code + '_' + method.method_code"
attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
</tr>
<!-- /ko -->
<!-- ko if: $parent.is_mobile() -->
<tr class="row"
click="element.selectShippingMethod">
<td class="col col-method" colspan="4">
<div class="method-content">
<div class="method-title">
<!-- ko if: $parent.rates().length == 1 -->
<input type="radio"
class="radio"
ifnot="method.error_message"
attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
'checked': element.rates().length == 1" />
<!-- /ko -->
<!-- ko if: $parent.rates().length > 1 -->
<input type="radio"
class="radio"
ifnot="method.error_message"
ko-checked="element.isSelected"
ko-value="method.carrier_code + '_' + method.method_code"
attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
'checked': element.isSelected" />
<!-- /ko -->
<!-- ko ifnot: (method.error_message) -->
<span class="col col-price">
<each args="element.getRegion('price')" render=""></each>
</span>
<!-- /ko -->
<span class="col col-method"
attr="'id': 'label_method_' + method.method_code + '_' + method.carrier_code"
text="method.method_title"></span>
<span class="col col-carrier"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code"
text="method.carrier_title"></span>
</div>
<!-- ko if: (method.amount) -->
<div class="method-msg">
<span class="col col-msg"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code_msg">
10-15 Working Days - <span class="free-over">Free Over <span text="$parent.full_free_ship()"></span></span>
</span>
</div>
<!-- /ko -->
<!-- ko ifnot: (method.amount) -->
<div class="method-msg">
<span class="col col-msg"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code_msg">
10-15 Working Days</span>
</span>
</div>
<!-- /ko -->
</div>
</td>
<!-- /ko -->
<!-- ko ifnot: (method.error_message) -->
<td class="col col-price">
<each args="element.getRegion('price')" render=""></each>
</td>
<!-- /ko -->
<td class="col col-method"
attr="'id': 'label_method_' + method.method_code + '_' + method.carrier_code"
text="method.method_title"></td>
<td class="col col-carrier"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code"
text="method.carrier_title"></td>
</tr>
<!-- /ko -->
<tr class="row row-error"
if="method.error_message">
<td class="col col-error" colspan="4">
......
<?php
namespace Magento\Directory\Model\ResourceModel\Country;
class CollectionNew
{
protected $scopeConfig;
public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig)
{
$this->scopeConfig = $scopeConfig;
}
public function afterToOptionArray(\Magento\Directory\Model\ResourceModel\Country\Collection $subject, $result) {
if (!is_array($result) || empty($result)) {
return $result;
}
$topCountry = $this->scopeConfig->getValue('system/top_country/top_countrys');
if (!$topCountry) {
return $result;
}
if (!$result[0]['value']) {
unset($result[0]);
}
$topCountry = explode(',', $topCountry);
$indexs = array_flip($topCountry);
$top = [];
$top[0] = ['value' => '', 'label' => ''];
foreach ($result as $row) {
if (in_array($row['value'], $topCountry)) {
$idx = $indexs[$row['value']] + 1;
$top[$idx] = $row;
}
}
ksort($top);
$top[] = ['value' => '-', 'label' => '---'];
$result = array_merge($top, $result);
return $result;
}
}
\ No newline at end of file
......@@ -39,6 +39,9 @@
</argument>
</arguments>
</type>
<type name="Magento\Directory\Model\ResourceModel\Country\Collection">
<plugin name="new_country_collection" type="Magento\Directory\Model\ResourceModel\Country\CollectionNew"/>
</type>
<preference for="Magento\Directory\Model\Country\Postcode\ConfigInterface" type="Magento\Directory\Model\Country\Postcode\Config" />
<preference for="Magento\Directory\Model\Country\Postcode\ValidatorInterface" type="Magento\Directory\Model\Country\Postcode\Validator" />
<preference for="Magento\Directory\Api\CurrencyInformationAcquirerInterface" type="Magento\Directory\Model\CurrencyInformationAcquirer" />
......
......@@ -12,5 +12,6 @@
<referenceBlock name="product.info.review" remove="true" />
<referenceBlock name="reviews.tab" remove="true" />
<referenceBlock name="form.subscribe" remove="true" />
<referenceBlock name="checkout.cart.empty.recently" remove="true" />
</body>
</page>
\ No newline at end of file
......@@ -31,7 +31,6 @@
}
.sparsh-mfp-container {
text-align: center;
position: absolute;
width: 100%;
height: 100%;
left: 0;
......@@ -52,7 +51,6 @@
display: none;
}
.sparsh-mfp-content {
position: relative;
display: inline-block;
vertical-align: middle;
margin: 0 auto;
......@@ -733,10 +731,6 @@ a.sparsh-quick-view-button{
margin-left:0!important;
}
.sparsh-mfp-wrap .sparsh-mfp-container{
height: 60% !important;
top: 35%!important;
}
.sparsh-mfp-wrap .actions{
padding-top: 0!important;
......@@ -748,9 +742,7 @@ a.sparsh-quick-view-button{
visibility: hidden;
}
.sparsh-mfp-container {
position: fixed;
}
.sparsh-quick-view-btn-container {
width: 40%;
......@@ -774,4 +766,8 @@ a.sparsh-quick-view-button{
#sparsh-mfp-quickview .page-wrapper{
min-height: 80vh;
}
#sparsh-mfp-quickview .product-info-wrapper .product-info-main{
margin-bottom: 15%;
}
}
\ No newline at end of file
......@@ -6,6 +6,10 @@
*/
-->
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<remove src="mage/gallery/gallery.css"/>
<css src="Magento_Catalog::css/gallery.css"/>
</head>
<body>
<referenceBlock name="product.info.description" remove="true" />
<referenceBlock name="product.attributes" remove="true" />
......
......@@ -60,17 +60,17 @@
<div style="width: 100%" class="product-view-freeshipping">
<div class="product-intro__freeshipping product-intro__bg-none">
<div class="product-intro__freeshipping-abt action" id="freeshipping-button">
<div class="product-intro__freeshipping-icon shipping " ><i class="svgicon svgicon-gd-shipping"></i> <p>Fast Delivery</p> <span class="svgicon svgicon-gd-more-grey product-intro__freeshipping-more" ></span>
<div class="product-intro__freeshipping-icon shipping " ><i class="svgicon svgicon-gd-shipping"></i> <p><?=__("Fast Delivery"); ?></p> <span class="svgicon svgicon-gd-more-grey product-intro__freeshipping-more" ></span>
</div>
<div class="free-wrapper">
<p> Estimated to be delivered on <span id="deliveredTime">11/25/2021 - 12/03/2021</span>.</p> </div>
<p> <?= __("Estimated to be delivered on") ?> <span id="deliveredTime">11/25/2021 - 12/03/2021</span>.</p> </div>
</div>
<div class="product-intro__freeshipping-item full-line paddingTop-0 paddingBottom-0 action" id="free-return-button" >
<div class="product-intro__freeshipping-icon">
<i class="svgicon svgicon-gd-freereturn"></i><p>Free Return &amp; Exchange</p> <span class="svgicon svgicon-gd-more-grey product-intro__freeshipping-more" ></span> </div> <div class="product-intro__freeshipping-desc">
Learn More
<i class="svgicon svgicon-gd-freereturn"></i><p><?= __("Free Return & Exchange") ?>:</p> <span class="svgicon svgicon-gd-more-grey product-intro__freeshipping-more" ></span> </div> <div class="product-intro__freeshipping-desc">
<?= __("Learn More") ?>
</div>
</div>
</div>
......@@ -232,7 +232,7 @@ if ($description) :
}}'>
<div data-role="collapsible">
<div data-role="trigger" class="description-button">
<a class="desction-left description info-desc" href="#">Description</a>
<a class="desction-left description info-desc" href="#"><?= __("Description") ?> </a>
<a class="desction-right description info-desc" href="#">-</a>
</div>
</div>
......@@ -257,7 +257,7 @@ if ($short_description) :
}}'>
<div data-role="collapsible">
<div data-role="trigger" class="short_description-button">
<a class="desction-left short_description info-desc" href="#">Material</a>
<a class="desction-left short_description info-desc" href="#"><?= __("Material") ?></a>
<a class="desction-right short_description info-desc" href="#">-</a>
</div>
</div>
......
......@@ -52,7 +52,6 @@
$('.swatch-attribute-selected-option-size-content').hide();
}
});
});
</script>
......
......@@ -26,7 +26,7 @@ $hasCouponCode = (bool) strlen($block->getCouponCode());
data-mage-init='{"collapsible":{"active": <?= $hasCouponCode ? 'true' : 'false' ?>, "openedState": "active", "saveState": false}}'
>
<div class="title" data-role="title" aria-controls="block-summary" role="tab" aria-selected="false" aria-expanded="false" tabindex="0">
<strong id="block-shipping-coupon" role="heading" aria-level="2">Coupon Code</strong>
<strong id="block-shipping-coupon" role="heading" aria-level="2"><?= __("Coupon Code") ?> </strong>
</div>
<div class="content" data-role="content" aria-labelledby="block-discount-heading" style="display: block;">
<form id="discount-coupon-form"
......
......@@ -4,7 +4,7 @@ $copyrightBlock = $block->getLayout()->createBlock('Magento\Theme\Block\Html\Foo
<footer class="page-footer">
<div data-block-id="shopping_footer_why_choose_us">
<div class="choose-us">
WHY CHOOSE US
<?= __("WHY CHOOSE US") ?>
</div>
<?php echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('why_choose_us')->toHtml();?>
<div class="footer-mini-copyright-content"><?= $block->escapeHtml($copyrightBlock->getCopyright()) ?></div>
......
......@@ -8,7 +8,11 @@
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
?>
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$flatraPrice = $block->getFlatratePrice();
$full_free = $block->getFullFreeShip();
$_helper = $objectManager->get('Magento\Framework\Pricing\Helper\Data');
$full_free_ship = $_helper->currency($full_free, true, false);
?>
<style type="text/css">
.payment-method._active{
......@@ -506,10 +510,17 @@ $flatraPrice = $block->getFlatratePrice();
right: 0;
box-shadow: 0 0 20px #999;
z-index: 1;
background-color: #FFFFFF;
padding-bottom: 10px;
}
#checkout_place_order .fix-content.button-fix .now-order-total{
display:block;
}
/***************payment end******************/
}
#checkout_place_order .fix-content .now-order-total{
display:none;
}
.checkout-index-index .opc .actions-toolbar {
display:none!important;
}
......@@ -781,6 +792,7 @@ $flatraPrice = $block->getFlatratePrice();
$scriptString = <<<script
window.checkoutConfig = {$serializedCheckoutConfig};
window.checkoutConfig.flatrate_price = {$flatraPrice};
window.checkoutConfig.full_free_ship = '{$full_free_ship}';
// Create aliases for customer.js model from customer module
window.isCustomerLoggedIn = window.checkoutConfig.isCustomerLoggedIn;
window.customerData = window.checkoutConfig.customerData;
......@@ -826,9 +838,9 @@ script;
$(window).scroll(function () {
var positionUl = $('#checkout_place_order')
if (window.outerHeight + $(document).scrollTop() < $(positionUl).offset().top + 50) {
$('#place-order').addClass("button-fix");
$('.fix-content').addClass("button-fix");
} else {
$('#place-order').removeClass("button-fix");
$('.fix-content').removeClass("button-fix");
}
});
......
......@@ -75,24 +75,24 @@
</div>
</div>
<div class="field size-fits">
<label class="label"><?php echo 'Size Fits' ?>:</label>
<label class="label"><?= __('Size Fits') ?>:</label>
<div class="options-list">
<div class="field choice">
<input type="radio" class="radio" id="size-fits-1" data-validate="{'validate-one-required-by-name':true}" name="size_fits" value="1" >
<label class="label" for="size-fits-1">
Small
<?= __('Small') ?>
</label>
</div>
<div class="field choice">
<input type="radio" class="radio" id="size-fits-2" data-validate="{'validate-one-required-by-name':true}" name="size_fits" value="2" >
<label class="label" for="size-fits-2">
True to Size
<?= __('True to Size') ?>
</label>
</div>
<div class="field choice">
<input type="radio" class="radio" id="size-fits-3" data-validate="{'validate-one-required-by-name':true}" name="size_fits" value="3" >
<label class="label" for="size-fits-3">
Large
<?= __('Large') ?>
</label>
</div>
</div>
......
......@@ -381,7 +381,7 @@ define([
isInProductView = false;
productId = this.element.parents('.product-item-details')
.find('.price-box.price-final_price').attr('data-product-id');
.find('.price-box.price-final_price').attr('data-product-id');
if (!productId) {
// Check individual product.
......@@ -427,7 +427,7 @@ define([
var tem_size = '';
if (item.label.toLowerCase() == "size"){
tem_size = "<div id=\"product-intro__freeshipping-more-3\" >" +
"<a href=\"javascript:void(0);\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5 8.5V15.5H5.31045V13.75C5.31045 13.3358 5.64623 13 6.06045 13C6.47466 13 6.81045 13.3358 6.81045 13.75V15.5H9.31045V11.75C9.31045 11.3358 9.64623 11 10.0604 11C10.4747 11 10.8104 11.3358 10.8104 11.75V15.5H13.3104V13.75C13.3104 13.3358 13.6462 13 14.0604 13C14.4747 13 14.8104 13.3358 14.8104 13.75V15.5H17.3104V11.75C17.3104 11.3358 17.6462 11 18.0604 11C18.4747 11 18.8104 11.3358 18.8104 11.75V15.5H20.5V8.5H3.5ZM14.0604 17H18.0604H21C21.5523 17 22 16.5523 22 16V8C22 7.44772 21.5523 7 21 7H3C2.44772 7 2 7.44772 2 8V16C2 16.5523 2.44772 17 3 17H6.06045H10.0604H14.0604Z\" fill=\"#5D626A\"></path></svg> Size Guide</a></div>";
"<a href=\"javascript:void(0);\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5 8.5V15.5H5.31045V13.75C5.31045 13.3358 5.64623 13 6.06045 13C6.47466 13 6.81045 13.3358 6.81045 13.75V15.5H9.31045V11.75C9.31045 11.3358 9.64623 11 10.0604 11C10.4747 11 10.8104 11.3358 10.8104 11.75V15.5H13.3104V13.75C13.3104 13.3358 13.6462 13 14.0604 13C14.4747 13 14.8104 13.3358 14.8104 13.75V15.5H17.3104V11.75C17.3104 11.3358 17.6462 11 18.0604 11C18.4747 11 18.8104 11.3358 18.8104 11.75V15.5H20.5V8.5H3.5ZM14.0604 17H18.0604H21C21.5523 17 22 16.5523 22 16V8C22 7.44772 21.5523 7 21 7H3C2.44772 7 2 7.44772 2 8V16C2 16.5523 2.44772 17 3 17H6.06045H10.0604H14.0604Z\" fill=\"#5D626A\"></path></svg> "+$.mage.__('Size Guide')+"</a></div>";
label += tem_size;
label += '<span id="' + controlLabelId + '" class="' + classes.attributeLabelClass + '">' +
$('<i></i>').text(item.label).html() +
......@@ -450,7 +450,7 @@ define([
}
if (item.label.toLowerCase() == "size") {
// Create new control
var sizeContent = '<div class="swatch-attribute-selected-option-size-content" ><div style="font-size:.32rem;color:#999999;">Product Size Describe</div>'+'<span style="color:#0a0a0a;" class="'+classes.attributeSelectedOptionLabelClass + '"></span></div>';
var sizeContent = '<div class="swatch-attribute-selected-option-size-content" ><div style="font-size:.32rem;color:#999999;">'+$.mage.__("Product Size Describe")+ '</div>'+'<span style="color:#0a0a0a;" class="'+classes.attributeSelectedOptionLabelClass + '"></span></div>';
container.append(
'<div class="' + classes.attributeClass + ' ' + item.code + '" ' +
......@@ -749,22 +749,22 @@ define([
}
});
$(".main-image").attr("src",main_img);
$(".main-image-wrapper > picture > source:first ").attr("srcset",main_img);
$(".main-image-wrapper > picture > source:last ").attr("srcset",main_img);
//移除之前选中图
$(".main-image").attr("src",main_img);
$(".main-image-wrapper > picture > source:first ").attr("srcset",main_img);
$(".main-image-wrapper > picture > source:last ").attr("srcset",main_img);
//移除之前选中图
$(".color_img").remove();
$(".thumbnails > a").removeClass("active");
$(".thumbnails >a:first").before("" +
"<a class=\"item active color_img \" href=\"#\" name=\""+ main_img +"\" title=\"Image\">\n" +
" <picture>\n" +
" <source type=\"image/webp\" srcset=\""+thumb_img+"\">\n" +
" <source type=\"image/jpg\" srcset=\""+thumb_img+"\">\n" +
" <img loading=\"lazy\" alt=\"Image\" src=\""+thumb_img+"\" width=\"50\" height=\"66\"> </picture>\n" +
"\n" +
"\n" +
" </a>");
$(".thumbnails >a:first").before("" +
"<a class=\"item active color_img \" href=\"#\" name=\""+ main_img +"\" title=\"Image\">\n" +
" <picture>\n" +
" <source type=\"image/webp\" srcset=\""+thumb_img+"\">\n" +
" <source type=\"image/jpg\" srcset=\""+thumb_img+"\">\n" +
" <img loading=\"lazy\" alt=\"Image\" src=\""+thumb_img+"\" width=\"50\" height=\"66\"> </picture>\n" +
"\n" +
"\n" +
" </a>");
$(".mobile-pic >a:first").before("" +
"<a class=\"item color_img \" href=\"#\" name=\""+ main_img +"\" title=\"Image\" data-caption=\"bear\" data-id=\"bear\" data-group=\"animal\" >\n" +
" <picture>\n" +
......@@ -888,7 +888,7 @@ define([
*/
_toggleCheckedAttributes: function ($this, $wrapper) {
$wrapper.attr('aria-activedescendant', $this.attr('id'))
.find('.' + this.options.classes.optionClass).attr('aria-checked', false);
.find('.' + this.options.classes.optionClass).attr('aria-checked', false);
$this.attr('aria-checked', true);
},
......@@ -1422,7 +1422,7 @@ define([
_EmulateSelected: function (selectedAttributes) {
$.each(selectedAttributes, $.proxy(function (attributeCode, optionId) {
var elem = this.element.find('.' + this.options.classes.attributeClass +
'[data-attribute-code="' + attributeCode + '"] [data-option-id="' + optionId + '"]'),
'[data-attribute-code="' + attributeCode + '"] [data-option-id="' + optionId + '"]'),
parentInput = elem.parent();
if (elem.hasClass('selected')) {
......@@ -1446,7 +1446,7 @@ define([
_EmulateSelectedByAttributeId: function (selectedAttributes) {
$.each(selectedAttributes, $.proxy(function (attributeId, optionId) {
var elem = this.element.find('.' + this.options.classes.attributeClass +
'[data-attribute-id="' + attributeId + '"] [data-option-id="' + optionId + '"]'),
'[data-attribute-id="' + attributeId + '"] [data-option-id="' + optionId + '"]'),
parentInput = elem.parent();
if (elem.hasClass('selected')) {
......@@ -1493,6 +1493,15 @@ define([
var galleryObject = element.data('gallery');
this.options.mediaGalleryInitial = galleryObject.returnCurrentImages();
if($('.swatch-attribute .swatch-option'))
{
var swatchObj = $('.swatch-attribute');
for(var i=0;i<swatchObj.length;i++)
{
$(swatchObj[i]).find('.swatch-option:first').trigger('click');
}
}
},
/**
......
......@@ -3,7 +3,6 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<remove src="mage/calendar.css"/>
<remove src="mage/gallery/gallery.css"/>
</head>
<body>
<referenceContainer name="before.body.end">
......
......@@ -44,6 +44,9 @@
$('.header ').css('margin-bottom',imgH);
}else{
var headerH = $('.page-header').outerHeight(true);
if ($('.breadcrumbs').height()){
headerH -= $('.breadcrumbs').height();
}
$('.columns').css('margin-top',headerH);
}
});
......
......@@ -208,12 +208,58 @@
</images>
</media>
<vars module="Magento_Catalog">
<!-- Gallery and magnifier theme settings. Start -->
<var name="gallery">
<var name="allowfullscreen">true</var>
<var name="keyboard">true</var>
<var name="loop">true</var>
<var name="nav">true</var> <!-- true/false -->
<var name="navdir">vertical</var> <!-- horizontal/vertical -->
<var name="nav">thumbs</var> <!-- Gallery navigation style (false/thumbs/dots) -->
<var name="loop">true</var> <!-- Gallery navigation loop (true/false) -->
<var name="keyboard">true</var> <!-- Turn on/off keyboard arrows navigation (true/false) -->
<var name="arrows">true</var> <!-- Turn on/off arrows on the sides preview (true/false) -->
<var name="caption">false</var> <!-- Display alt text as image title (true/false) -->
<var name="allowfullscreen">true</var> <!-- Turn on/off fullscreen (true/false) -->
<var name="navdir">vertical</var> <!-- Sliding direction of thumbnails (horizontal/vertical) -->
<var name="navarrows">true</var> <!-- Turn on/off on the thumbs navigation sides arrows(true/false) -->
<var name="navtype">slides</var> <!-- Sliding type of thumbnails (slides/thumbs) -->
<var name="transition">
<var name="effect">slide</var> <!-- Sets transition effect for slides changing (slide/crossfade/dissolve) -->
<var name="duration">500</var> <!-- Sets transition duration in ms -->
</var>
<var name="fullscreen">
<var name="nav">thumbs</var> <!-- Fullscreen navigation style (false/thumbs/dots) -->
<var name="loop">true</var> <!-- Fullscreen navigation loop (true/false/null) -->
<var name="arrows">true</var> <!-- Turn on/off arrows on the sides preview in fullscreen (true/false/null) -->
<var name="caption">false</var> <!-- Display alt text as image title in fullscreen(true/false) -->
<var name="navdir">horizontal</var> <!--Sliding direction of thumbnails in fullscreen(horizontal/vertical) -->
<var name="navarrows">false</var> <!-- Turn on/off on the thumbs navigation sides arrows(true/false) -->
<var name="navtype">slides</var> <!-- Sliding type of thumbnails (slides/thumbs) -->
<var name="transition">
<var name="effect">slide</var> <!-- Sets transition effect for slides changing (slide/crossfade/dissolve) -->
<var name="duration">500</var> <!-- Sets transition duration in ms -->
</var>
</var>
</var>
<var name="magnifier">
<var name="fullscreenzoom">20</var> <!-- Zoom for fullscreen (integer)-->
<var name="top"></var> <!-- Top position of magnifier -->
<var name="left"></var> <!-- Left position of magnifier -->
<var name="width"></var> <!-- Width of magnifier block -->
<var name="height"></var> <!-- Height of magnifier block -->
<var name="eventType">hover</var> <!-- Action that atcivates zoom (hover/click) -->
<var name="enabled">false</var> <!-- Turn on/off magnifier (true/false) -->
<var name="mode">outside</var> <!-- Zoom type (outside/inside) -->
</var>
<var name="breakpoints">
<var name="mobile">
<var name="conditions">
<var name="max-width">767px</var>
</var>
<var name="options">
<var name="options">
<var name="nav">dots</var>
</var>
</var>
</var>
</var>
</vars>
<vars module="Magento_ConfigurableProduct">
......
This source diff could not be displayed because it is too large. You can view the blob instead.
// DO NOT EDIT THIS FILE - IT SHOULD REMAIN EMPTY
// DO NOT EDIT THIS FILE - IT SHOULD REMAIN EMPTY
.product.media .gallery-placeholder .fotorama__stage{ left: 0 !important; }
.product.media .gallery-placeholder .fotorama__nav-wrap--vertical.fotorama__nav-wrap{ right: 0; text-align: right;}
.product.media .gallery-placeholder .fotorama__nav--thumbs{float: right;}
.fotorama__stage__shaft.fotorama__grab {
margin-left: -120px !important;
}
.breeze-gallery .thumbnails .item img{
margin: 3px 1px;
}
......@@ -539,6 +536,7 @@ ul {
text-decoration: line-through;
font-weight: 400;
margin-left: 5px;
font-size: 14px;
}
.product-info-wrapper .price-final_price .price{
......@@ -740,6 +738,7 @@ p.shopbycate-title {
.checkout-cart-index .cart-empty {
min-height: 300px;
}
.checkout-cart-index .us-icon,.checkout-index-index .us-icon,.checkout-onepage-success .us-icon {
background: url("../images/icons-pc.png");
background-position-y: -420px;
......@@ -785,12 +784,38 @@ p.shopbycate-title {
{
border-top:1px solid #ddd;
}
.checkout-index-index .col-msg{
font-size: 14px;
color: #777;
}
}
.checkout-index-index .method-content .method-msg{
padding: 5px 0px 5px 2.2rem;
font-size: 13px;
color: #777777;
}
.free-over{
font-size: 16px;
color: #000;
}
.checkout-index-index #checkout-step-shipping_method .table-checkout-shipping-method .row .col.col-method{
margin:0px 1rem;
padding: 0;
}
.checkout-index-index .method-content{
text-align: left;
}
.no-enabled{
color:#cacaca!important;
}
.checkout-cart-index .cart-container .checkout-methods-items .checkout-now button{
background: #0000; height: 40px;font-size: 22px;text-transform: uppercase;font-weight: 400;
background: #0000;
height: 40px;
font-size: 22px;
text-transform: uppercase;
font-weight: 400;
padding: 1.47rem 0px;
}
@media (min-width: 768px) {
.checkout-cart-index .cart-container {
......@@ -871,6 +896,12 @@ p.shopbycate-title {
background-color: #fff;
}
}
.recently-viewed .product-info-promotion-span{
position: absolute;
top: 5px;
left: 3px;
margin-left: 0px;
}
.checkout-cart-index .cart-container .cart-summary {
gap: 0px;
}
......@@ -878,6 +909,11 @@ p.shopbycate-title {
.checkout-cart-index .cart-container .cart-summary {
margin:0;
}
.checkout-index-index .method-content .method-msg{
padding: 5px 0px 5px 2.2rem;
font-size: 13px;
color: #777777;
}
.checkout-cart-index .cart-container .cart-summary > .title {
padding: 1rem 0px;
}
......@@ -897,6 +933,12 @@ p.shopbycate-title {
.button-static{
position: static!important;
box-shadow: none!important;
margin-bottom:1rem!important;
padding: 0px!important;
gap: 0.5rem;
}
.checkout-now.button-static .now-grand-total{
display: none;
}
.checkout-cart-index table tr{
border: none;
......@@ -906,7 +948,8 @@ p.shopbycate-title {
}
.checkout-cart-index .cart-container .checkout-methods-items .checkout-now{
z-index:1;
gap: 0rem;
margin-bottom: 0px;padding: 0px 10px 10px;
}
.checkout-cart-index .cart-container .checkout-methods-items .checkout-now button{
transition: all .3s;
......@@ -914,6 +957,12 @@ p.shopbycate-title {
.checkout-cart-index #cart-totals table td,.checkout-cart-index #cart-totals table th {
padding: 0.3rem 0.5rem;
}
.catalog-product-view .recently-viewed .flash-sale-info .price-final_price .normal-price{
float:right;
}
.catalog-product-view .recently-viewed .flash-sale-info .price-final_price{
width:100%;
}
}
.checkout-index-index .details-qty,.checkout-cart-index .details-qty{
......@@ -2792,7 +2841,6 @@ tr.grand.totals {
left: 0;
z-index: 100;
box-shadow: 0 0 20px #999;
padding: 5px 10px;
}
.checkout.checkout-methods-items div{
height: auto !important;
......@@ -2915,7 +2963,6 @@ div#shipping-method-buttons-container {
}
.product-reviews-summary{
float: left;
margin-top: 0%;
width: 70%;
}
......@@ -3025,6 +3072,7 @@ strong#block-related-heading,strong#block-upsell-heading{ font-weight: 600; colo
font-size: 16px;
font-weight: 600;
padding: 0 10px;
font-family: Outfit-Regular,sans-serif;
}
@media (max-width: 768px) {
......@@ -3039,6 +3087,124 @@ strong#block-related-heading,strong#block-upsell-heading{ font-weight: 600; colo
}
}
.sparsh-mfp-wrap .fotorama__stage__shaft,fotorama__grab{
float: right;
}
.sparsh-mfp-wrap .fotorama__arr--prev{
left: 80px;
}
.sparsh-mfp-wrap .fotorama__arr--next{
right: 0px!important;
}
.sparsh-mfp-wrap .fotorama__arr .fotorama__arr__arr{
top: 42%!important;
}
@media (min-width: 1024px) {
.gallery-placeholder .fotorama__stage__shaft {
height: 1000px !important;
width: 800px !important;
max-width:none!important;
}
.gallery-placeholder .fotorama__stage{
max-height: 1000px;
max-width: 880px;
width: 880px!important;
height: 1000px!important;
}
#sparsh-mfp-quickview .fotorama__stage__shaft{
height: 645px !important;
width: 516px !important;
}
.gallery-placeholder .fotorama__nav {
max-height: 1000px!important;
height: 1000px!important;
}
.fotorama__wrap--slide .fotorama__stage__frame{
margin-left: 20px;
}
.product.media{
min-width: 880px!important;
}
#sparsh-mfp-quickview .product.media{
min-width:645px !important;
}
.gallery-placeholder__image{
float: right;
position: absolute;
margin-left: 100px;
}
#sparsh-mfp-quickview .gallery-placeholder__image{
float: right;
position: absolute;
margin-left: 100px;
max-width:516px;
max-height:645px;
}
.gallery-placeholder{
position: relative;
}
#sparsh-mfp-quickview .gallery-placeholder{
position:unset;
}
.product-info-wrapper{
height: 1000px;
}
#sparsh-mfp-quickview .product-info-wrapper{
height: auto;
}
}
.fotorama__arr, .fotorama__thumb__arr{
background-color: rgba(255,255,255,0.8);
}
.fotorama__thumb-border{
border-color: rgba(0,0,0,0.3);
}
#sparsh-mfp-quickview .fotorama__nav {
max-height: 645px!important;
height: 645px!important;
}
#sparsh-mfp-quickview .fotorama__stage {
max-height: 645px;
max-width: 615px;
}
.fotorama__nav-wrap{
background-color: white;
}
@media (max-width: 769px){
#sparsh-mfp-quickview .fotorama__nav {
max-height: unset !important;
height: auto !important;
}
.fotorama__nav__shaft.fotorama__grab{
transform:none !important;
}
}
/*导入Joshine工具类*/
......
......@@ -991,6 +991,14 @@ fotoramaVersion = '4.6.4';
};
function fit($el, measuresToFit) {
if (measuresToFit.width){
measuresToFit.width = $('.fotorama__stage').width();
measuresToFit.w = measuresToFit.width;
measuresToFit.W = measuresToFit.width;
measuresToFit.nw = measuresToFit.width;
}
var elData = $el.data(),
measures = elData.measures;
......@@ -1140,7 +1148,7 @@ fotoramaVersion = '4.6.4';
function addEvent(el, e, fn, bool) {
if (!e) return;
el.addEventListener ? el.addEventListener(e, fn, {passive: true}) : el.attachEvent('on' + e, fn);
el.addEventListener ? el.addEventListener(e, fn, {passive: false}) : el.attachEvent('on' + e, fn);
}
/**
......@@ -2231,7 +2239,7 @@ fotoramaVersion = '4.6.4';
var isVerticalDir = (opts.navdir === 'vertical');
var param = isVerticalDir ? $navShaft.height() : $navShaft.width();
var mainParam = isVerticalDir ? measures.h : measures.nw;
navShaftTouchTail.min = Math.min(0, mainParam - param);
navShaftTouchTail.min = Math.min(0, $('.fotorama__nav-wrap').height() - param);
navShaftTouchTail.max = 0;
navShaftTouchTail.direction = opts.navdir;
$navShaft.toggleClass(grabClass, !(navShaftTouchTail.noMove = navShaftTouchTail.min === navShaftTouchTail.max));
......
......@@ -186,7 +186,7 @@ define([
settings.focusableStart = this.settings.$element.find('[data-gallery-role="fotorama__focusable-start"]');
settings.focusableEnd = this.settings.$element.find('[data-gallery-role="fotorama__focusable-end"]');
settings.closeIcon = this.settings.$element.find('[data-gallery-role="fotorama__fullscreen-icon"]');
//settings.fullscreenConfig.swipe = true;
settings.fullscreenConfig.swipe = true;
settings.$gallery.on('fotorama:fullscreenenter', function () {
settings.closeIcon.show();
......@@ -537,9 +537,9 @@ define([
returnCurrentImages: function () {
var images = [];
// _.each(this.fotorama.data, function (item) {
// images.push(_.omit(item, '$navThumbFrame', '$navDotFrame', '$stageFrame', 'labelledby'));
// });
_.each(this.fotorama.data, function (item) {
images.push(_.omit(item, '$navThumbFrame', '$navDotFrame', '$stageFrame', 'labelledby'));
});
return images;
},
......
// Fotorama is not supported in Breeze Theme
.breeze-disable-fotorama {
width: 1;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment