0) { if (function_exists('aksrt_is_downloadable_content') && aksrt_is_downloadable_content($qid)) { $is_paid_content_single = true; } elseif (function_exists('aksrt_is_paid_post') && aksrt_is_paid_post($qid)) { $is_paid_content_single = true; } elseif (function_exists('aksrt_get_pay_meta')) { $pm = aksrt_get_pay_meta($qid); $pt = (string) ($pm['pay_type'] ?? 'no'); $is_paid_content_single = ($pt !== '' && $pt !== 'no'); } } } // 独立下载页模板 $is_download_file_page = is_page_template('templates/pages/page-download-file.php'); // 资源虚拟列表 /resources/ $is_resource_archive = function_exists('aksrt_is_resource_archive') && aksrt_is_resource_archive(); // /user/{nicename}/ 自定义重写路由(class-aksrt-user.php 注册) // 此路径下 is_page() / is_page_template() 均为 false,需手动识别以正确入队 CSS $is_profile_route = (bool) get_query_var('aksrt_author_identifier'); $is_user_center_route = (bool) get_query_var('aksrt_user_center'); $is_static_page = is_page() || is_singular('page') || $is_profile_route || $is_user_center_route; $is_auth_route = (bool) get_query_var('aksrt_sign'); $is_auth_page = $is_auth_route || (function_exists('aksrt_is_auth_page_request') && aksrt_is_auth_page_request()); $is_profile_page = $is_profile_route || (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page()) || (function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page()) || is_page_template('templates/pages/page-profile.php') || is_page_template('templates/pages/page-user-home.php'); $is_fixed_homepage = function_exists('aksrt_is_fixed_homepage_request') && aksrt_is_fixed_homepage_request(); // CMS 形态判定(可能在博客流页面也需要 grid-cms 卡片样式) $is_cms_mode = function_exists('aksrt_is_cms_mode') ? aksrt_is_cms_mode() : false; // 首页/归档/搜索:卡片 + 侧栏 if ($is_home_or_archive) { $enqueue_module('post-card'); $enqueue_module('widgets'); $enqueue_module('sidebar'); $enqueue_module('breadcrumb'); } // 顶部多功能组件:按 page-type 启用结果入队(对齐 zibll,不绑死首页) if (function_exists('aksrt_header_slide_is_show') && aksrt_header_slide_is_show()) { // flex/gutters used by icon cards (same helpers single-post loads via zibll-utilities) $zu_path = get_template_directory() . '/assets/css/frontend/zibll-utilities.css'; if (file_exists($zu_path)) { wp_enqueue_style( 'aksrt-zibll-utilities', $base_uri . '/assets/css/frontend/zibll-utilities.css', is_string($deps[0] ?? null) ? [$deps[0]] : (array) $deps, filemtime($zu_path) ?: $version ); } $enqueue_module('header-components'); } // 单篇文章:所有 single 相关样式 if ($is_single_post) { // Prefer discrete enqueues over CSS @import (cache-bust + parallel load). $single_parts = [ 'zibll-utilities', 'single-post/shell', 'single-post/content', 'single-post/code-blocks', 'single-post/navigation', 'single-post/cover', 'single-post/author-actions', 'single-post/related-toc', 'single-post/hidden-content', ]; $single_dep = $deps[0] ?? $core_dep; foreach ($single_parts as $part) { $path = get_template_directory() . '/assets/css/frontend/' . $part . '.css'; if (!file_exists($path)) { continue; } wp_enqueue_style( 'aksrt-' . str_replace('/', '-', $part), $base_uri . '/assets/css/frontend/' . $part . '.css', is_string($single_dep) ? [$single_dep] : (array) $deps, filemtime($path) ?: $version ); } // Keep aggregator handle for any third-party deps that target it. $enqueue_module('single-post'); $enqueue_module('post-card'); // 相关推荐使用 post-card 局部样式 // Comments pack (zibll 1:1 discrete files). $comment_parts = ['comments/shell', 'comments/mobile-item']; $comment_dep = $deps[0] ?? $core_dep; foreach ($comment_parts as $part) { $path = get_template_directory() . '/assets/css/frontend/' . $part . '.css'; if (!file_exists($path)) { continue; } wp_enqueue_style( 'aksrt-' . str_replace('/', '-', $part), $base_uri . '/assets/css/frontend/' . $part . '.css', is_string($comment_dep) ? [$comment_dep] : (array) $deps, filemtime($path) ?: $version ); } $enqueue_module('comments'); // aggregator handle for third-party deps $enqueue_module('widgets'); $enqueue_module('sidebar'); $enqueue_module('breadcrumb'); } // 静态页面 + 用户中心 + 友链等 if ($is_static_page) { $enqueue_module('pages'); $enqueue_module('single-post'); // 复用 entry-content 排版 $enqueue_module('widgets'); // widget-card / widget-title $enqueue_module('post-card'); // post-grid / post-card(用户中心文章列表) $enqueue_module('breadcrumb'); // 启用评论的页面 if (comments_open() || get_comments_number()) { $enqueue_module('comments'); } } // 用户中心 / 公开主页:路由专属 CSS if ($is_profile_page) { // 举报脚本(用户主页和个人中心均需要) $report_js_path = get_template_directory() . '/assets/js/report.js'; if (file_exists($report_js_path)) { wp_enqueue_script( 'aksrt-report', $base_uri . '/assets/js/report.js', [], filemtime($report_js_path) ?: $version, true ); } // 关注脚本 $follow_js_path = get_template_directory() . '/assets/js/follow.js'; if (file_exists($follow_js_path)) { wp_enqueue_script( 'aksrt-follow', $base_uri . '/assets/js/follow.js', [], filemtime($follow_js_path) ?: $version, true ); } $author_js_path = get_template_directory() . '/assets/js/author.js'; if (file_exists($author_js_path)) { wp_enqueue_script( 'aksrt-author', $base_uri . '/assets/js/author.js', ['aksrt-script'], (string) filemtime($author_js_path), true ); } // 共享基础 profile 样式(兼容层) $profile_css_path = get_template_directory() . '/assets/css/routes/profile.css'; wp_enqueue_style( 'aksrt-route-profile', $base_uri . '/assets/css/routes/profile.css', ['aksrt-tokens'], file_exists($profile_css_path) ? (string) filemtime($profile_css_path) : $version ); // 本人中心 vs 公开主页拆分加载 $is_public_user_home = $is_profile_route || (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page()) || is_page_template('templates/pages/page-user-home.php'); if ($is_public_user_home) { // /user/{nicename}/ 公开主页 $user_home_css_path = get_template_directory() . '/assets/css/routes/user-home.css'; wp_enqueue_style( 'aksrt-route-user-home', $base_uri . '/assets/css/routes/user-home.css', ['aksrt-route-profile'], file_exists($user_home_css_path) ? (string) filemtime($user_home_css_path) : $version ); } else { // 本人中心(page template) $user_center_css_path = get_template_directory() . '/assets/css/routes/user-center.css'; wp_enqueue_style( 'aksrt-route-user-center', $base_uri . '/assets/css/routes/user-center.css', ['aksrt-route-profile'], file_exists($user_center_css_path) ? (string) filemtime($user_center_css_path) : $version ); // Orders is a lazy user-center panel, so its independent assets must // be ready before client-side panel replacement can insert its markup. $has_orders_panel = false; if (class_exists('\AKSRT\User\Center')) { $dashboard_tabs = \AKSRT\User\Center::get_instance()->get_dashboard_tabs(); $has_orders_panel = isset($dashboard_tabs['orders']); } if ($has_orders_panel) { $orders_css = get_template_directory() . '/assets/css/routes/orders.css'; if (file_exists($orders_css)) { wp_enqueue_style( 'aksrt-orders', $base_uri . '/assets/css/routes/orders.css', ['aksrt-tokens'], (string) filemtime($orders_css) ); } $order_center_js = get_template_directory() . '/assets/js/order-center.js'; if (file_exists($order_center_js)) { wp_enqueue_script( 'aksrt-order-center', $base_uri . '/assets/js/order-center.js', ['aksrt-script', 'aksrt-rehydrate', 'aksrt-core-request', 'aksrt-core-modal-runtime'], (string) filemtime($order_center_js), true ); } } $identity_js = get_template_directory() . '/assets/js/routes/user-center-auth.js'; if (file_exists($identity_js)) { wp_enqueue_script( 'aksrt-route-user-center-auth', $base_uri . '/assets/js/routes/user-center-auth.js', ['aksrt-script', 'aksrt-core-request', 'aksrt-core-modal-runtime'], (string) filemtime($identity_js), true ); } $user_center_deps = file_exists($identity_js) ? ['aksrt-script', 'aksrt-route-user-center-auth'] : ['aksrt-script']; if ($has_orders_panel && wp_script_is('aksrt-order-center', 'registered')) { $user_center_deps[] = 'aksrt-order-center'; } wp_enqueue_script( 'aksrt-route-user-center', $base_uri . '/assets/js/routes/user-center.js', $user_center_deps, file_exists(get_template_directory() . '/assets/js/routes/user-center.js') ? (string) filemtime(get_template_directory() . '/assets/js/routes/user-center.js') : $version, true ); // 绑定手机短信发送按钮依赖 sign-register 的 data-aksrt-sms-trigger 契约 $sign_register_js = get_template_directory() . '/assets/js/sign-register.js'; if (file_exists($sign_register_js)) { wp_enqueue_script( 'aksrt-sign-register', $base_uri . '/assets/js/sign-register.js', ['aksrt-route-user-center'], (string) filemtime($sign_register_js), true ); } } } // 搜索结果页:路由专属 CSS(顶部卡片/胶囊搜索框/工具栏/空状态/关键词高亮) if (is_search()) { wp_enqueue_style( 'aksrt-route-search', $base_uri . '/assets/css/routes/search.css', ['aksrt-tokens', 'aksrt-post-card'], $version ); } // 分类汇总页:路由专属 CSS if (is_page_template('templates/pages/page-categories.php')) { wp_enqueue_style( 'aksrt-route-categories', $base_uri . '/assets/css/routes/categories.css', ['aksrt-tokens'], $version ); } // 友情链接页:路由专属 CSS if (is_page_template('templates/pages/page-friends.php')) { wp_enqueue_style( 'aksrt-route-friends', $base_uri . '/assets/css/routes/friends.css', ['aksrt-tokens'], file_exists(get_template_directory() . '/assets/css/routes/friends.css') ? (string) filemtime(get_template_directory() . '/assets/css/routes/friends.css') : $version ); } // 网址导航页(zibll links.php) // 文章导航页(zibll postsnavs.php) if (is_page_template('templates/pages/page-posts-navs.php')) { $page_navs_js = get_template_directory() . '/assets/js/page-navs.js'; if (file_exists($page_navs_js)) { wp_enqueue_script( 'aksrt-page-navs', $base_uri . '/assets/js/page-navs.js', [], (string) filemtime($page_navs_js), true ); } $pn_css = get_template_directory() . '/assets/css/routes/posts-navs.css'; if (file_exists($pn_css)) { wp_enqueue_style( 'aksrt-route-posts-navs', $base_uri . '/assets/css/routes/posts-navs.css', ['aksrt-tokens'], (string) filemtime($pn_css) ); } $section_navs = get_template_directory() . '/assets/js/section-navs.js'; if (file_exists($section_navs)) { wp_enqueue_script( 'aksrt-section-navs', $base_uri . '/assets/js/section-navs.js', ['jquery'], (string) filemtime($section_navs), true ); } $pn_js = get_template_directory() . '/assets/js/posts-navs-page.js'; if (file_exists($pn_js)) { wp_enqueue_script( 'aksrt-posts-navs-page', $base_uri . '/assets/js/posts-navs-page.js', ['jquery'], (string) filemtime($pn_js), true ); } } // 文章归档页 if (is_page_template('templates/pages/page-archives.php')) { $ar_css = get_template_directory() . '/assets/css/routes/archives.css'; if (file_exists($ar_css)) { wp_enqueue_style( 'aksrt-route-archives', $base_uri . '/assets/css/routes/archives.css', ['aksrt-tokens'], (string) filemtime($ar_css) ); } } // 禁封申诉页 if (is_page_template('templates/pages/page-ban-appeal.php')) { $ba_css = get_template_directory() . '/assets/css/routes/ban-appeal.css'; if (file_exists($ba_css)) { wp_enqueue_style( 'aksrt-route-ban-appeal', $base_uri . '/assets/css/routes/ban-appeal.css', ['aksrt-tokens'], (string) filemtime($ba_css) ); } $ba_js = get_template_directory() . '/assets/js/ban-appeal-page.js'; if (file_exists($ba_js)) { wp_enqueue_script( 'aksrt-ban-appeal-page', $base_uri . '/assets/js/ban-appeal-page.js', [], (string) filemtime($ba_js), true ); } } // 消息中心页 if (is_page_template('templates/pages/page-messages.php')) { $messages_css = get_template_directory() . '/assets/css/frontend/messages.css'; if (file_exists($messages_css)) { wp_enqueue_style( 'aksrt-messages', $base_uri . '/assets/css/frontend/messages.css', ['aksrt-tokens'], (string) filemtime($messages_css) ); } $messages_js = get_template_directory() . '/assets/js/messages.js'; if (file_exists($messages_js)) { wp_enqueue_script( 'aksrt-messages', $base_uri . '/assets/js/messages.js', ['aksrt-script'], (string) filemtime($messages_js), true ); } $conversation_js = get_template_directory() . '/assets/js/conversation.js'; if (file_exists($conversation_js)) { wp_enqueue_script( 'aksrt-conversation', $base_uri . '/assets/js/conversation.js', ['aksrt-script'], (string) filemtime($conversation_js), true ); } } // Unified share-data builder — single payload assembler for every share // surface (dropdown, copy, WeChat, poster). Loaded on any singular view. if (is_singular()) { $share_data_js = get_template_directory() . '/assets/js/share-data-builder.js'; if (file_exists($share_data_js)) { wp_enqueue_script( 'aksrt-share-data', $base_uri . '/assets/js/share-data-builder.js', ['aksrt-script'], (string) filemtime($share_data_js), true ); } } // 单篇文章 — poster-share.js(海报分享按钮) if (is_singular('post')) { $poster_js = get_template_directory() . '/assets/js/poster-share.js'; if (file_exists($poster_js)) { wp_enqueue_script( 'aksrt-poster-share', $base_uri . '/assets/js/poster-share.js', ['aksrt-script', 'aksrt-share-data'], (string) filemtime($poster_js), true ); } } // 登录/注册/绑定 — pages + auth 路由专属 CSS if ($is_auth_page) { $enqueue_module('pages'); // Auth 路由专属样式 wp_enqueue_style( 'aksrt-route-auth', $base_uri . '/assets/css/routes/auth.css', ['aksrt-tokens'], file_exists(get_template_directory() . '/assets/css/routes/auth.css') ? (string) filemtime(get_template_directory() . '/assets/css/routes/auth.css') : $version ); $sign_css = get_template_directory() . '/assets/css/routes/sign.css'; if (file_exists($sign_css)) { wp_enqueue_style( 'aksrt-route-sign', $base_uri . '/assets/css/routes/sign.css', ['aksrt-tokens'], (string) filemtime($sign_css) ); } // 手机号注册/登录 + SMS 倒计时 + 人机验证联动 $sign_js_path = get_template_directory() . '/assets/js/sign-register.js'; if (file_exists($sign_js_path)) { wp_enqueue_script( 'aksrt-sign-register', $base_uri . '/assets/js/sign-register.js', ['aksrt-script'], (string) filemtime($sign_js_path), true ); } } // 404 页面 if (is_404()) { $enqueue_module('pages'); } // grid-cms 卡片样式 if ($is_resource_archive || $is_single_resource || ($is_cms_mode && ($is_home_or_archive || $is_static_page) && !$is_fixed_homepage)) { $enqueue_module('post-card-cms'); // 确保 post-card 基础样式也加载(若上面分支未加) if (!$is_home_or_archive && !$is_single_post && !$is_static_page) { $enqueue_module('post-card'); } } // 单篇资源专属样式 if ($is_single_resource) { $enqueue_module('single-post'); $enqueue_module('resource-meta'); $enqueue_module('comments'); } // 资源归档专属样式 if ($is_resource_archive) { $enqueue_module('resource-archive'); } // 单篇资源 / 付费内容 / 独立下载页:下载 + 收银台脚本 if ($is_single_resource || $is_paid_content_single || $is_download_file_page) { $cms_download_js_path = get_template_directory() . '/assets/js/cms-download.js'; wp_enqueue_script( 'aksrt-cms-download', $base_uri . '/assets/js/cms-download.js', ['aksrt-script', 'aksrt-runtime'], file_exists($cms_download_js_path) ? (string) filemtime($cms_download_js_path) : $version, true ); } // Legacy freeform CMS home modules: only for non-fixed CMS archive previews. $is_cms_home = ($is_home_or_archive && $is_cms_mode) && !$is_fixed_homepage; // 管理员预览模式(?aksrt_preview=...):无论站点风格都允许加载模块系统资源 $is_preview = is_user_logged_in() && current_user_can('manage_options') && isset($_GET['aksrt_preview']); if ($is_cms_home || $is_preview) { $enqueue_module('home-modules'); $enqueue_module('post-card'); // 模块内复用 $enqueue_module('header-components'); // header components 模块依赖 $enqueue_module('post-card-cms'); // grid-cms 卡片依赖 wp_enqueue_script( 'aksrt-cms-home-modules', $base_uri . '/assets/js/cms-home-modules.js', ['aksrt-script'], $version, true ); } if ($is_fixed_homepage) { $enqueue_module('header-components'); // header-slider / hero $enqueue_module('post-card'); $homepage_css_path = get_template_directory() . '/assets/css/frontend/homepage-fixed.css'; $homepage_style_deps = file_exists($frontend_bundle) ? ['aksrt-frontend-bundle', 'aksrt-header-components', 'aksrt-post-card'] : ['aksrt-zibll-compat-vars', 'aksrt-layout', 'aksrt-widgets', 'aksrt-header-components', 'aksrt-post-card']; $homepage_style_deps = array_values(array_filter( $homepage_style_deps, static fn(string $handle): bool => wp_style_is($handle, 'registered') )); wp_enqueue_style( 'aksrt-homepage-fixed', $base_uri . '/assets/css/frontend/homepage-fixed.css', $homepage_style_deps, file_exists($homepage_css_path) ? (string) filemtime($homepage_css_path) : $version ); } // 积分相关:已登录 + 启用积分功能时全站加载 if ($credits_on || $balance_on || $affiliate_on) { $enqueue_module('credits'); // profile 页:加载 credits.js(签到 + 邀请 + 提现交互) if ($is_profile_page) { $credits_js_path = get_template_directory() . '/assets/js/credits.js'; wp_enqueue_script( 'aksrt-credits', $base_uri . '/assets/js/credits.js', ['aksrt-script', 'aksrt-core-modal-runtime', 'aksrt-vip-coordinator'], file_exists($credits_js_path) ? (string) filemtime($credits_js_path) : $version, true ); $badges_js_path = get_template_directory() . '/assets/js/user-badges.js'; if (file_exists($badges_js_path)) { wp_enqueue_script( 'aksrt-user-badges', $base_uri . '/assets/js/user-badges.js', ['aksrt-script', 'aksrt-core-request', 'aksrt-core-modal-runtime', 'aksrt-core-modal-triggers'], (string) filemtime($badges_js_path), true ); } } } // Badges UI: user center + public profile (zibll medal modal/list). if (class_exists('\AKSRT\User\Badges') && \AKSRT\User\Badges::enabled()) { $is_badge_surface = $is_profile_page || is_author() || (function_exists('aksrt_is_user_home_page') && aksrt_is_user_home_page()) || (function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page()); if ($is_badge_surface) { $enqueue_module('medal'); $badges_js_path_global = get_template_directory() . '/assets/js/user-badges.js'; if (file_exists($badges_js_path_global) && !wp_script_is('aksrt-user-badges', 'enqueued')) { wp_enqueue_script( 'aksrt-user-badges', $base_uri . '/assets/js/user-badges.js', ['aksrt-script', 'aksrt-core-request', 'aksrt-core-modal-runtime', 'aksrt-core-modal-triggers'], (string) filemtime($badges_js_path_global), true ); } } } $this->enqueue_public_fonts_js_and_data($base_uri, $core_dep, $deps, $is_fixed_homepage, $is_home_or_archive, $is_single_post, $is_single_resource, $version); } }