-.woocommerce-app
+[data-app=on]//.woocommerce-app
*
font-family: $fontOutfit
+ p,h1,h2,h3,h4,h5,h6,span,label,div
+ color: #1B2943
- .content-inner,
- .elementor-section.elementor-section-boxed > .elementor-container
+ .content-inner
horizontal-spacing(16px)
+ .elementor-section.elementor-section-boxed > .elementor-container
+ padding: 0
+
+ // Elements hidden on mobile APP
header.site,
.footer-site,
.woocommerce-breadcrumb,
.product-frequency,
.hide-on-mobileapp,
.related.products,
- .woocommerce-cart-form .product-price
+ .woocommerce-cart-form .product-price,
+ &.woocommerce div.product .woocommerce-tabs ul.tabs .additional_information_tab
display: none
// Single product
div.product
- *
- color: #1B2943
.woocommerce
&-product-gallery
display: flex
gap: 24px
+ margin-bottom: 20px !important
&__wrapper
max-width: 107px
width: 100%
overflow: hidden
[data-thumb]:not(:first-child)
display: none
- &-product-title
+ &-product-title__wrapper
h1,.price
font-size: 22px
h1
- font-weight: 500
+ font-weight: 600
margin-bottom: .3em
line-height: 30px
- .price
+ .price *
color: #6CC3EE
- form.cart
- display: flex
- flex-direction: column
- .frequency
- text-align: left !important
- margin-left: 0 !important
- button[type="submit"]
- width: max-content
+ &-product-details__short-description p
+ font-size: 18px !important
+ font-weight: 400
+
+ &-tabs
+ p
+ font-size: 18px
+
+ .woocommerce
+ div.product .woocommerce
+ &-tabs
+ .tabs,.description_tab
+ margin: 0
+ padding: 0
+ &:after,&:before
+ display: none
+ ul.tabs
+ li
+ background: transparent !important
+ color: #8E94A1
+ a
+ padding: 0
+ font-weight: 400
+ .description_tab
+ border: 0
+ .additional_information_tab
+ display: none !important
+
+ &-Tabs-panel--description
+ font-size: 18px
+ font-weight: 400
+ margin-top: -10px
+
+ .qib-container
+ margin-bottom: 23px
+
+ form.cart
+ display: flex
+ flex-direction: column
+ .frequency
+ text-align: left !important
+ margin-left: 0 !important
+ button[type="submit"]
+ width: max-content
// Quantity button
.qib
align-items: center
.quantity input.qty:not(#qib_id):not(#qib_id)
border: 0
+ font-size: 18px
&-button
&:before,&:after
background-color: #fff
//
.wps_sfw_subscription_wrapper
- margin-top: 10px
+ margin-top: 8px
+ margin-bottom: 20px
label
font-size: 18px
input
margin-right: 11px
width: 18px
height: 18px
+ color: currentColor
+ border: 0.063em solid currentColor
+ border-radius: 50%
+ vertical-align: middle
+ appearance: none
+ display: inline-flex
+ align-items: center
+ justify-content: center
+ &::before
+ content: ""
+ width: 0.75em
+ height: 0.75em
+ border-radius: 50%
+ transform: scale(0)
+ transition: 120ms transform ease-in-out
+ background-color: #93C7C2
+ &:checked::before
+ transform: scale(1)
form.cart button[type='submit']:not(#qib_id):not(#qib_id):not(_):not(_)
width: 100%
.frequency,
.product-frequency,
.hide-on-desktop
- display block !important
+ display: block !important
+
+ body.panier,
+ body.cart
+ font-size: 18px
+ .woocommerce-cart
+ &-form__wrapper
+ display: flex
+ gap: 22px
+ padding-bottom: 24px
+ margin-bottom: 24px
+ border-bottom: 1px solid #E3E4E7
+ &-form .product-thumbnail
+ width: 60px
+ flex-shrink: 0
+ img
+ border-radius: 5px
+
+ .product-name
+ line-height: normal
+ margin-bottom: 14px
+ font-weight: 400
+
+ .product-frequency
+ border-bottom: 1px solid #E3E4E7
+ .wps_sfw_subscription_wrapper
+ margin-bottom: 13px
+
+ .product-subtotal
+ margin-top: 13px
+ line-height: normal
+ display: flex
+ align-items: center
+ .label
+ margin-right: auto
height: 100%
font-size: $font-size-base // This value won't be converted to REMs due to exception in font-size() mixin
+below(600px)
- font-size: 14px
+ &:not([data-app=on])
+ font-size: 14px
*,
*::before,
margin: 0
padding: 0
min-width: 320px
+ [data-app=on] &
+ background-color: #f8fbff
a
color: $colors.light-blue
<!doctype html>
-<html @php(language_attributes()) class="no-js">
+@php($app = filter_input(INPUT_GET, 'app', FILTER_SANITIZE_STRING))
+<html @php(language_attributes()) class="no-js" data-app="<?php echo $app == 'true' ? esc_attr('on'): '' ?>">
@include('partials.head')
{{-- When not using the hero image header template the compact header is set --}}
- <body @php(body_class( is_page_template('views/template-transparent-header.blade.php') ? '' : 'header-compact' ))>
+ <body @php(body_class( (is_page_template('views/template-transparent-header.blade.php') ? '' : 'header-compact')))>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M3NHJ8X"
--- /dev/null
+<?php
+/**
+ * Cart totals
+ *
+ * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart-totals.php.
+ *
+ * HOWEVER, on occasion WooCommerce will need to update template files and you
+ * (the theme developer) will need to copy the new files to your theme to
+ * maintain compatibility. We try to do this as little as possible, but it does
+ * happen. When this occurs the version of the template file will be bumped and
+ * the readme will list any important changes.
+ *
+ * @see https://woocommerce.com/document/template-structure/
+ * @package WooCommerce\Templates
+ * @version 2.3.6
+ */
+
+defined( 'ABSPATH' ) || exit;
+
+?>
+<div class="cart_totals <?php echo ( WC()->customer->has_calculated_shipping() ) ? 'calculated_shipping' : ''; ?>">
+
+ <?php do_action( 'woocommerce_before_cart_totals' ); ?>
+
+ <h2><?php esc_html_e( 'Cart totals', 'woocommerce' ); ?></h2>
+ @php($app = filter_input(INPUT_GET, 'app', FILTER_SANITIZE_STRING))
+ <?php if($app == true) { ?>
+
+ <div class="">
+ <div class="cart-subtotal">
+ <div><?php esc_html_e( 'Subtotal', 'woocommerce' ); ?></div>
+ <div data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>"><?php wc_cart_totals_subtotal_html(); ?></div>
+ </div>
+
+ <?php foreach ( WC()->cart->get_coupons() as $code => $coupon ) : ?>
+ <div class="cart-discount coupon-<?php echo esc_attr( sanitize_title( $code ) ); ?>">
+ <div><?php wc_cart_totals_coupon_label( $coupon ); ?></div>
+ <div data-title="<?php echo esc_attr( wc_cart_totals_coupon_label( $coupon, false ) ); ?>"><?php wc_cart_totals_coupon_html( $coupon ); ?></div>
+ </div>
+ <?php endforeach; ?>
+
+ <?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>
+
+ <?php do_action( 'woocommerce_cart_totals_before_shipping' ); ?>
+
+ <?php wc_cart_totals_shipping_html(); ?>
+
+ <?php do_action( 'woocommerce_cart_totals_after_shipping' ); ?>
+
+ <?php elseif ( WC()->cart->needs_shipping() && 'yes' === get_option( 'woocommerce_enable_shipping_calc' ) ) : ?>
+
+ <div class="shipping">
+ <div><?php esc_html_e( 'Shipping', 'woocommerce' ); ?></div>
+ <div data-title="<?php esc_attr_e( 'Shipping', 'woocommerce' ); ?>"><?php woocommerce_shipping_calculator(); ?></div>
+ </div>
+
+ <?php endif; ?>
+
+ <?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
+ <div class="fee">
+ <div><?php echo esc_html( $fee->name ); ?></div>
+ <div data-title="<?php echo esc_attr( $fee->name ); ?>"><?php wc_cart_totals_fee_html( $fee ); ?></div>
+ </div>
+ <?php endforeach; ?>
+
+ <?php
+ if ( wc_tax_enabled() && ! WC()->cart->display_prices_including_tax() ) {
+ $taxable_address = WC()->customer->get_taxable_address();
+ $estimated_text = '';
+
+ if ( WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping() ) {
+ /* translators: %s location. */
+ $estimated_text = sprintf( ' <small>' . esc_html__( '(estimated for %s)', 'woocommerce' ) . '</small>', WC()->countries->estimated_for_prefix( $taxable_address[0] ) . WC()->countries->countries[ $taxable_address[0] ] );
+ }
+
+ if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
+ foreach ( WC()->cart->get_tax_totals() as $code => $tax ) { // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
+ ?>
+ <div class="tax-rate tax-rate-<?php echo esc_attr( sanitize_title( $code ) ); ?>">
+ <div><?php echo esc_html( $tax->label ) . $estimated_text; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></div>
+ <div data-title="<?php echo esc_attr( $tax->label ); ?>"><?php echo wp_kses_post( $tax->formatted_amount ); ?></div>
+ </div>
+ <?php
+ }
+ } else {
+ ?>
+ <div class="tax-total">
+ <div><?php echo esc_html( WC()->countries->tax_or_vat() ) . $estimated_text; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></div>
+ <div data-title="<?php echo esc_attr( WC()->countries->tax_or_vat() ); ?>"><?php wc_cart_totals_taxes_total_html(); ?></div>
+ </div>
+ <?php
+ }
+ }
+ ?>
+
+ <?php do_action( 'woocommerce_cart_totals_before_order_total' ); ?>
+
+ <div class="order-total">
+ <div><?php esc_html_e( 'Total', 'woocommerce' ); ?></div>
+ <div data-title="<?php esc_attr_e( 'Total', 'woocommerce' ); ?>"><?php wc_cart_totals_order_total_html(); ?></div>
+ </div>
+
+ <?php do_action( 'woocommerce_cart_totals_after_order_total' ); ?>
+ </div>
+
+ <?php }else{ ?>
+
+ <table cellspacing="0" class="shop_table shop_table_responsive">
+
+ <tr class="cart-subtotal">
+ <th><?php esc_html_e( 'Subtotal', 'woocommerce' ); ?></th>
+ <td data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>"><?php wc_cart_totals_subtotal_html(); ?></td>
+ </tr>
+
+ <?php foreach ( WC()->cart->get_coupons() as $code => $coupon ) : ?>
+ <tr class="cart-discount coupon-<?php echo esc_attr( sanitize_title( $code ) ); ?>">
+ <th><?php wc_cart_totals_coupon_label( $coupon ); ?></th>
+ <td data-title="<?php echo esc_attr( wc_cart_totals_coupon_label( $coupon, false ) ); ?>"><?php wc_cart_totals_coupon_html( $coupon ); ?></td>
+ </tr>
+ <?php endforeach; ?>
+
+ <?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>
+
+ <?php do_action( 'woocommerce_cart_totals_before_shipping' ); ?>
+
+ <?php wc_cart_totals_shipping_html(); ?>
+
+ <?php do_action( 'woocommerce_cart_totals_after_shipping' ); ?>
+
+ <?php elseif ( WC()->cart->needs_shipping() && 'yes' === get_option( 'woocommerce_enable_shipping_calc' ) ) : ?>
+
+ <tr class="shipping">
+ <th><?php esc_html_e( 'Shipping', 'woocommerce' ); ?></th>
+ <td data-title="<?php esc_attr_e( 'Shipping', 'woocommerce' ); ?>"><?php woocommerce_shipping_calculator(); ?></td>
+ </tr>
+
+ <?php endif; ?>
+
+ <?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
+ <tr class="fee">
+ <th><?php echo esc_html( $fee->name ); ?></th>
+ <td data-title="<?php echo esc_attr( $fee->name ); ?>"><?php wc_cart_totals_fee_html( $fee ); ?></td>
+ </tr>
+ <?php endforeach; ?>
+
+ <?php
+ if ( wc_tax_enabled() && ! WC()->cart->display_prices_including_tax() ) {
+ $taxable_address = WC()->customer->get_taxable_address();
+ $estimated_text = '';
+
+ if ( WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping() ) {
+ /* translators: %s location. */
+ $estimated_text = sprintf( ' <small>' . esc_html__( '(estimated for %s)', 'woocommerce' ) . '</small>', WC()->countries->estimated_for_prefix( $taxable_address[0] ) . WC()->countries->countries[ $taxable_address[0] ] );
+ }
+
+ if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
+ foreach ( WC()->cart->get_tax_totals() as $code => $tax ) { // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
+ ?>
+ <tr class="tax-rate tax-rate-<?php echo esc_attr( sanitize_title( $code ) ); ?>">
+ <th><?php echo esc_html( $tax->label ) . $estimated_text; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></th>
+ <td data-title="<?php echo esc_attr( $tax->label ); ?>"><?php echo wp_kses_post( $tax->formatted_amount ); ?></td>
+ </tr>
+ <?php
+ }
+ } else {
+ ?>
+ <tr class="tax-total">
+ <th><?php echo esc_html( WC()->countries->tax_or_vat() ) . $estimated_text; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></th>
+ <td data-title="<?php echo esc_attr( WC()->countries->tax_or_vat() ); ?>"><?php wc_cart_totals_taxes_total_html(); ?></td>
+ </tr>
+ <?php
+ }
+ }
+ ?>
+
+ <?php do_action( 'woocommerce_cart_totals_before_order_total' ); ?>
+
+ <tr class="order-total">
+ <th><?php esc_html_e( 'Total', 'woocommerce' ); ?></th>
+ <td data-title="<?php esc_attr_e( 'Total', 'woocommerce' ); ?>"><?php wc_cart_totals_order_total_html(); ?></td>
+ </tr>
+
+ <?php do_action( 'woocommerce_cart_totals_after_order_total' ); ?>
+
+ </table>
+
+ <?php } ?>
+
+ <div class="wc-proceed-to-checkout">
+ <?php do_action( 'woocommerce_proceed_to_checkout' ); ?>
+ </div>
+
+ <?php do_action( 'woocommerce_after_cart_totals' ); ?>
+
+</div>
--- /dev/null
+<?php
+/**
+ * Cart Page
+ *
+ * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart.php.
+ *
+ * HOWEVER, on occasion WooCommerce will need to update template files and you
+ * (the theme developer) will need to copy the new files to your theme to
+ * maintain compatibility. We try to do this as little as possible, but it does
+ * happen. When this occurs the version of the template file will be bumped and
+ * the readme will list any important changes.
+ *
+ * @see https://woocommerce.com/document/template-structure/
+ * @package WooCommerce\Templates
+ * @version 7.9.0
+ */
+
+defined( 'ABSPATH' ) || exit;
+
+do_action( 'woocommerce_before_cart' ); ?>
+
+<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
+ <?php do_action( 'woocommerce_before_cart_table' ); ?>
+ @php($app = filter_input(INPUT_GET, 'app', FILTER_SANITIZE_STRING))
+ <div class="woocommerce-cart-form__wrapper">
+ <?php if($app == "true") {
+ foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
+ $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
+ $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
+ /**
+ * Filter the product name.
+ *
+ * @since 2.1.0
+ * @param string $product_name Name of the product in the cart.
+ * @param array $cart_item The product in the cart.
+ * @param string $cart_item_key Key for the product in the cart.
+ */
+ $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key );
+
+ if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
+ $product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
+ ?>
+ <div class="product-thumbnail">
+ <?php
+ $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
+ echo $thumbnail; // PHPCS: XSS ok.
+ ?>
+ </div>
+
+ <div class="woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
+
+ <div class="product-name" data-title="<?php esc_attr_e( 'Product', 'woocommerce' ); ?>">
+ <?php
+ echo wp_kses_post( $product_name . ' ' );
+
+ do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );
+
+ // Meta data.
+ echo wc_get_formatted_cart_item_data( $cart_item ); // PHPCS: XSS ok.
+
+ // Backorder notification.
+ if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
+ echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'woocommerce' ) . '</p>', $product_id ) );
+ }
+ ?>
+ </div>
+
+ <div class="product-price" data-title="<?php esc_attr_e( 'Price', 'woocommerce' ); ?>">
+ <?php
+ echo apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
+ ?>
+ </div>
+
+ <div class="product-quantity" data-title="<?php esc_attr_e( 'Quantity', 'woocommerce' ); ?>">
+ <?php
+ if ( $_product->is_sold_individually() ) {
+ $min_quantity = 1;
+ $max_quantity = 1;
+ } else {
+ $min_quantity = 0;
+ $max_quantity = $_product->get_max_purchase_quantity();
+ }
+
+ $product_quantity = woocommerce_quantity_input(
+ array(
+ 'input_name' => "cart[{$cart_item_key}][qty]",
+ 'input_value' => $cart_item['quantity'],
+ 'max_value' => $max_quantity,
+ 'min_value' => $min_quantity,
+ 'product_name' => $product_name,
+ ),
+ $_product,
+ false
+ );
+
+ echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); // PHPCS: XSS ok.
+ ?>
+ </div>
+ <?php
+ if ( wps_sfw_check_product_is_subscription( $cart_item['data'] )) {
+ $wps_skip_creating_subscription = apply_filters( 'wps_skip_creating_subscription', true, $cart_item );
+ ?>
+ <div class="product-frequency" data-title="<?php esc_attr_e( 'Frequency', 'woocommerce' ); ?>">
+ <?php do_action('woocommerce_after_add_to_cart_quantity', $wps_skip_creating_subscription, $product_id); ?>
+ </div>
+ <?php
+ }
+ ?>
+ <div class="product-subtotal" data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>">
+ <p class="label"><?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?></p>
+ <?php
+ echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
+ ?>
+ </div>
+ <?php do_action( 'woocommerce_cart_contents' ); ?>
+ <div <?php echo (filter_input(INPUT_GET, 'app', FILTER_SANITIZE_STRING) === "true" ? "style=display:none;" : "") ?>>
+ <?php if ( wc_coupons_enabled() ) { ?>
+ <div class="coupon">
+ <label for="coupon_code" class="screen-reader-text"><?php esc_html_e( 'Coupon:', 'woocommerce' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" /> <button type="submit" class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_html_e( 'Apply coupon', 'woocommerce' ); ?></button>
+ <?php do_action( 'woocommerce_cart_coupon' ); ?>
+ </div>
+ <?php } ?>
+
+ <button type="submit" class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>" name="update_cart" value="<?php esc_attr_e( 'Update cart', 'woocommerce' ); ?>"><?php esc_html_e( 'Update cart', 'woocommerce' ); ?></button>
+
+ <?php do_action( 'woocommerce_cart_actions' ); ?>
+
+ <?php wp_nonce_field( 'woocommerce-cart', 'woocommerce-cart-nonce' ); ?>
+ </div>
+ <?php
+ ?>
+ <?php do_action( 'woocommerce_after_cart_contents' ); ?>
+ </div>
+ <?php
+ }
+ }
+ ?>
+ </div>
+ <?php }else{ ?>
+
+ <table class="shop_table shop_table_responsive cart woocommerce-cart-form__contents" cellspacing="0">
+ <thead>
+ <tr>
+ <th class="product-remove"><span class="screen-reader-text"><?php esc_html_e( 'Remove item', 'woocommerce' ); ?></span></th>
+ <th class="product-thumbnail"><span class="screen-reader-text"><?php esc_html_e( 'Thumbnail image', 'woocommerce' ); ?></span></th>
+ <th class="product-name"><?php esc_html_e( 'Product', 'woocommerce' ); ?></th>
+ <th class="product-price"><?php esc_html_e( 'Price', 'woocommerce' ); ?></th>
+ <th class="product-quantity"><?php esc_html_e( 'Quantity', 'woocommerce' ); ?></th>
+ <th class="product-frequency"><?php esc_html_e( 'Frequency', 'woocommerce' ); ?></th>
+ <th class="product-subtotal"><?php esc_html_e( 'Subtotal', 'woocommerce' ); ?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php do_action( 'woocommerce_before_cart_contents' ); ?>
+
+ <?php
+ foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
+ //print_r($cart_item);
+ $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
+ $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
+ /**
+ * Filter the product name.
+ *
+ * @since 2.1.0
+ * @param string $product_name Name of the product in the cart.
+ * @param array $cart_item The product in the cart.
+ * @param string $cart_item_key Key for the product in the cart.
+ */
+ $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key );
+
+ if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
+ $product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
+ ?>
+ <tr class="woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
+
+ <td class="product-remove">
+ <?php
+ echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ 'woocommerce_cart_item_remove_link',
+ sprintf(
+ '<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>',
+ esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
+ /* translators: %s is the product name */
+ esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), wp_strip_all_tags( $product_name ) ) ),
+ esc_attr( $product_id ),
+ esc_attr( $_product->get_sku() )
+ ),
+ $cart_item_key
+ );
+ ?>
+ </td>
+
+ <td class="product-thumbnail">
+ <?php
+ $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
+
+ if ( ! $product_permalink ) {
+ echo $thumbnail; // PHPCS: XSS ok.
+ } else {
+ printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail ); // PHPCS: XSS ok.
+ }
+ ?>
+ </td>
+
+ <td class="product-name" data-title="<?php esc_attr_e( 'Product', 'woocommerce' ); ?>">
+ <?php
+ if ( ! $product_permalink ) {
+ echo wp_kses_post( $product_name . ' ' );
+ } else {
+ /**
+ * This filter is documented above.
+ *
+ * @since 2.1.0
+ */
+ echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) );
+ }
+
+ do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );
+
+ // Meta data.
+ echo wc_get_formatted_cart_item_data( $cart_item ); // PHPCS: XSS ok.
+
+ // Backorder notification.
+ if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
+ echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'woocommerce' ) . '</p>', $product_id ) );
+ }
+ ?>
+ </td>
+
+ <td class="product-price" data-title="<?php esc_attr_e( 'Price', 'woocommerce' ); ?>">
+ <?php
+ echo apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
+ ?>
+ </td>
+
+ <td class="product-quantity" data-title="<?php esc_attr_e( 'Quantity', 'woocommerce' ); ?>">
+ <?php
+ if ( $_product->is_sold_individually() ) {
+ $min_quantity = 1;
+ $max_quantity = 1;
+ } else {
+ $min_quantity = 0;
+ $max_quantity = $_product->get_max_purchase_quantity();
+ }
+
+ $product_quantity = woocommerce_quantity_input(
+ array(
+ 'input_name' => "cart[{$cart_item_key}][qty]",
+ 'input_value' => $cart_item['quantity'],
+ 'max_value' => $max_quantity,
+ 'min_value' => $min_quantity,
+ 'product_name' => $product_name,
+ ),
+ $_product,
+ false
+ );
+
+ echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); // PHPCS: XSS ok.
+ ?>
+ </td>
+ <?php
+ if ( wps_sfw_check_product_is_subscription( $cart_item['data'] )) {
+ $wps_skip_creating_subscription = apply_filters( 'wps_skip_creating_subscription', true, $cart_item );
+ ?>
+ <td class="product-frequency" data-title="<?php esc_attr_e( 'Frequency', 'woocommerce' ); ?>">
+ <?php do_action('woocommerce_after_add_to_cart_quantity', $wps_skip_creating_subscription, $product_id); ?>
+ </td>
+ <?php
+ }
+ ?>
+ <td class="product-subtotal" data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>">
+ <?php
+ echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
+ ?>
+ </td>
+ </tr>
+ <?php
+ }
+ }
+ ?>
+
+ <?php do_action( 'woocommerce_cart_contents' ); ?>
+ <tr <?php echo (filter_input(INPUT_GET, 'app', FILTER_SANITIZE_STRING) === "true" ? "style=display:none;" : "") ?>>
+ <td colspan="7" class="actions">
+
+ <?php if ( wc_coupons_enabled() ) { ?>
+ <div class="coupon">
+ <label for="coupon_code" class="screen-reader-text"><?php esc_html_e( 'Coupon:', 'woocommerce' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" /> <button type="submit" class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_html_e( 'Apply coupon', 'woocommerce' ); ?></button>
+ <?php do_action( 'woocommerce_cart_coupon' ); ?>
+ </div>
+ <?php } ?>
+
+ <button type="submit" class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>" name="update_cart" value="<?php esc_attr_e( 'Update cart', 'woocommerce' ); ?>"><?php esc_html_e( 'Update cart', 'woocommerce' ); ?></button>
+
+ <?php do_action( 'woocommerce_cart_actions' ); ?>
+
+ <?php wp_nonce_field( 'woocommerce-cart', 'woocommerce-cart-nonce' ); ?>
+ </td>
+ </tr>
+ <?php
+ ?>
+ <?php do_action( 'woocommerce_after_cart_contents' ); ?>
+ </tbody>
+ </table>
+ <?php } ?>
+ <?php do_action( 'woocommerce_after_cart_table' ); ?>
+</form>
+
+<?php do_action( 'woocommerce_before_cart_collaterals' ); ?>
+
+<div class="cart-collaterals">
+ <?php
+ /**
+ * Cart collaterals hook.
+ *
+ * @hooked woocommerce_cross_sell_display
+ * @hooked woocommerce_cart_totals - 10
+ */
+ do_action( 'woocommerce_cart_collaterals' );
+ ?>
+</div>
+
+<?php do_action( 'woocommerce_after_cart' ); ?>
+++ /dev/null
-<?php
-/**
- * Cart Page
- *
- * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart.php.
- *
- * HOWEVER, on occasion WooCommerce will need to update template files and you
- * (the theme developer) will need to copy the new files to your theme to
- * maintain compatibility. We try to do this as little as possible, but it does
- * happen. When this occurs the version of the template file will be bumped and
- * the readme will list any important changes.
- *
- * @see https://woocommerce.com/document/template-structure/
- * @package WooCommerce\Templates
- * @version 7.9.0
- */
-
-defined( 'ABSPATH' ) || exit;
-
-do_action( 'woocommerce_before_cart' ); ?>
-
-<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
- <?php do_action( 'woocommerce_before_cart_table' ); ?>
-
- <table class="shop_table shop_table_responsive cart woocommerce-cart-form__contents" cellspacing="0">
- <thead>
- <tr>
- <th class="product-remove"><span class="screen-reader-text"><?php esc_html_e( 'Remove item', 'woocommerce' ); ?></span></th>
- <th class="product-thumbnail"><span class="screen-reader-text"><?php esc_html_e( 'Thumbnail image', 'woocommerce' ); ?></span></th>
- <th class="product-name"><?php esc_html_e( 'Product', 'woocommerce' ); ?></th>
- <th class="product-price"><?php esc_html_e( 'Price', 'woocommerce' ); ?></th>
- <th class="product-quantity"><?php esc_html_e( 'Quantity', 'woocommerce' ); ?></th>
- <th class="product-frequency">Fréquence</th>
- <th class="product-subtotal"><?php esc_html_e( 'Subtotal', 'woocommerce' ); ?></th>
- </tr>
- </thead>
- <tbody>
- <?php do_action( 'woocommerce_before_cart_contents' ); ?>
-
- <?php
- foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
- //print_r($cart_item);
- $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
- $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
- /**
- * Filter the product name.
- *
- * @since 2.1.0
- * @param string $product_name Name of the product in the cart.
- * @param array $cart_item The product in the cart.
- * @param string $cart_item_key Key for the product in the cart.
- */
- $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key );
-
- if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
- $product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
- ?>
- <tr class="woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
-
- <td class="product-remove">
- <?php
- echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
- 'woocommerce_cart_item_remove_link',
- sprintf(
- '<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>',
- esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
- /* translators: %s is the product name */
- esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), wp_strip_all_tags( $product_name ) ) ),
- esc_attr( $product_id ),
- esc_attr( $_product->get_sku() )
- ),
- $cart_item_key
- );
- ?>
- </td>
-
- <td class="product-thumbnail">
- <?php
- $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
-
- if ( ! $product_permalink ) {
- echo $thumbnail; // PHPCS: XSS ok.
- } else {
- printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail ); // PHPCS: XSS ok.
- }
- ?>
- </td>
-
- <td class="product-name" data-title="<?php esc_attr_e( 'Product', 'woocommerce' ); ?>">
- <?php
- if ( ! $product_permalink ) {
- echo wp_kses_post( $product_name . ' ' );
- } else {
- /**
- * This filter is documented above.
- *
- * @since 2.1.0
- */
- echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) );
- }
-
- do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );
-
- // Meta data.
- echo wc_get_formatted_cart_item_data( $cart_item ); // PHPCS: XSS ok.
-
- // Backorder notification.
- if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
- echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'woocommerce' ) . '</p>', $product_id ) );
- }
- ?>
- </td>
-
- <td class="product-price" data-title="<?php esc_attr_e( 'Price', 'woocommerce' ); ?>">
- <?php
- echo apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
- ?>
- </td>
-
- <td class="product-quantity" data-title="<?php esc_attr_e( 'Quantity', 'woocommerce' ); ?>">
- <?php
- if ( $_product->is_sold_individually() ) {
- $min_quantity = 1;
- $max_quantity = 1;
- } else {
- $min_quantity = 0;
- $max_quantity = $_product->get_max_purchase_quantity();
- }
-
- $product_quantity = woocommerce_quantity_input(
- array(
- 'input_name' => "cart[{$cart_item_key}][qty]",
- 'input_value' => $cart_item['quantity'],
- 'max_value' => $max_quantity,
- 'min_value' => $min_quantity,
- 'product_name' => $product_name,
- ),
- $_product,
- false
- );
-
- echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); // PHPCS: XSS ok.
- ?>
- </td>
- <?php
- if ( wps_sfw_check_product_is_subscription( $cart_item['data'] )) {
- $wps_skip_creating_subscription = apply_filters( 'wps_skip_creating_subscription', true, $cart_item );
- ?>
- <td class="product-frequency" data-title="<?php esc_attr_e( 'Frequency', 'woocommerce' ); ?>">
- <?php do_action('woocommerce_after_add_to_cart_quantity', $wps_skip_creating_subscription, $product_id); ?>
- </td>
- <?php
- }
- ?>
- <td class="product-subtotal" data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>">
- <?php
- echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
- ?>
- </td>
- </tr>
- <?php
- }
- }
- ?>
-
- <?php do_action( 'woocommerce_cart_contents' ); ?>
- <tr <?php echo (filter_input(INPUT_GET, 'app', FILTER_SANITIZE_STRING) === "true" ? "style=display:none;" : "") ?>>
- <td colspan="7" class="actions">
-
- <?php if ( wc_coupons_enabled() ) { ?>
- <div class="coupon">
- <label for="coupon_code" class="screen-reader-text"><?php esc_html_e( 'Coupon:', 'woocommerce' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" /> <button type="submit" class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_html_e( 'Apply coupon', 'woocommerce' ); ?></button>
- <?php do_action( 'woocommerce_cart_coupon' ); ?>
- </div>
- <?php } ?>
-
- <button type="submit" class="button<?php echo esc_attr( wc_wp_theme_get_element_class_name( 'button' ) ? ' ' . wc_wp_theme_get_element_class_name( 'button' ) : '' ); ?>" name="update_cart" value="<?php esc_attr_e( 'Update cart', 'woocommerce' ); ?>"><?php esc_html_e( 'Update cart', 'woocommerce' ); ?></button>
-
- <?php do_action( 'woocommerce_cart_actions' ); ?>
-
- <?php wp_nonce_field( 'woocommerce-cart', 'woocommerce-cart-nonce' ); ?>
- </td>
- </tr>
- <?php
- ?>
- <?php do_action( 'woocommerce_after_cart_contents' ); ?>
- </tbody>
- </table>
-
- <?php do_action( 'woocommerce_after_cart_table' ); ?>
-</form>
-
-<?php do_action( 'woocommerce_before_cart_collaterals' ); ?>
-
-<div class="cart-collaterals">
- <?php
- /**
- * Cart collaterals hook.
- *
- * @hooked woocommerce_cross_sell_display
- * @hooked woocommerce_cart_totals - 10
- */
- do_action( 'woocommerce_cart_collaterals' );
- ?>
-</div>
-
-<?php do_action( 'woocommerce_after_cart' ); ?>