Тема магазина по макету Figma
Каталог, карточка товара, корзина, оформление заказа и блог на WooCommerce. Стили разложены по слоям: токены из Figma, база, компоненты, страницы, брейкпоинты. Цвета, типографика, радиусы и отступы взяты из Variables и текстовых стилей макета, ниже по слоям хардкода нет. Иконки — Phosphor, вставляются инлайном как SVG, символами ничего не рисуется. Стили WooCommerce отключены, вёрстка своя, !important не используется.
This commit is contained in:
commit
29d10ce4cf
72 files changed
+7465
No files matched your search
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* Empty cart state.
|
||||
*
|
||||
* @package VyatkaShop
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
?>
|
||||
<div class="container cart-page cart-page-empty">
|
||||
<h1 class="page-heading"><?php esc_html_e( 'Корзина', 'vyatka-shop' ); ?></h1>
|
||||
<p class="cart-empty-message"><?php esc_html_e( 'Ваша корзина пока пуста.', 'vyatka-shop' ); ?></p>
|
||||
</div>
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/**
|
||||
* Cart page.
|
||||
*
|
||||
* @package VyatkaShop
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
do_action( 'woocommerce_before_cart' );
|
||||
?>
|
||||
<div class="container cart-page">
|
||||
<h1 class="page-heading"><?php esc_html_e( 'Корзина', 'vyatka-shop' ); ?></h1>
|
||||
|
||||
<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
|
||||
<div class="cart-layout">
|
||||
<div class="cart-items">
|
||||
<?php foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) : ?>
|
||||
<?php
|
||||
$_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 );
|
||||
if ( ! $_product || ! $_product->exists() || $cart_item['quantity'] <= 0 ) {
|
||||
continue;
|
||||
}
|
||||
$max_purchase_quantity = $_product->get_max_purchase_quantity();
|
||||
$regular_total = (float) $_product->get_regular_price() * (int) $cart_item['quantity'];
|
||||
?>
|
||||
<article class="cart-item woocommerce-cart-form__cart-item" data-cart-item-key="<?php echo esc_attr( $cart_item_key ); ?>">
|
||||
<a class="cart-thumb" href="<?php echo esc_url( get_permalink( $product_id ) ); ?>">
|
||||
<span class="product-badge"><?php esc_html_e( 'NEW', 'vyatka-shop' ); ?></span>
|
||||
<?php echo wp_kses_post( $_product->get_image( 'thumbnail' ) ); ?>
|
||||
</a>
|
||||
<div class="cart-item-copy">
|
||||
<a class="cart-item-title" href="<?php echo esc_url( get_permalink( $product_id ) ); ?>"><?php echo esc_html( $_product->get_name() ); ?></a>
|
||||
<span class="cart-item-sku"><?php esc_html_e( 'Арт: 3948GP', 'vyatka-shop' ); ?></span>
|
||||
</div>
|
||||
<div class="cart-item-price">
|
||||
<del><?php echo wp_kses_post( wc_price( $regular_total ) ); ?></del>
|
||||
<ins><?php echo wp_kses_post( WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ) ); ?></ins>
|
||||
</div>
|
||||
<div class="quantity-control cart-item-quantity">
|
||||
<button type="button" data-quantity-action="decrease" aria-label="<?php esc_attr_e( 'Уменьшить количество', 'vyatka-shop' ); ?>"<?php echo (int) $cart_item['quantity'] <= 1 ? ' disabled' : ''; ?>><?php vyatka_shop_icon( 'minus', array( 'class' => 'icon-20' ) ); ?></button>
|
||||
<input
|
||||
type="number"
|
||||
name="cart[<?php echo esc_attr( $cart_item_key ); ?>][qty]"
|
||||
value="<?php echo esc_attr( (string) $cart_item['quantity'] ); ?>"
|
||||
min="1"
|
||||
<?php if ( 0 < $max_purchase_quantity ) : ?>
|
||||
max="<?php echo esc_attr( (string) $max_purchase_quantity ); ?>"
|
||||
<?php endif; ?>
|
||||
inputmode="numeric"
|
||||
>
|
||||
<button type="button" data-quantity-action="increase" aria-label="<?php esc_attr_e( 'Увеличить количество', 'vyatka-shop' ); ?>"<?php echo 0 < $max_purchase_quantity && (int) $cart_item['quantity'] >= $max_purchase_quantity ? ' disabled' : ''; ?>><?php vyatka_shop_icon( 'plus', array( 'class' => 'icon-20' ) ); ?></button>
|
||||
</div>
|
||||
<a class="cart-item-remove" href="<?php echo esc_url( wc_get_cart_remove_url( $cart_item_key ) ); ?>" aria-label="<?php esc_attr_e( 'Удалить товар', 'vyatka-shop' ); ?>"><?php vyatka_shop_icon( 'trash', array( 'class' => 'icon-20' ) ); ?></a>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<button class="screen-reader-text" type="submit" name="update_cart" value="<?php esc_attr_e( 'Обновить корзину', 'vyatka-shop' ); ?>"><?php esc_html_e( 'Обновить корзину', 'vyatka-shop' ); ?></button>
|
||||
<?php wp_nonce_field( 'woocommerce-cart', 'woocommerce-cart-nonce' ); ?>
|
||||
</div>
|
||||
|
||||
<?php $price_summary = vyatka_shop_cart_price_summary(); ?>
|
||||
<aside class="order-card cart-order-card">
|
||||
<div class="order-row"><span><?php esc_html_e( 'Товаров', 'vyatka-shop' ); ?></span><span><?php echo esc_html( (string) count( WC()->cart->get_cart() ) ); ?></span></div>
|
||||
<div class="order-row"><span><?php esc_html_e( 'Сумма', 'vyatka-shop' ); ?></span><strong><?php echo wp_kses_post( wc_price( $price_summary['regular_total'] ) ); ?></strong></div>
|
||||
<div class="order-row"><span><?php esc_html_e( 'Скидка', 'vyatka-shop' ); ?></span><span>− <?php echo wp_kses_post( wc_price( $price_summary['discount_total'] ) ); ?></span></div>
|
||||
<div class="order-row total"><span><?php esc_html_e( 'Итого', 'vyatka-shop' ); ?></span><strong><?php wc_cart_totals_order_total_html(); ?></strong></div>
|
||||
<a class="button" href="<?php echo esc_url( wc_get_checkout_url() ); ?>"><?php esc_html_e( 'Перейти к оформлению', 'vyatka-shop' ); ?></a>
|
||||
</aside>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
do_action( 'woocommerce_after_cart' );
|
||||
Reference in new issue
Block a user