feat(shop): 交易中心壳层 1:1 统一购物车/订单/收益
抽出 commerce header 与二级导航,购物车/订单/收益共用主站交易中心壳层;收益 stats 轻量化,降低独立电商后台观感。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* Commerce center shared shell (cart / orders / revenue).
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
|
||||
.aksrt-commerce-header {
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
|
||||
.aksrt-commerce-header__title {
|
||||
margin: 0 0 6px;
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
line-height: 1.25;
|
||||
color: var(--color-ink, #1f2937);
|
||||
}
|
||||
|
||||
.aksrt-commerce-header__subtitle {
|
||||
margin: 0 0 14px;
|
||||
font-size: 14px;
|
||||
color: var(--color-ink-3, #6b7280);
|
||||
}
|
||||
|
||||
.aksrt-commerce-header__nav {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.aksrt-commerce-header__nav-item {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 6px 12px;
|
||||
border-radius: 999px;
|
||||
border: 1px solid var(--color-line, rgba(0, 0, 0, 0.08));
|
||||
background: var(--surface-1, #fff);
|
||||
color: var(--color-ink-2, #4b5563);
|
||||
font-size: 13px;
|
||||
text-decoration: none;
|
||||
transition: color .15s, border-color .15s, background .15s;
|
||||
}
|
||||
|
||||
.aksrt-commerce-header__nav-item:hover {
|
||||
color: var(--color-primary, #f04494);
|
||||
border-color: color-mix(in srgb, var(--color-primary, #f04494) 35%, transparent);
|
||||
}
|
||||
|
||||
.aksrt-commerce-header__nav-item.is-active {
|
||||
color: var(--color-on-primary, #fff);
|
||||
background: var(--color-primary, #f04494);
|
||||
border-color: var(--color-primary, #f04494);
|
||||
}
|
||||
|
||||
/* Soften revenue dashboard cards — task-first, not ops console */
|
||||
.aksrt-revenue-page__stats {
|
||||
gap: 12px !important;
|
||||
margin-bottom: 18px !important;
|
||||
}
|
||||
|
||||
.aksrt-revenue-page__stat-card {
|
||||
padding: 14px 16px !important;
|
||||
border-radius: 12px !important;
|
||||
box-shadow: none !important;
|
||||
border: 1px solid var(--color-line-soft, rgba(0, 0, 0, 0.06)) !important;
|
||||
background: var(--surface-1, #fff) !important;
|
||||
}
|
||||
|
||||
.aksrt-revenue-page__stat-icon {
|
||||
width: 36px !important;
|
||||
height: 36px !important;
|
||||
font-size: 15px !important;
|
||||
background: var(--body-bg-color, #f5f6f7) !important;
|
||||
color: var(--color-ink-2, #4b5563) !important;
|
||||
}
|
||||
|
||||
.aksrt-revenue-page__stat-value {
|
||||
font-size: 18px !important;
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
|
||||
.aksrt-revenue-page__stat-label {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
/* Orders / cart title rhythm when using shared header */
|
||||
.aksrt-orders-page__header,
|
||||
.aksrt-cart-page__header > div:first-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.aksrt-orders-page__tabs {
|
||||
margin-top: 4px;
|
||||
}
|
||||
@@ -43,6 +43,7 @@ require_once AKSRT_DIR . '/inc/helpers/aksrt-credits.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/menu-decoration.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/class-aksrt-nav-walker.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-transactions.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-commerce.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-user-dashboard.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-user-center.php';
|
||||
require_once AKSRT_DIR . '/inc/helpers/aksrt-user-home.php';
|
||||
|
||||
@@ -301,6 +301,22 @@ trait AKSRT_Scripts_Part_1b {
|
||||
);
|
||||
}
|
||||
|
||||
// 交易中心共享壳层(购物车 / 订单 / 收益)
|
||||
$is_commerce_center = is_page_template('templates/pages/page-orders.php')
|
||||
|| is_page_template('templates/pages/page-cart.php')
|
||||
|| is_page_template('templates/pages/page-revenue.php');
|
||||
if ($is_commerce_center) {
|
||||
$commerce_css = get_template_directory() . '/assets/css/routes/commerce.css';
|
||||
if (file_exists($commerce_css)) {
|
||||
wp_enqueue_style(
|
||||
'aksrt-commerce-shell',
|
||||
$base_uri . '/assets/css/routes/commerce.css',
|
||||
['aksrt-tokens'],
|
||||
(string) filemtime($commerce_css)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 订单中心页
|
||||
if (is_page_template('templates/pages/page-orders.php')) {
|
||||
wp_enqueue_style(
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
/**
|
||||
* Commerce center (cart / orders / revenue) presentation helpers.
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
if (!function_exists('aksrt_get_commerce_nav_items')) {
|
||||
/**
|
||||
* Secondary nav for commerce center pages.
|
||||
*
|
||||
* @return array<int, array{key:string,label:string,url:string}>
|
||||
*/
|
||||
function aksrt_get_commerce_nav_items(): array {
|
||||
$items = [];
|
||||
|
||||
$cart = function_exists('aksrt_get_cart_page_url') ? aksrt_get_cart_page_url() : '';
|
||||
if ($cart !== '') {
|
||||
$items[] = [
|
||||
'key' => 'cart',
|
||||
'label' => __('购物车', 'aksrt'),
|
||||
'url' => $cart,
|
||||
];
|
||||
}
|
||||
|
||||
$orders = function_exists('aksrt_get_orders_page_url') ? aksrt_get_orders_page_url() : '';
|
||||
if ($orders !== '') {
|
||||
$items[] = [
|
||||
'key' => 'orders',
|
||||
'label' => __('我的订单', 'aksrt'),
|
||||
'url' => $orders,
|
||||
];
|
||||
}
|
||||
|
||||
$revenue = function_exists('aksrt_get_revenue_page_url') ? aksrt_get_revenue_page_url() : '';
|
||||
if ($revenue !== '') {
|
||||
$items[] = [
|
||||
'key' => 'revenue',
|
||||
'label' => __('创作收益', 'aksrt'),
|
||||
'url' => $revenue,
|
||||
];
|
||||
}
|
||||
|
||||
$center = function_exists('aksrt_get_user_center_url') ? aksrt_get_user_center_url() : '';
|
||||
if ($center !== '') {
|
||||
$items[] = [
|
||||
'key' => 'center',
|
||||
'label' => __('个人中心', 'aksrt'),
|
||||
'url' => $center,
|
||||
];
|
||||
}
|
||||
|
||||
return $items;
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('aksrt_render_commerce_page_header')) {
|
||||
/**
|
||||
* Shared commerce page header: title / intro / secondary nav.
|
||||
*
|
||||
* @param array{title?:string,subtitle?:string,active?:string} $args
|
||||
*/
|
||||
function aksrt_render_commerce_page_header(array $args = []): void {
|
||||
$title = (string) ($args['title'] ?? '');
|
||||
$subtitle = (string) ($args['subtitle'] ?? '');
|
||||
$active = sanitize_key((string) ($args['active'] ?? ''));
|
||||
$nav = aksrt_get_commerce_nav_items();
|
||||
?>
|
||||
<header class="aksrt-commerce-header">
|
||||
<?php if ($title !== '') : ?>
|
||||
<h1 class="aksrt-commerce-header__title"><?php echo esc_html($title); ?></h1>
|
||||
<?php endif; ?>
|
||||
<?php if ($subtitle !== '') : ?>
|
||||
<p class="aksrt-commerce-header__subtitle"><?php echo esc_html($subtitle); ?></p>
|
||||
<?php endif; ?>
|
||||
<?php if (!empty($nav)) : ?>
|
||||
<nav class="aksrt-commerce-header__nav" aria-label="<?php esc_attr_e('交易中心导航', 'aksrt'); ?>">
|
||||
<?php foreach ($nav as $item) :
|
||||
$is_active = $active !== '' && $active === ($item['key'] ?? '');
|
||||
?>
|
||||
<a
|
||||
class="aksrt-commerce-header__nav-item<?php echo $is_active ? ' is-active' : ''; ?>"
|
||||
href="<?php echo esc_url((string) ($item['url'] ?? '#')); ?>"
|
||||
<?php echo $is_active ? ' aria-current="page"' : ''; ?>
|
||||
>
|
||||
<?php echo esc_html((string) ($item['label'] ?? '')); ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</nav>
|
||||
<?php endif; ?>
|
||||
</header>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
@@ -42,11 +42,16 @@ $address_book = is_array($cart_view['address_book'] ?? null) ? $cart_view['addre
|
||||
data-currency-symbol="<?php echo esc_attr((string) ($cart_view['currency_symbol'] ?? '¥')); ?>"
|
||||
data-coupon-enabled="<?php echo !empty($cart_view['coupon_enabled']) ? '1' : '0'; ?>"
|
||||
>
|
||||
<?php
|
||||
if (function_exists('aksrt_render_commerce_page_header')) {
|
||||
aksrt_render_commerce_page_header([
|
||||
'title' => __('购物车', 'aksrt'),
|
||||
'subtitle' => __('在下单前确认地址、运费、优惠券和支付方式。', 'aksrt'),
|
||||
'active' => 'cart',
|
||||
]);
|
||||
}
|
||||
?>
|
||||
<div class="aksrt-cart-page__header">
|
||||
<div>
|
||||
<h1 class="aksrt-cart-page__title"><?php esc_html_e('购物车', 'aksrt'); ?></h1>
|
||||
<p class="aksrt-cart-page__subtitle"><?php esc_html_e('在下单前确认地址、运费、优惠券和支付方式。', 'aksrt'); ?></p>
|
||||
</div>
|
||||
<?php if (!empty($pending_orders)) : ?>
|
||||
<div class="aksrt-cart-page__pending">
|
||||
<span class="aksrt-cart-page__pending-label"><?php esc_html_e('待支付订单', 'aksrt'); ?></span>
|
||||
|
||||
@@ -56,10 +56,19 @@ $tabs = [
|
||||
?>
|
||||
|
||||
<main id="main-content" class="site-main content-shell" tabindex="-1">
|
||||
<?php if (function_exists('aksrt_breadcrumbs')) { aksrt_breadcrumbs(); } ?>
|
||||
<div class="container aksrt-orders-page" data-aksrt-order-center>
|
||||
<div class="aksrt-orders-page__header">
|
||||
<h1><?php esc_html_e('我的订单', 'aksrt'); ?></h1>
|
||||
</div>
|
||||
<?php
|
||||
if (function_exists('aksrt_render_commerce_page_header')) {
|
||||
aksrt_render_commerce_page_header([
|
||||
'title' => __('我的订单', 'aksrt'),
|
||||
'subtitle' => __('查看订单状态、物流进度与售后处理。', 'aksrt'),
|
||||
'active' => 'orders',
|
||||
]);
|
||||
} else {
|
||||
echo '<div class="aksrt-orders-page__header"><h1>' . esc_html__('我的订单', 'aksrt') . '</h1></div>';
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- 5-tab navigation -->
|
||||
<div class="aksrt-orders-page__tabs">
|
||||
|
||||
@@ -54,12 +54,20 @@ $paged_records = array_slice($records, ($paged - 1) * $per_page, $per_page);
|
||||
<div class="container aksrt-revenue-page" data-aksrt-revenue-page
|
||||
data-min-amount="<?php echo esc_attr((string) $min_amount); ?>"
|
||||
data-fee-rate="<?php echo esc_attr((string) $fee_rate); ?>">
|
||||
<div class="aksrt-revenue-page__header">
|
||||
<h1><?php esc_html_e('创作收益', 'aksrt'); ?></h1>
|
||||
<p class="aksrt-revenue-page__subtitle"><?php esc_html_e('查看分成明细并发起提现。', 'aksrt'); ?></p>
|
||||
</div>
|
||||
<?php
|
||||
if (function_exists('aksrt_render_commerce_page_header')) {
|
||||
aksrt_render_commerce_page_header([
|
||||
'title' => __('创作收益', 'aksrt'),
|
||||
'subtitle' => __('查看分成明细并发起提现。', 'aksrt'),
|
||||
'active' => 'revenue',
|
||||
]);
|
||||
} else {
|
||||
echo '<div class="aksrt-revenue-page__header"><h1>' . esc_html__('创作收益', 'aksrt') . '</h1>';
|
||||
echo '<p class="aksrt-revenue-page__subtitle">' . esc_html__('查看分成明细并发起提现。', 'aksrt') . '</p></div>';
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="aksrt-revenue-page__stats">
|
||||
<div class="aksrt-revenue-page__stats" aria-label="<?php esc_attr_e('收益概览', 'aksrt'); ?>">
|
||||
<div class="aksrt-revenue-page__stat-card">
|
||||
<div class="aksrt-revenue-page__stat-icon"><i class="fas fa-wallet"></i></div>
|
||||
<div class="aksrt-revenue-page__stat-info">
|
||||
|
||||
Reference in New Issue
Block a user