Commit 5c3589ce by liumengfei

Merge branch 'developer' into production

parents 64ff28a6 4cb5a579
......@@ -112,6 +112,34 @@
</field>
<field name="storeviews" formElement="multiselect" class="Magento\Store\Ui\Component\Form\Field\StoreView">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">block</item>
<item name="default" xsi:type="number">0</item>
</item>
</argument>
<settings>
<validation>
<rule name="required-entry" xsi:type="boolean">true</rule>
</validation>
<dataType>int</dataType>
<tooltip>
<link>https://docs.magento.com/user-guide/configuration/scope.html</link>
<description>What is this?</description>
</tooltip>
<label translate="true">Store View</label>
<dataScope>store_id</dataScope>
</settings>
<formElements>
<multiselect>
<settings>
<options class="Magento\Cms\Ui\Component\Listing\Column\Cms\Options"/>
</settings>
</multiselect>
</formElements>
</field>
<field name="url" sortOrder="30" formElement="input">
<argument name="data" xsi:type="array">
......@@ -195,4 +223,6 @@
</fieldset>
</form>
\ No newline at end of file
......@@ -95,19 +95,6 @@
</argument>
</column>
<column name="desc">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="filter" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">Description</item>
<item name="resizeEnabled" xsi:type="boolean">true</item>
<item name="resizeDefaultWidth" xsi:type="string">60</item>
<item name="fieldClass" xsi:type="string">col3</item>
</item>
</argument>
</column>
<column name="url">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
......
......@@ -14,6 +14,7 @@ use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\File\Csv;
use Magento\Framework\ObjectManager\ObjectManager;
use Magento\Setup\Exception;
use Magento\Store\Model\App\Emulation;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
......@@ -166,12 +167,12 @@ class ReviewsImporter extends Command
return;
}
$storeId = $input->getOption('store_id');
if (!$storeId) {
$store_id = $input->getOption('store_id');
if (!$store_id) {
$output->writeln($this->errorWrapper("store_id没填"));
return;
}
$this->storeId = $storeId;
$this->storeId = $store_id;
$this->importCsvFile($path);
} catch (\Exception $e) {
$output->writeln($this->errorWrapper($e->getMessage()));
......@@ -192,6 +193,7 @@ class ReviewsImporter extends Command
private function insertDB($data)
{
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$reviewFactory = $objectManager->get("Magento\Review\Model\ReviewFactory");
$ratingFactory = $objectManager->get("Magento\Review\Model\RatingFactory");
......@@ -319,21 +321,15 @@ class ReviewsImporter extends Command
$review['size_fits'] = trim($row[6]);
$review['date'] = trim($row[7]);
if (empty(trim($review["sku"]))
|| empty(trim($review["detail"])
|| empty(trim($review["detail"]))
|| empty(trim($review['nickname']))
|| empty($review['date'])
|| empty($review['title'])
)
|| empty($review['title']
|| empty($review['size_fits'])
|| empty($review['ratings'])
)
) {
throw new \Exception("表格数据有空: {$row["name"]}");
}
if (!is_integer($review['size_fits'])) {
$review['size_fits'] = 3;
}
if (!is_integer($review['ratings'])) {
$review['ratings'] = 5;
throw new \Exception("表格数据有空!");
}
$data[] = $review;
}
......
......@@ -176,7 +176,7 @@
</block>
</container>
<block class="Magento\Checkout\Block\Cart\Coupon" name="checkout.cart.coupon" as="coupon" template="Magento_Checkout::cart/coupon.phtml" after="checkout.cart.summary.title"/>
<block class="Magento\Checkout\Block\Cart" name="checkout.cart.methods.bottom" template="Magento_Checkout::cart/methods-new.phtml">
<block class="Magento\Checkout\Block\Cart" name="checkout.cart.methods.bottom" template="Magento_Checkout::cart/methods.phtml">
<container name="checkout.cart.methods" as="methods" label="Payment Methods After Checkout Button">
<block class="Magento\Checkout\Block\Onepage\Link" name="checkout.cart.methods.onepage.bottom" template="Magento_Checkout::onepage/link.phtml" />
<block class="Magento\Checkout\Block\QuoteShortcutButtons" name="checkout.cart.shortcut.buttons" />
......
......@@ -105,7 +105,7 @@ $subtotalStr = $block->escapeHtml(
</div>
</div>
</div>
<!--
<style>
#we-accept{
text-align: center;
......@@ -122,6 +122,7 @@ $subtotalStr = $block->escapeHtml(
<div class="title"><?= __('We Accept') ?> </div>
<img src="/media/wysiwyg/we_accept.png" alt="">
</div>
-->
</div>
<?php endif; ?>
<script>
......
......@@ -78,6 +78,7 @@ define([
return Component.extend({
shoppingCartUrl: window.checkout.shoppingCartUrl,
checkoutUrl : window.checkout.checkoutUrl,
maxItemsToDisplay: window.checkout.maxItemsToDisplay,
cart: {},
......
......@@ -13,11 +13,12 @@
<body>
<referenceBlock name="product.info.description" remove="true" />
<referenceBlock name="product.attributes" remove="true" />
<referenceBlock name="catalog.product.related" remove="true" />
<referenceContainer name="content">
<block class="Magento\Catalog\Block\Product\View" name="product.recently_viewed.collector" template="Magento_Catalog::product/view/recently_viewed/collector.phtml" after="product.info.details"/>
</referenceContainer>
<referenceContainer name="content.aside">
<block class="Magento\Cms\Block\Block" name="checkout.cart.empty.recently" before="catalog.product.related">
<block class="Magento\Cms\Block\Block" name="checkout.cart.empty.recently" before="product.info.upsell">
<arguments>
<argument name="block_id" xsi:type="string">recently_viewed</argument>
</arguments>
......
......@@ -6,7 +6,7 @@
?>
<div class="product-intro__freeshipping product-intro__bg-none">
<div class="product-intro__freeshipping-abt action" data-trigger="trigger-shipping">
<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="product-intro__freeshipping-icon shipping joshine-clearfix"><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></div>
<div data-bind="mageInit: {
......@@ -130,7 +130,7 @@
</div>
</div>
<div class="product-intro__freeshipping-item full-line paddingTop-0 paddingBottom-0 action" data-trigger="trigger2">
<div class="product-intro__freeshipping-icon">
<div class="product-intro__freeshipping-icon joshine-clearfix">
<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
</div>
......@@ -199,6 +199,13 @@
</script>
<style>
.product-intro__freeshipping-icon
{
display: flex;
flex-wrap: nowrap;
align-items: center;
}
.product-intro__freeshipping-icon .svgicon {
width: 15px;
height: 15px;
......@@ -219,22 +226,17 @@
clear: both;
}
.free-wrapper p {
padding-left: 40px;font-size:13px;
}.product-intro__freeshipping-desc {
padding-left: 40px;font-size:13px;
}
.product-intro__freeshipping-icon.shipping p ,.product-intro__freeshipping-icon p{
display: inline-block;
line-height: 15px;
padding: 0 10px;
float: left; padding-left: 15px;
padding-left: 40px;
}
.product-intro__freeshipping-desc {
padding-left: 40px;
font-size: .8rem !important;
}
.product-intro__freeshipping-icon.shipping p, .product-intro__freeshipping-icon p {
display: inline-block;
line-height: 15px;
line-height: .9rem;
padding: 0 10px;
float: left;
padding-left: 15px;
}
......
......@@ -60,7 +60,7 @@
<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 joshine-clearfix " ><i class="svgicon svgicon-gd-shipping" style="position: relative;top: 4px;"></i> <p><?=__("Fast Delivery"); ?></p> <span class="svgicon svgicon-gd-more-grey product-intro__freeshipping-more" ></span>
</div>
<div class="free-wrapper">
......@@ -68,7 +68,7 @@
</div>
<div class="product-intro__freeshipping-item full-line paddingTop-0 paddingBottom-0 action" id="free-return-button" >
<div class="product-intro__freeshipping-icon">
<div class="product-intro__freeshipping-icon joshine-clearfix">
<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>
......@@ -91,6 +91,13 @@
});
</script>
<style>
.product-intro__freeshipping-icon
{
display: flex;
flex-wrap: nowrap;
align-items: center;
}
.product-intro__freeshipping-icon .svgicon {
width: 15px;
height: 15px;
......@@ -108,30 +115,27 @@
margin-bottom: 10px;
padding-bottom: 10px;
}
.free-wrapper > * {
font-size: .8rem;
}
.free-wrapper , .product-intro__freeshipping-desc{
clear: both;
}
.free-wrapper p {
padding-left: 40px;font-size:13px;
font-size: 12px;
color: #767676;
padding-left: 40px;
}.product-intro__freeshipping-desc {
padding-left: 40px;font-size:13px;
font-size: .8rem !important;
padding-left: 40px;
}
.product-intro__freeshipping-icon.shipping p ,.product-intro__freeshipping-icon p{
display: inline-block;
line-height: 15px;
padding: 0 10px;
float: left; padding-left: 15px;
}
.product-intro__freeshipping-icon.shipping p, .product-intro__freeshipping-icon p {
display: inline-block;
line-height: 15px;
padding: 0 10px;
float: left;
padding-left: 15px;
}
.product-intro__freeshipping-item > * {
font-size: 1rem;
}
.svgicon-gd-more-grey {
width: 16px;
......@@ -176,8 +180,7 @@
.joshine-desction .desction-left{
width: 90%;
flot: left;
font-weight: 600;
color: #000;
font-size: 1rem;
}
.joshine-desction .desction-right{
width: 10%;
......@@ -185,7 +188,6 @@
text-align: end;
font-size: larger;
color: #000;
font-weight: 600;
}
.joshine-desction .desction-info{
font-size: small;
......@@ -203,6 +205,38 @@
}
.joshine-description-mobile {
display: flex;
display: -webkit-box;
display: -ms-flexbox;
-webkit-box-pack: justify;
justify-content: space-between;
position: relative;
height: 2rem;
line-height: 1.9rem;
text-transform: capitalize;
font-size: 14px;
width: 100%;
text-align: left;
}
.description-enter {
padding-right: 1.25rem;
}
.joshine-ui-icon-toggle{
content: ' ';
position: absolute;
right: 0.125rem;
top: 50%;
margin-top: -0.75rem;
width: 1rem;
height: 1rem;
-webkit-mask-size: 1rem 1rem;
background-color: currentColor;
-webkit-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" /></svg>') no-repeat 50% 50%;
}
</style>
<div class="product-view-description">
......@@ -220,7 +254,7 @@ $description = $this->helper(Magento\Catalog\Helper\Output::class)->productAttri
);
if ($description) :
?>
<div class="joshine-desction">
<div class="joshine-desction joshine-hidden-sm joshine-hidden-xs">
<div id="accordion" data-mage-init='{
"accordion":{
"active": [0],
......@@ -241,11 +275,23 @@ if ($description) :
</div>
</div>
</div>
<div class="joshine-description-mobile joshine-hidden-md joshine-hidden-lg" style="border-bottom: 1px solid #e5e5e5; margin-top: 1em;" id="description-button">
<div class="description-enter">
<?= __("Description") ?>
</div>
<div class="description-text" style="display: flex; color: #767676;font-size: 12px;justify-content: center;align-items: center;">
<div class="description-text-left">
</div>
<span class="joshine-ui-icon-toggle"></span>
</div>
</div>
<?php endif;
if ($short_description) :
?>
<div class="joshine-desction">
<div class="joshine-desction joshine-hidden-sm joshine-hidden-xs">
<div id="accordion" data-mage-init='{
"accordion":{
"active": [0],
......@@ -266,6 +312,15 @@ if ($short_description) :
</div>
</div>
</div>
<div class="joshine-description-mobile joshine-hidden-md joshine-hidden-lg" id="short-description-button">
<div class="description-enter">
<?= __("Material") ?>
</div>
<div class="description-text" style="display: flex; color: #767676;font-size: 12px;justify-content: center;align-items: center;">
<span class="joshine-ui-icon-toggle"></span>
</div>
</div>
<?php endif;
?>
</div>
......
......@@ -66,6 +66,15 @@
break;
}
}
$short_description = $this->helper(Magento\Catalog\Helper\Output::class)->productAttribute($block->getShortDescription(),$block->getProduct()->getShortDescription(),'short_description');
$description = $this->helper(Magento\Catalog\Helper\Output::class)->productAttribute(
$block->getShortDescription(),
$block->getProduct()->getDescription(),
'description'
);
?>
</style>
......@@ -87,6 +96,7 @@
$('#free-return-button').click(function(data) {
$("#free-return").show();
$("#free-return").siblings().hide();
if (isMobile()){
$(".lis").slideToggle("slow");
}else{
......@@ -96,6 +106,29 @@
});
$('#freeshipping-button').click(function(data) {
$("#freeshipping").show();
$("#freeshipping").siblings().hide();
if (isMobile()){
$(".lis").slideToggle("slow");
}else{
$("#areaMask").fadeIn();
$("#areaLayer").animate({"right": 0});
}
});
$('#description-button').click(function(data) {
$("#description-content").show();
$("#description-content").siblings().hide();
if (isMobile()){
$(".lis").slideToggle("slow");
}else{
$("#description-content").fadeIn();
$("#description-content").animate({"right": 0});
}
});
$('#short-description-button').click(function(data) {
$("#short-description-content").show();
$("#short-description-content").siblings().hide();
if (isMobile()){
$(".lis").slideToggle("slow");
}else{
......@@ -112,6 +145,8 @@
$("#free-return").hide();
$("#size-chart").hide();
$("#freeshipping").hide();
$("#short-description-content").hide();
$("#description-content").hide();
}
/*close*/
......@@ -161,6 +196,12 @@
<?php echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('product-intro-fast-delivery')->toHtml();?>
</div>
<div class="description-content" id="description-content" style="display: none;">
<?php echo $description; ?>
</div>
<div class="short-description-content" id="short-description-content" style="display: none;">
<?php echo $short_description; ?>
</div>
</div>
<ul id="areaList" class="area-list" style="margin-bottom: 500px;"></ul>
</article>
......@@ -171,9 +212,9 @@
#product-intro__freeshipping-more-3{
display: revert;
color: #2d68a;
font-size: large;
float: right;
margin-top: 0px;
font-size: .9em;
text-decoration: underline;
}
@media (min-width: 1024px){
......
......@@ -379,8 +379,8 @@
}
.fotorama__active .fotorama__dot {
background-color: #ff5501;
border-color: #ff5501
background-color: #000;
border-color: #000;
}
.fotorama__nav__frame.fotorama__active .fotorama__nav__frame {
......
......@@ -8,51 +8,31 @@
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<update handle="checkout_cart_item_renderers"/>
<body>
<referenceContainer name="page.bottom.container" remove="true"/>
<referenceBlock name="checkout.cart.addtocart" remove="true" />
<referenceContainer name="footer-container" remove="true"/>
<referenceContainer name="nav.main.box" remove="true"/>
<referenceBlock name="catalog.topnav" remove="true" />
<referenceBlock name="top.search" remove="true" />
<referenceBlock name="header.search.bar" remove="true" />
<referenceBlock name="header.account" remove="true" />
<referenceBlock name="header.wishlist" remove="true" />
<referenceBlock name="minicart" remove="true" />
<referenceBlock name="checkout.cart.crosssell" remove="true"/>
<referenceContainer name="header.container">
<block class="Magento\Cms\Block\Block" name="cart.payment.top">
<arguments>
<argument name="block_id" xsi:type="string">cart_payment_top</argument>
</arguments>
</block>
</referenceContainer>
<referenceContainer name="columns.top">
<block class="Magento\Cms\Block\Block" name="progress.bar" before="-">
<arguments>
<argument name="block_id" xsi:type="string">progress_bar</argument>
</arguments>
</block>
</referenceContainer>
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" name="checkout.cart.footer" template="Magento_Checkout::footer.phtml" />
<referenceBlock name="checkout.cart.summary.title" remove="true"/>
<!-- -->
<!-- <referenceBlock name="checkout.cart.totals">-->
<!-- <arguments>-->
<!-- <argument name="jsLayout" xsi:type="array">-->
<!-- <item name="components" xsi:type="array">-->
<!-- <item name="block-totals" xsi:type="array">-->
<!-- <item name="children" xsi:type="array">-->
<!-- <item name="shpping-get" xsi:type="array">-->
<!-- <item name="component" xsi:type="string">Magento_Checkout/js/view/address-get</item>-->
<!-- </item>-->
<!-- </item>-->
<!-- </item>-->
<!-- </item>-->
<!-- </argument>-->
<!-- </arguments>-->
<!-- </referenceBlock>-->
<referenceContainer name="checkout.cart.totals.container">
<block class="Magento\Checkout\Block\Cart\Totals" name="checkout.cart.totals" template="Magento_Checkout::cart/totals.phtml" />
</referenceContainer>
<referenceBlock name="checkout.cart.totals">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="block-totals" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shpping-get" xsi:type="array">
<item name="component" xsi:type="string">Magento_Checkout/js/view/address-get</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
<referenceContainer name="checkout.cart.noitems">
<block class="Magento\Cms\Block\Block" name="checkout.cart.empty.recently">
<arguments>
......
......@@ -13,10 +13,6 @@ $hasCouponCode = (bool) strlen($block->getCouponCode());
?>
<style>
.checkout-cart-index .cart-container .block.discount.active{
border-bottom: 1px solid #ddd;
}
.checkout-cart-index .cart-container .block.discount.active .content{
padding:0px 1rem;
}
......@@ -37,13 +33,13 @@ $hasCouponCode = (bool) strlen($block->getCouponCode());
>
-->
<div class="block discount"
id="block-discount"
data-mage-init='{"collapsible":{"active":"true", "openedState": "active", "saveState": false}}'
>
id="block-discount">
<!--
<div class="title" data-role="title" aria-controls="block-summary" role="tab" aria-selected="true" aria-expanded="true" tabindex="0">
<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;">
-->
<div class="content" style="display: block;">
<form id="discount-coupon-form"
action="<?= $block->escapeUrl($block->getUrl('checkout/cart/couponPost')) ?>"
method="post"
......@@ -53,8 +49,7 @@ $hasCouponCode = (bool) strlen($block->getCouponCode());
"cancelButton": "button.action.cancel"}}'>
<div class="fieldset coupon<?= $hasCouponCode ? ' applied' : '' ?>">
<input type="hidden" name="remove" id="remove-coupon" value="0" />
<div class="field" style="width: 50%;">
<label for="coupon_code" class="label"><span><?= $block->escapeHtml(__('Enter discount code')) ?></span></label>
<div class="field" style="width: 70%;">
<div class="control" style="float: left;margin-top: 0px;width: 100%;">
<input type="text"
class="input-text"
......@@ -68,16 +63,16 @@ $hasCouponCode = (bool) strlen($block->getCouponCode());
/>
</div>
</div>
<div class="actions-toolbar" style="clear: none;">
<div class="actions-toolbar" style="clear: none;margin-top: 1.25rem;margin-bottom: 0px;">
<?php if (!$hasCouponCode) :?>
<div class="primary">
<button class="action apply primary" style="padding: 0.5rem 1rem;width:100%;background-color: #444;" type="button" value="<?= $block->escapeHtmlAttr(__('Apply Discount')) ?>">
<button class="action apply primary" style="padding: 0.5rem 1rem;width:100%;background-color: #999;" type="button" value="<?= $block->escapeHtmlAttr(__('Apply Discount')) ?>">
<span><?= $block->escapeHtml(__('Apply Discount')) ?></span>
</button>
</div>
<?php else :?>
<div class="primary">
<button type="button" class="action cancel primary" style="padding: 0.5rem 1rem;width:100%;background-color: #444;" value="<?= $block->escapeHtmlAttr(__('Cancel Coupon')) ?>"><span><?= $block->escapeHtml(__('Cancel Coupon')) ?></span></button>
<button type="button" class="action cancel primary" style="padding: 0.5rem 1rem;width:100%;background-color: #999;" value="<?= $block->escapeHtmlAttr(__('Cancel Coupon')) ?>"><span><?= $block->escapeHtml(__('Cancel Coupon')) ?></span></button>
</div>
<?php endif; ?>
</div>
......
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
// phpcs:disable Magento2.Templates.ThisInTemplate
/** @var $block \Magento\Checkout\Block\Cart\Grid */
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$_cart = $objectManager->get('\Magento\Checkout\Model\Cart');
$items = [];
$priceSum = 0;
$_items = $block->getItems();
if (count($_items) > 0) {
foreach ($_items as $key => $value) {
$_item['google_business_vertical'] = 'retail';
$_item['id'] = $value->getSku();
$items[] = $_item;
$priceSum += $value->getPrice() * $value->getQty();
}
}
$subtotal = $_cart->getSubtotal();
$_shipping = $objectManager->get('\Magento\Checkout\Block\Cart\Shipping');
$free_shipping_subtotal = $_shipping->getNoFormatFreeShippingSubtotal();
$is_free_shipping = false;
$difference_price = 0;
if($subtotal >= $free_shipping_subtotal)
{
$is_free_shipping = true;
}
else
{
$difference_price = $free_shipping_subtotal - $subtotal;
}
$mobileDetect = $objectManager->get(\Joshine\Common\Lib\MobileDetect\MobileDetect::class);
?>
<?php $mergedCells = ($this->helper(Magento\Tax\Helper\Data::class)->displayCartBothPrices() ? 2 : 1); ?>
<?= $block->getChildHtml('form_before') ?>
<div class="cart-top">
<h1 class="cart-title">Shopping Cart</h1>
<?php if (!$is_free_shipping): ?>
<div class="msg-content">
<?= $block->escapeHtml(__('Spend')) ?> <?= $block->escapeHtml(
$this->helper(Magento\Checkout\Helper\Data::class)->formatPrice($difference_price),
['span']
) ?> <?= $block->escapeHtml(__('more and get free shipping!')) ?>
</div>
<?php endif ?>
</div>
<form action="<?= $block->escapeUrl($block->getUrl('checkout/cart/updatePost')) ?>"
method="post"
id="form-validate"
data-mage-init='{"Magento_Checkout/js/action/update-shopping-cart":
{"validationURL" : "<?= $block->escapeUrl($block->getUrl('checkout/cart/updateItemQty')) ?>",
"updateCartActionContainer": "#update_cart_action_container"}
}'
class="form form-cart">
<?= $block->getBlockHtml('formkey') ?>
<div class="cart table-wrapper<?= $mergedCells == 2 ? ' detailed' : '' ?>">
<?php if ($block->getPagerHtml()): ?>
<div class="cart-products-toolbar cart-products-toolbar-top toolbar"
data-attribute="cart-products-toolbar-top"><?= $block->getPagerHtml() ?>
</div>
<?php endif ?>
<?php foreach ($block->getItems() as $_item): ?>
<?= $block->getItemHtml($_item) ?>
<?php endforeach ?>
<?php if ($block->getPagerHtml()): ?>
<div class="cart-products-toolbar cart-products-toolbar-bottom toolbar"
data-attribute="cart-products-toolbar-bottom"><?= $block->getPagerHtml() ?>
</div>
<?php endif ?>
</div>
</form>
<script>
require(['jquery'], function ($) {
$('.add-qty').click(function(){
var input = $(this).prev().find('.input-text');
if (input.val()) {
var current = parseInt(input.val());
input.val(current + 1);
// submit
$("#form-validate").submit();
} else {
return false;
}
});
$('.lower-qty').click(function(){
var input = $(this).next().find('.input-text');
if (input.val() > 1) {
var current = parseInt(input.val());
input.val(current - 1);
// submit
$("#form-validate").submit();
} else {
return false;
}
});
var isMobile = window.matchMedia("(pointer:coarse)").matches;
if (isMobile) {
var fixHeight = $('.area-blk-notitle').height();
$(window).scroll(function () {
$(window).scroll(function () {
if($('.area-blk-notitle').length < 1){
return false;
}
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)
{
$('.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");
}
}
else {
$('.area-blk-notitle .content-wrap').removeClass("area-fix");
}
});
});
}
});
</script>
<script>
dataLayer = [];
dataLayer.push({
'event': 'add_to_cart',
'value': <?= $priceSum ?>,
'items': <?= json_encode($items, true) ?>
});
</script>
<?= $block->getChildHtml('shopping.cart.table.after') ?>
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
?>
<?php
/** @var $block \Magento\Checkout\Block\Cart */
?>
<?php if (!$block->hasError()) :?>
<?php $methods = $block->getMethods('methods') ?: $block->getMethods('top_methods') ?>
<ul class="checkout methods items checkout-methods-items">
<?php foreach ($methods as $code => $method): ?>
<?php $methodHtml = $block->getMethodHtml($method); ?>
<?php if (trim($methodHtml) !== '') :?>
<?php if (trim($method) === 'checkout.cart.shortcut.buttons') :?>
<li class="item" style="order:0;"><?= /* @noEscape */ $methodHtml ?></li>
<?php else : ?>
<li class="item" style="order:1;"><?= /* @noEscape */ $methodHtml ?></li>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php if ($block->getContinueShoppingUrl()): ?>
<div class="continue-content" style="height:40px;">
<button class="action continue" style="width:100%;" onclick="window.location.href='<?= $block->escapeUrl($block->getContinueShoppingUrl()) ?>'">Continue shopping</button>
</div>
<?php endif; ?>
<div class="shipping-msg" style="text-align: center;margin:1rem 0px;">Taxes and shipping fee will be calculated at checkout
</div>
<script>
require(['jquery'], function ($) {
var isMobile = window.matchMedia("(pointer:coarse)").matches;
if (isMobile) {
$(window).scroll(function () {
var positionUl = $('.cart-container .checkout-methods-items li:first-child')
if (window.outerHeight + $(document).scrollTop() < $(positionUl).parent().offset().top + 50) {
$(positionUl).removeClass("button-static");
} else {
$(positionUl).addClass("button-static");
}
});
}
});
</script>
......@@ -7,7 +7,6 @@
/** @var $block \Magento\Checkout\Block\Cart\Sidebar */
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
?>
<div data-block="minicart" class="minicart-wrapper">
<a class="action showcart" href="<?= $block->escapeUrl($block->getShoppingCartUrl()) ?>"
data-bind="scope: 'minicart_content'">
......@@ -35,6 +34,7 @@
"triggerClass":"active",
"parentClass":"active",
"buttons":[]}}'>
<div id="minicart-content-wrapper" data-bind="scope: 'minicart_content'">
<!-- ko template: getTemplate() --><!-- /ko -->
</div>
......
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
?>
<?php
/**
* Shopping cart totals template
* @var $block \Magento\Checkout\Block\Cart\Totals
*/
$code = $block->getQuote()->getCouponCode();
$subtotal = 0;
if($code == null)
{
$subtotal = $block->getQuote()->getSubtotalWithDiscount();
}
else{
$subtotal = $block->getQuote()->getBaseSubtotalWithDiscount();
}
//获取商品总价格
$total = $block->getQuote()->getSubtotal();
$discount = 0;
if($total > $subtotal)
{
$discount = $total - $subtotal;
$discountStr = $block->escapeHtml(
$this->helper(Magento\Checkout\Helper\Data::class)->formatPrice($discount),
['span']
);
}
$subtotalStr = $block->escapeHtml(
$this->helper(Magento\Checkout\Helper\Data::class)->formatPrice($subtotal),
['span']
);
?>
<div id="cart-totals" class="cart-totals" data-bind="scope:'block-totals'">
<?php if ($discount > 0 ): ?>
<div class="discount-area">
<div class="discount-title">discount</div>
<div class="discount-price">-<?= $discountStr ?></div>
</div>
<?php endif; ?>
<div class="total-area">
<div class="total-title">Total</div>
<div class="total-price"><?= $subtotalStr ?></div>
</div>
</div>
......@@ -15,7 +15,7 @@ use Magento\Framework\Escaper;
<?php if ($block->isPossibleOnepageCheckout()): ?>
<button type="button"
data-role="proceed-to-checkout"
title="<?= $escaper->escapeHtmlAttr(__('Checkout Now')) ?>"
title="<?= $escaper->escapeHtmlAttr(__('Checkout')) ?>"
data-mage-init='{
"Magento_Checkout/js/proceed-to-checkout":{
"checkoutUrl":"<?= $escaper->escapeJs($block->getCheckoutUrl()) ?>"
......@@ -24,8 +24,12 @@ use Magento\Framework\Escaper;
class="action primary checkout<?= ($block->isDisabled()) ? ' disabled' : '' ?>"
<?php if ($block->isDisabled()): ?>
disabled="disabled"
<?php endif; ?> style=" background: #0000; height: 40px;font-size: 22px;text-transform: uppercase;font-weight: 400;">
<span data-v-20221108="" class="secure"><img data-v-b14bd780="" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAA3CAYAAAClxaIBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMyODNDODA2MkIwNTExRUNCNUFCRkFGMzY4RjkyOTdCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMyODNDODA3MkIwNTExRUNCNUFCRkFGMzY4RjkyOTdCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzI4M0M4MDQyQjA1MTFFQ0I1QUJGQUYzNjhGOTI5N0IiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzI4M0M4MDUyQjA1MTFFQ0I1QUJGQUYzNjhGOTI5N0IiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7niMRCAAAEKklEQVR42tSaW0gVQRjHt01SwiyTJKuHiugiEVIUVhBlPRRBN7ppUCT2EGVB0A2SoB6iJ596iPJBLJPM7B5SdDXNyjIxy0iLIsEoNYuu1vb/8DuwnM7OzszZPR7/8FNxZ3b2f+ab2ZlvTj/LsgyPlQhWgvlgNkgAXaAS3ABnQIenLZIJj0gGB8EHSyy6fgCM9KptL24yCOwFbZaaPnG9xN40EQ+2gxYrPL0DO/l+Ws/ST2NMDAM5YBMY42Fkt4BCUADeq1RUMTELrAVZIMnwT1/AKTZU5YWJiWAxWAOmG5HXA1AKroM6WRNxIJ1ZAqaCWKP3RQ9ZDS6AGnAf/LCbSMPvuWAeSAXjjOhXM2jk984tMvEUf0wx+q7qTX6b9mV9Nu2x1Uf1g0z8jsYQAY9AJq+/RPpp8rwcbQYaeEovAfEu5btMz1eU4RugN/Y62/9GuNRpj8GPzigx8Bjs5hebXaNc6nWQidYoMbCReyLUWk2k92TiXRQYoPB54XB9iEv9t6bqitGHMbBdYIBkCq79okgyOZxae8nAYd62Cgeu4NqbQE+08lo+0gbOgWKJsq9dTHSQib/gVYRNvAT7JctWOQx40nN7vNVFeI+QqVj+l8O1WruJ2giGUR7oVqgzQ7BIrbGnbAaCdstfPQVHFBIA48FVrhdKTYGyMezoG7taqPnpdvMsskC02gRbJO+5A2xw2efcCzUH39U0cAtM40brBeXyJe9ZIGGAdDNUBjBNMTQucpfb75HvUL5cMoTOC8LHru8gySl51ijx8NVghcND0Nh6EqLOOAkD1yQNkM7Z6wa/0ktdQqcMzARnHcrQ2CoPCqtKiffQNZCssNcvESWUJwvcD1WYWWptveCWnqxQ6AFSJ+d/HXuigfM7obReYcAXcm9cAV8F5S6D4YrZlqL/dqMhPplMwXh4CHIke4PGToLgepFiDwQ0SSYrPgC8kZiZkl1MjBVcy9c0UKGS2t8qcUOahVZrpOKzNQ2QMlRMxEqc+AR65ZCCgbQwDNzmKVzpkGWbwovvpISBATxOdJUOTFUT/UGzgpHzLibKwzBwTHRv0f71D8iVnPZoihwNrjpc3wPGai7fKS+2S5z4dw+DYsU11eWg+qlhjANLZvKQMTEYdCgaKQtaE+nqksyEESOTOgeb+RxNNrRIR/kwJFkzjGg3ly13jiQ/PR63IqtFfpxjm7zsiITy/DzHTuHMiG6IyIjCNkulgs5hfBqvdON8MEBb5DmqlUyNhqgnlvlgoMnoOTM3ImGCVKGYAHMTpVEzdE+tzDAapi3iKg8MPDN6ztG1k9pmmA9AX8CiQ/w2zfp32EB4ZyQefXGKshn1itPoSSuKvrRlX/UWShrY52G7npoIkMvJrVD6CJZ43aYfJogJ4HSQgRMgxY/2dF52KloOlnKy7YJfjfwTYAD0328CQiS8EQAAAABJRU5ErkJggg=="></span>
<span><?= $escaper->escapeHtml(__('Checkout Now')) ?></span>
<?php endif; ?> style="background: #7E6452; height: 40px;font-size: 16px;font-weight: 400;">
<!--
<span data-v-20221108="" class="secure">
<img data-v-b14bd780="" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAA3CAYAAAClxaIBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMyODNDODA2MkIwNTExRUNCNUFCRkFGMzY4RjkyOTdCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMyODNDODA3MkIwNTExRUNCNUFCRkFGMzY4RjkyOTdCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzI4M0M4MDQyQjA1MTFFQ0I1QUJGQUYzNjhGOTI5N0IiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzI4M0M4MDUyQjA1MTFFQ0I1QUJGQUYzNjhGOTI5N0IiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7niMRCAAAEKklEQVR42tSaW0gVQRjHt01SwiyTJKuHiugiEVIUVhBlPRRBN7ppUCT2EGVB0A2SoB6iJ596iPJBLJPM7B5SdDXNyjIxy0iLIsEoNYuu1vb/8DuwnM7OzszZPR7/8FNxZ3b2f+ab2ZlvTj/LsgyPlQhWgvlgNkgAXaAS3ABnQIenLZIJj0gGB8EHSyy6fgCM9KptL24yCOwFbZaaPnG9xN40EQ+2gxYrPL0DO/l+Ws/ST2NMDAM5YBMY42Fkt4BCUADeq1RUMTELrAVZIMnwT1/AKTZU5YWJiWAxWAOmG5HXA1AKroM6WRNxIJ1ZAqaCWKP3RQ9ZDS6AGnAf/LCbSMPvuWAeSAXjjOhXM2jk984tMvEUf0wx+q7qTX6b9mV9Nu2x1Uf1g0z8jsYQAY9AJq+/RPpp8rwcbQYaeEovAfEu5btMz1eU4RugN/Y62/9GuNRpj8GPzigx8Bjs5hebXaNc6nWQidYoMbCReyLUWk2k92TiXRQYoPB54XB9iEv9t6bqitGHMbBdYIBkCq79okgyOZxae8nAYd62Cgeu4NqbQE+08lo+0gbOgWKJsq9dTHSQib/gVYRNvAT7JctWOQx40nN7vNVFeI+QqVj+l8O1WruJ2giGUR7oVqgzQ7BIrbGnbAaCdstfPQVHFBIA48FVrhdKTYGyMezoG7taqPnpdvMsskC02gRbJO+5A2xw2efcCzUH39U0cAtM40brBeXyJe9ZIGGAdDNUBjBNMTQucpfb75HvUL5cMoTOC8LHru8gySl51ijx8NVghcND0Nh6EqLOOAkD1yQNkM7Z6wa/0ktdQqcMzARnHcrQ2CoPCqtKiffQNZCssNcvESWUJwvcD1WYWWptveCWnqxQ6AFSJ+d/HXuigfM7obReYcAXcm9cAV8F5S6D4YrZlqL/dqMhPplMwXh4CHIke4PGToLgepFiDwQ0SSYrPgC8kZiZkl1MjBVcy9c0UKGS2t8qcUOahVZrpOKzNQ2QMlRMxEqc+AR65ZCCgbQwDNzmKVzpkGWbwovvpISBATxOdJUOTFUT/UGzgpHzLibKwzBwTHRv0f71D8iVnPZoihwNrjpc3wPGai7fKS+2S5z4dw+DYsU11eWg+qlhjANLZvKQMTEYdCgaKQtaE+nqksyEESOTOgeb+RxNNrRIR/kwJFkzjGg3ly13jiQ/PR63IqtFfpxjm7zsiITy/DzHTuHMiG6IyIjCNkulgs5hfBqvdON8MEBb5DmqlUyNhqgnlvlgoMnoOTM3ImGCVKGYAHMTpVEzdE+tzDAapi3iKg8MPDN6ztG1k9pmmA9AX8CiQ/w2zfp32EB4ZyQefXGKshn1itPoSSuKvrRlX/UWShrY52G7npoIkMvJrVD6CJZ43aYfJogJ4HSQgRMgxY/2dF52KloOlnKy7YJfjfwTYAD0328CQiS8EQAAAABJRU5ErkJggg==">
</span>
-->
<span><?= $escaper->escapeHtml(__('Checkout')) ?></span>
</button>
<?php endif?>
......@@ -4,17 +4,18 @@
* See COPYING.txt for license details.
*/
-->
<div class="block-title">
<strong>
<span
class="qty empty"
text="getCartParam('summary_count')"
data-bind="css: { empty: !!getCartParam('summary_count') == false },
attr: { title: $t('Items in Cart') }">
</span>
</strong>
</div>
<if args="getCartParam('summary_count')">
<div class="block-title">
<strong>
<span class="trade-cart-banner--product-title--icon">
<svg aria-hidden="true" focusable="false" role="presentation" width="18" height="13" viewBox="0 0 18 13" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" fill-rule="evenodd" d="M6.23 9.1L2.078 5.2 0 7.15 6.23 13 18 1.95 15.923 0z"></path>
</svg>
</span>
Added to your cart
</strong>
</div>
</if>
<div class="block-content">
<button type="button"
id="btn-minicart-close"
......@@ -44,13 +45,6 @@
<div class="items-total" style="display: block;font-size: inherit;font-family: 'Outfit-Regular';">
<span class="count" if="maxItemsToDisplay < getCartLineItemsCount()" text="maxItemsToDisplay"></span>
<translate args="'of'" if="maxItemsToDisplay < getCartLineItemsCount()"></translate>
<span class="count" text="getCartParam('summary_count')"></span>
<!-- ko if: (getCartParam('summary_count') > 1) -->
<span translate="'Items in Cart'"></span>
<!--/ko-->
<!-- ko if: (getCartParam('summary_count') === 1) -->
<span translate="'Item in Cart'"></span>
<!--/ko-->
<each args="getRegion('subtotalContainer')" render=""></each>
</div>
......@@ -61,22 +55,28 @@
<if args="getCartParam('cart_empty_message')">
<p class="minicart empty text" text="getCartParam('cart_empty_message')"></p>
<div class="actions">
<a class="action viewcart" data-bind="attr: {href: shoppingCartUrl}">
<div class="secondary">
<a class="action viewcart" data-bind="attr: {href: shoppingCartUrl}">
<span translate="'View and Edit Cart'"></span>
</a>
</div>
</a>
</div>
</if>
</ifnot>
<div class="actions" if="getCartParam('summary_count')">
<div class="secondary" style="background: #ffa800;width: 100%;color: #fff;font-size: 18px;height: 35px;">
<a class="action viewcart" data-bind="attr: {href: shoppingCartUrl}" style="vertical-align: sub;color: #ffff;">
<span translate="'View and Edit Cart'"></span>
</a>
</div>
<div class="actions minidiv" if="getCartParam('summary_count')">
<a class="action viewcart" data-bind="attr: {href: shoppingCartUrl}" style="vertical-align: sub;color: #ffff;">
<div class="secondary" style="background-color: #FAF3FA;width: 100%;color: #7E6452;font-size: 16px;height: 40px;line-height: 40px;border: 1px solid #7E6452;">
<span class="exin" translate="'View and Edit Cart'"></span><span class="exin">(<span class="count" text="getCartParam('summary_count')"></span>)</span>
</div>
</a>
</div>
<div class="actions minidiv" if="getCartParam('summary_count')">
<a class="action checkoutbtn" data-bind="attr: {href: checkoutUrl}" style="vertical-align: sub;color: #ffff;">
<div class="secondary" style="background-color: #7E6452;width: 100%;font-size: 16px;height: 40px;line-height: 40px;">
<span class="exin">checkout</span>
</div>
</a>
</div>
<div id="minicart-widgets" class="minicart-widgets" if="regionHasElements('promotion')">
<each args="getRegion('promotion')" render=""></each>
</div>
......
......@@ -9,14 +9,14 @@
<!-- ko if: product_has_url -->
<a data-bind="attr: {href: product_url, title: product_name}" tabindex="-1" class="product-item-photo">
<!-- ko foreach: $parent.getRegion('itemImage') -->
<!-- ko template: {name: getTemplate(), data: item.product_image} --><!-- /ko -->
<!-- ko template: {name: getTemplate(), data: item.product_image} --><!-- /ko -->
<!-- /ko -->
</a>
<!-- /ko -->
<!-- ko ifnot: product_has_url -->
<span class="product-item-photo">
<!-- ko foreach: $parent.getRegion('itemImage') -->
<!-- ko template: {name: getTemplate(), data: item.product_image} --><!-- /ko -->
<!-- ko template: {name: getTemplate(), data: item.product_image} --><!-- /ko -->
<!-- /ko -->
</span>
<!-- /ko -->
......@@ -27,12 +27,33 @@
<a data-bind="attr: {href: product_url}, html: $parent.getProductNameUnsanitizedHtml(product_name)"></a>
<!-- /ko -->
<!-- ko ifnot: product_has_url -->
<span data-bind="html: $parent.getProductNameUnsanitizedHtml(product_name)"></span>
<span data-bind="html: $parent.getProductNameUnsanitizedHtml(product_name)"></span>
<!-- /ko -->
</strong>
<!-- ko if: options.length -->
<div class="product options">
<div data-role="content" class="content">
<dl class="product options list">
<!-- ko foreach: { data: options, as: 'option' } -->
<dt class="label"><!-- ko text: option.label --><!-- /ko --></dt>
<dd class="values">
<!-- ko if: Array.isArray(option.value) -->
<span data-bind="html: $parents[1].getOptionValueUnsanitizedHtml(option.value.join('<br/>'))"></span>
<!-- /ko -->
<!-- ko if: (!Array.isArray(option.value) && ['file', 'html'].includes(option.option_type)) -->
<span data-bind="html: $parents[1].getOptionValueUnsanitizedHtml(option.value)"></span>
<!-- /ko -->
<!-- ko if: (!Array.isArray(option.value) && !['file', 'html'].includes(option.option_type)) -->
<span data-bind="text: option.value"></span>
<!-- /ko -->
</dd>
<!-- /ko -->
</dl>
</div>
</div>
<!-- /ko -->
<div class="product-item-pricing">
<div class="product-item-pricing" style="font-size: 18px;">
<div class="details-qty qty">
<span class="qty-wrapper" data-bind="html: qty"></span> *
<!-- ko if: canApplyMsrp -->
......@@ -45,11 +66,11 @@
<!-- ko ifnot: canApplyMsrp -->
<!-- ko foreach: $parent.getRegion('priceSidebar') -->
<!-- ko template: {name: getTemplate(), data: item.product_price, as: 'price'} --><!-- /ko -->
<!-- ko template: {name: getTemplate(), data: item.product_price, as: 'price'} --><!-- /ko -->
<!-- /ko -->
<!-- /ko -->
</div>
<!--
<div class="product actions">
<div class="secondary">
<a href="#" data-bind="attr: {'data-cart-item': item_id, title: $t('Remove item')}"
......@@ -58,6 +79,7 @@
</a>
</div>
</div>
-->
</div>
</div>
<div class="message notice" if="$data.message">
......
......@@ -4,11 +4,14 @@
* See COPYING.txt for license details.
*/
-->
<div class="subtotal" style="width: 47%;float: right;">
<span class="label">
<!-- ko i18n: 'Cart Subtotal' --><!-- /ko -->
<div class="subtotal">
<span class="label" style="
font-size: 18px;
color: gray;
">
<!-- ko i18n: 'Cart subtotal' --><!-- /ko -->
</span>
:
<!-- ko foreach: elems -->
<!-- ko template: getTemplate() --><!-- /ko -->
<!-- /ko -->
......
......@@ -27,7 +27,7 @@
<div class="actions-toolbar" if="maxCartItemsToDisplay < getCartLineItemsCount()">
<div class="secondary">
<a class="action viewcart" data-bind="attr: {href: cartUrl}">
<span data-bind="i18n: 'View and Edit Cart'"></span>
<span data-bind="i18n: 'View and Edit Cart'i18n: 'View and Edit Cart'"></span>
</a>
</div>
</div>
......
......@@ -26,8 +26,24 @@ if ($block->getIsInCatalogProduct()) {
$isInCatalogProduct = $block->getIsInCatalogProduct();
}
?>
<?php
if(strpos($block->escapeUrl($block->getImageUrl()),'checkout-logo-medium') !== false){
$imgsrc = $block->getViewFileUrl('Magento_Paypal::images/paypal-color.svg');
$class = 'checkout-logo-medium';
$classFirst = '';
} else {
$imgsrc = $block->getViewFileUrl('Magento_Paypal::images/paypal-credit.png');
$class = 'paypal-credit displayno';
$classFirst = 'displayno';
}
?>
<div data-label="<?= $block->escapeHtml(__('or')) ?>"
class="paypal checkout <?= /* @noEscape */ $labelPosition ?> paypal-logo
class="paypal checkout <?= /* @noEscape */ $labelPosition ?> <?= /* @noEscape */ $classFirst ?> paypal-logo
<?= /* @noEscape */ $shortcutHtmlId ?>"
data-mage-init='{
"paypalCheckout": {
......@@ -36,15 +52,6 @@ if ($block->getIsInCatalogProduct()) {
}
}'
>
<?php
if(strpos($block->escapeUrl($block->getImageUrl()),'checkout-logo-medium') !== false){
$imgsrc = $block->getViewFileUrl('Magento_Paypal::images/paypal-color.svg');
$class = 'checkout-logo-medium';
} else {
$imgsrc = $block->getViewFileUrl('Magento_Paypal::images/paypal-credit.png');
$class = 'paypal-credit displayno';
}
?>
<div class="<?= $class ?>">
<input type="image" data-action="checkout-form-submit"
data-checkout-url="<?= $block->escapeUrl($block->getCheckoutUrl()) ?>"
......@@ -57,6 +64,6 @@ if ($block->getIsInCatalogProduct()) {
<img src="<?= $block->escapeHtml($linkImage['src']) ?>" />
</a>
<?php endif; ?>
<div class="checkout-txt">Checkout</div>
<div class="checkout-txt" style="display:contents;"></div>
</div>
</div>
......@@ -61,19 +61,3 @@ $quickSearchUrl = $allowedSuggestion ? $escaper->escapeUrl($helper->getSuggestUr
</form>
</div>
</div>
<script>
require([
'jquery'
], function ($) {
$("#search").on("focus",function () {
$(this).css("width","500px").css("font-size","20px");
});
$('#search').on('blur',function (){
if (!$(this).val()){
$(this).attr("style","");
}
});
});
</script>
......@@ -451,8 +451,8 @@ define([
if (item.id == 137) {
// Create new control
var sizeContent = '<div class="swatch-attribute-selected-option-size-content" style="display:block;">'+
'<div style="font-size:.32rem;color:#999999;">'+$.mage.__("Product Size Describe")+ '</div>'+
'<span style="color:#0a0a0a;" class="'+classes.attributeSelectedOptionLabelClass + '">'+item.options[0].label+'</span></div>';
'<div>'+$.mage.__("Product Size Describe")+ '</div>'+
'<span class="'+classes.attributeSelectedOptionLabelClass + '">'+item.options[0].label+'</span></div>';
container.append(
'<div class="' + classes.attributeClass + ' ' + item.code + '" ' +
......
......@@ -12,8 +12,8 @@
<height>375</height>
</image>
<image id="cart_page_product_thumbnail" type="small_image">
<width>96</width>
<height>120</height>
<width>150</width>
<height>199</height>
</image>
<image id="category_page_grid" type="small_image">
<width>400</width>
......@@ -272,7 +272,7 @@
</vars>
<!-- Bundles are always generated by Magento regardless of config value -->
<vars module="Js_Bundle">
<var name="bundle_size">2MB</var>
<var name="bundle_size">1MB</var>
</vars>
<exclude>
<item type="file">Lib::chartjs/Chart.min.js</item>
......
......@@ -22,6 +22,16 @@
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgyMnYxOEgweiIvPjxwYXRoIGQ9Ik05LjUgMGwyLjI0MyA2Ljg3NUgxOWwtNS44NzEgNC4yNUwxNS4zNyAxOCA5LjUgMTMuNzUgMy42MjkgMThsMi4yNDItNi44NzVMMCA2Ljg3NWg3LjI1N0w5LjUgMHoiIGZpbGw9IiNFRDlEMDAiLz48L3N2Zz4=);
}
.rating-result::before, .rating-result > span::before {
left: -5px;
}
.rating-result.-lg {
width: 9rem;
&::before, & > span::before {
-webkit-mask-size: 1.8rem 1.8rem;
}
}
/*点赞图标*/
.joshine-like {
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgyMHYxOEgweiIvPjxwYXRoIGQ9Ik0zLjg5NiA3LjI4NkguNTU2QS41NTQuNTU0IDAgMCAwIDAgNy44NDh2OC45ODVjMCAuMzE0LjI0NS41NjEuNTU3LjU2MWgzLjM0YS41NTMuNTUzIDAgMCAwIC41NTYtLjU2MVY3Ljg0OGEuNTUzLjU1MyAwIDAgMC0uNTU3LS41NjJ6TTIwIDguMzVjMC0uOTE1LS42MjMtMS44NC0xLjgxMy0xLjg0aC01LjM5MmMuNzctMS4zOTEuOTk3LTMuMzQ3LjQ2Mi00Ljc3OEMxMi44NjMuNjggMTIuMTEuMDY2IDExLjEzOS4wMDRsLS4wMTYtLjAwMkExLjE3IDEuMTcgMCAwIDAgOS44ODkgMS4wOEM5Ljc1MSAyLjUgOS4xMzQgNS4wMSA4LjI1MSA1LjljLS43NDQuNzUtMS4zOCAxLjA2NS0yLjQzNiAxLjU4Ni0uMTUyLjA3NS0uMzIuMTU3LS40OTYuMjQ2YTEuNCAxLjQgMCAwIDEgLjAwNS4xMTd2OC44OTNsLjM3Ny4xM0M3LjQ0MyAxNy40NzggOC45NDggMTggMTEuMjQ4IDE4aDQuMzZjMS4xOSAwIDEuODEyLS45MjYgMS44MTItMS44NDFhMiAyIDAgMCAwLS4xNjMtLjc5MyAxLjcxOCAxLjcxOCAwIDAgMCAxLS41NTljLjI5Mi0uMzM0LjQ1My0uNzc5LjQ1My0xLjI1MSAwLS4yNy0uMDU1LS41NDMtLjE2My0uNzkyLjk1Ni0uMTY2IDEuNDUzLS45OTMgMS40NTMtMS44MSAwLS40NzUtLjE2OC0uOTUzLS40OTQtMS4zMDIuMzI2LS4zNS40OTQtLjgyNy40OTQtMS4zMDJ6IiBmaWxsPSIjQzRDNEM0Ii8+PC9zdmc+);
......@@ -180,6 +190,9 @@ fieldset[disabled] a.joshine-btn {
.joshine-inline-block {
display: inline-block;
}
.joshine-flex{
display: flex;
}
.joshine-pagination {
display: flex;
......@@ -361,4 +374,29 @@ fieldset[disabled] a.joshine-btn {
left: auto;
z-index: 12;
cursor: url('@{baseDir}images/favicon-next.ico'), auto;
}
.cursor-zoom-in:hover {
cursor: url('@{baseDir}images/cursor-zoom-in.svg'), auto;
}
.joshine-ui-icon-show {
content: ' ';
width: 1.5rem;
height: 1.5rem;
-webkit-mask-size: 1rem 1rem;
background-color: currentColor;
-webkit-mask: url('@{baseDir}images/cursor-zoom-in.svg'), auto;
}
.joshine-ui-icon-toggle{
content: ' ';
position: absolute;
right: 0.125rem;
top: 50%;
margin-top: -0.75rem;
width: 1rem;
height: 1.5rem;
-webkit-mask-size: 1rem 1rem;
background-color: currentColor;
-webkit-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" /></svg>') no-repeat 50% 50%;
}
\ No newline at end of file
......@@ -11,4 +11,68 @@
url('../fonts/iconfont.ttf?t=1666939843803') format('truetype');
font-weight: normal;
font-style: normal;
}
\ No newline at end of file
}
/* devanagari */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
src: url('../fonts/devanagari-poppins.woff2') format('woff2');
unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF;
}
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
src: url('../fonts/latin-ext-popoins.woff2') format('woff2');
unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
src: url('../fonts/latin-popoins.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url('../fonts/cyrillic-ext-montserrat.woff2') format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url('../fonts/cyrillic-montserrat.woff2') format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url('../fonts/vietnamese-montserrat.woff2') format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url('../fonts/latin-ext-montserrat.woff2') format('woff2');
unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url('../fonts/latin-montserrat.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
<svg width="35" height="35" viewBox="0 0 35 35" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="nonzero">
<circle fill="#ffffff" cx="17.5" cy="17.5" r="17.5"/>
<path fill="#5c5c5c" d="M24 18h-6v6h-1v-6h-6v-1h6v-6h1v6h6"/>
</g>
</svg>
\ No newline at end of file
......@@ -11,7 +11,7 @@
<div class="fotorama__arr fotorama__arr--prev" tabindex="0" role="button" aria-label="Previous" data-gallery-role="arrow">
<div class="fotorama__arr__arr"></div>
</div>
<div class="fotorama__stage__shaft" tabindex="0" data-gallery-role="stage-shaft">
<div class="fotorama__stage__shaft cursor-zoom-in" tabindex="0" data-gallery-role="stage-shaft">
</div>
<div class="fotorama__arr fotorama__arr--next fotorama__arr--disabled" tabindex="-1" role="button"
aria-label="Next" data-gallery-role="arrow">
......
......@@ -135,8 +135,12 @@
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
############################################
## TRACE and TRACK HTTP methods disabled to prevent XSS attacks
RewriteRule ^static/version[^/]+/(.*)$ static/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^static/(version[^/]+/)?(.*)$ static.php?resource=$2 [L]
## TRACE and TRACK HTTP methods disabled to prevent XSS attacks
RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
RewriteRule .* - [L,R=405]
......@@ -161,7 +165,6 @@
</IfModule>
############################################
## Prevent character encoding issues from server overrides
## If you still have problems, use the second line instead
......
<?php
http_response_code(200);
// phpcs:ignore Magento2.Security.LanguageConstruct
exit(1);
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
......
......@@ -4,7 +4,7 @@
@selection__color: false;
@selection__background: false;
@font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
@font-sans: Outfit-Regular, sans-serif,ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
@font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
@font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
......
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