From 663c0bb53e55cb0649e49ef00564a74bf9ffc3f6 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 12 Jul 2026 11:32:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(shop):=20=E4=BA=A4=E6=98=93=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E5=A3=B3=E5=B1=82=201:1=20=E7=BB=9F=E4=B8=80=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6/=E8=AE=A2=E5=8D=95/=E6=94=B6=E7=9B=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 抽出 commerce header 与二级导航,购物车/订单/收益共用主站交易中心壳层;收益 stats 轻量化,降低独立电商后台观感。 Co-Authored-By: Claude Fable 5 --- assets/css/routes/commerce.css | 94 ++++++++++++++++++ inc/bootstrap.php | 1 + .../trait-aksrt-scripts-part-1b.php | 16 ++++ inc/helpers/aksrt-commerce.php | 96 +++++++++++++++++++ templates/pages/page-cart.php | 13 ++- templates/pages/page-orders.php | 15 ++- templates/pages/page-revenue.php | 18 +++- 7 files changed, 241 insertions(+), 12 deletions(-) create mode 100644 assets/css/routes/commerce.css create mode 100644 inc/helpers/aksrt-commerce.php diff --git a/assets/css/routes/commerce.css b/assets/css/routes/commerce.css new file mode 100644 index 00000000..21368a44 --- /dev/null +++ b/assets/css/routes/commerce.css @@ -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; +} diff --git a/inc/bootstrap.php b/inc/bootstrap.php index fa66e6a3..0ef9d916 100644 --- a/inc/bootstrap.php +++ b/inc/bootstrap.php @@ -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'; diff --git a/inc/classes/scripts-traits/trait-aksrt-scripts-part-1b.php b/inc/classes/scripts-traits/trait-aksrt-scripts-part-1b.php index 9f45e527..27e330ee 100644 --- a/inc/classes/scripts-traits/trait-aksrt-scripts-part-1b.php +++ b/inc/classes/scripts-traits/trait-aksrt-scripts-part-1b.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( diff --git a/inc/helpers/aksrt-commerce.php b/inc/helpers/aksrt-commerce.php new file mode 100644 index 00000000..228f3b1e --- /dev/null +++ b/inc/helpers/aksrt-commerce.php @@ -0,0 +1,96 @@ + + */ + 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(); + ?> +
+ +

+ + +

+ + + + +
+ " data-coupon-enabled="" > + __('购物车', 'aksrt'), + 'subtitle' => __('在下单前确认地址、运费、优惠券和支付方式。', 'aksrt'), + 'active' => 'cart', + ]); + } + ?>
-
-

-

-
diff --git a/templates/pages/page-orders.php b/templates/pages/page-orders.php index 70c172eb..60bb581c 100644 --- a/templates/pages/page-orders.php +++ b/templates/pages/page-orders.php @@ -56,10 +56,19 @@ $tabs = [ ?>
+
-
-

-
+ __('我的订单', 'aksrt'), + 'subtitle' => __('查看订单状态、物流进度与售后处理。', 'aksrt'), + 'active' => 'orders', + ]); + } else { + echo '

' . esc_html__('我的订单', 'aksrt') . '

'; + } + ?>
diff --git a/templates/pages/page-revenue.php b/templates/pages/page-revenue.php index 4a689123..e95ceee8 100644 --- a/templates/pages/page-revenue.php +++ b/templates/pages/page-revenue.php @@ -54,12 +54,20 @@ $paged_records = array_slice($records, ($paged - 1) * $per_page, $per_page);
-
-

-

-
+ __('创作收益', 'aksrt'), + 'subtitle' => __('查看分成明细并发起提现。', 'aksrt'), + 'active' => 'revenue', + ]); + } else { + echo '

' . esc_html__('创作收益', 'aksrt') . '

'; + echo '

' . esc_html__('查看分成明细并发起提现。', 'aksrt') . '

'; + } + ?> -
+