预留) $requestUri = getRequestUri(); // 当前请求URI $requestUriWithParams = getRequestUri(true); // 当前请求URI(含参数) $root_domain = getRootDomain($domain); // 根域名 $sub_domain = getSubDomain($domain); // 二级域名前缀(预留) $device = getDeviceType(); // 获取设备类型 // ========================================================= // 页面缓存 // ========================================================= $cache = getCache(); // 获取redis缓存对象 // 访问控制(根据IP白名单) // handleVisitorAccess(getDeviceDetect(),$cache); /**-----------------------使用缓存页面---------------------------------*/ // 当前页面缓存Key $cache_key = md5($domain . $requestUri); // md5(域名 + 请求路径) // 读取缓存 $moban_html = $cache->get($cache_key); // 读取缓存 // 输出缓存的页面内容 if (is_string($moban_html) && $moban_html !== '') { outputHtml($moban_html); exit; } /**-----------------------使用缓存页面---------------------------------*/ $tagEngine = new TagEngine(); // 获取注册自定义标签的对象 /**-----------------------1.首页---------------------------------*/ //路由判断-> 是否为首页 if (getPageType() === 'home') { // 获取 Redis 中的最新比赛数据 // $news_list = getRawCacheData('sports_news', false) ?: []; // $news_list_random = get_random_subset($news_list, 36); $moban_html = load_template(TEMPLATES_DIR . '/index.html'); //加载模板内容 // 批量注册自定义UI标签(主要是html布局) $tagEngine->registerMany([ '{card-tabs}' => ui_card_tabs(), '{header}' => ui_header(), // '{match_list}' => ui_match_item($football_list), // '{news_list}' => ui_news_item($news_list_random), // '{friend_links}' => ui_friend_links(), '{footer}' => ui_footer(), ]); // 渲染UI标签到模板 $moban_html = $tagEngine->render($moban_html); // 批量注册自定义UI标签(主要是html布局) $tagEngine->registerMany([ '{比赛日期}' => nowDateChinese(), '{访问地址}' => $current_website, ]); // 渲染UI标签到模板 $moban_html = $tagEngine->render($moban_html); } /**-----------------------1.首页---------------------------------*/ /**-----------------------2.资讯列表页---------------------------------*/ //路由判断-> 是否为资讯列表页 if (getPageType() === 'news') { $moban_html = load_template(TEMPLATES_DIR . '/news.html'); //加载模板内容 // $paged = paginate_data($news_list, 10); // 批量注册自定义UI标签(主要是html布局) $tagEngine->registerMany([ '{card-tabs}' => ui_card_tabs(), '{header}' => ui_header(), // '{friend_links}' => ui_friend_links(), '{footer}' => ui_footer(), ]); // 渲染UI标签到模板 $moban_html = $tagEngine->render($moban_html); // 批量注册自定义UI标签(主要是html布局) $tagEngine->registerMany([ '{栏目链接}' => '#', '{栏目名称}' => '体育资讯', // '{新闻列表}' => ui_news_details_item($paged['items']), // 传入切片后的当前页数据 // '{分页}' => $paged['pagination'], // 传入分页导航条 '{访问地址}' => $current_website . $requestUri, ]); // 渲染UI标签到模板 $moban_html = $tagEngine->render($moban_html); } /**-----------------------2.资讯列表页---------------------------------*/ /**-----------------------3.资讯详情页---------------------------------*/ //路由判断-> 是否为资讯详情页 if (getPageType() === 'article') { $news_list = getRawCacheData('sports_news', false); // 获取新闻列表数据 $news_item = getArticleDataByUri($news_list, $requestUri); // 查找对应新闻的数据 if (!$news_item) { show404Page(); exit; // 记得加上 exit,防止继续往下执行 } $prevnext = getPrevNextById($news_list, $requestUri); $prev = $prevnext['prev'] ?? null; // 确保即使返回null也不会报错 $next = $prevnext['next'] ?? null; $moban_html = load_template(TEMPLATES_DIR . '/article.html'); // 1. 先渲染通用布局标签 $tagEngine->registerMany([ '{card-tabs}' => ui_card_tabs(), '{header}' => ui_header(), // '{friend_links}' => ui_friend_links(), '{footer}' => ui_footer(), ]); $moban_html = $tagEngine->render($moban_html); // 2. 处理日期防错:确保 create_at 存在 $pub_date = (isset($news_item['create_at']) && !empty($news_item['create_at'])) ? substr($news_item['create_at'], 0, 10) : date('Y-m-d'); // 3. 注册文章详情标签 $tagEngine->registerMany([ '{标题}' => htmlspecialchars($news_item['title'] ?? '无标题'), '{访问地址}' => $current_website . ($requestUriWithParams ?? $requestUri), '{栏目链接}' => "#", '{栏目名称}' => $news_item['cat_name'] ?? '新闻中心', '{发布时间}' => $pub_date, '{文章内容}' => ui_article_content($news_item), // 传入防错后的 $prev/$next,ui_prevnext_articles 函数内部建议也要做 !empty($item) 的判断 '{上一篇}' => ($prev ? ui_prevnext_articles($prev) : '没有了'), '{下一篇}' => ($next ? ui_prevnext_articles($next) : '没有了'), '{相关文章}' => ui_related_articles($news_list, 3), ]); // 4. 最后渲染内容标签 $moban_html = $tagEngine->render($moban_html); } /**-----------------------3.资讯详情页---------------------------------*/ /**-----------------------4.关于我们的页面---------------------------------*/ //路由判断-> 是否为关于我们的页面 if (getPageType() === 'about') { $moban_html = load_template(TEMPLATES_DIR . '/about.html'); //加载模板内容 $tagEngine->registerMany([ '{card-tabs}' => ui_card_tabs(), '{header}' => ui_header(), // '{friend_links}' => ui_friend_links(), '{footer}' => ui_footer(), ]); // 渲染UI标签到模板 $moban_html = $tagEngine->render($moban_html); // 批量注册自定义UI标签(主要是html布局) $tagEngine->registerMany([ '{页面内容}' => '', '{页面标题}' => '关于我们', ]); // 渲染UI标签到模板 $moban_html = $tagEngine->render($moban_html); } /**-----------------------4.关于我们的页面---------------------------------*/ /**-----------------------TODO---------------------------------*/ // 后期要增减页面从这里开始写 /**-----------------------TODO---------------------------------*/ /** * ========================================================= * 判断模板是否存在 * ========================================================= */ if (!isset($moban_html) || $moban_html === '') { header('Location: /'); // 直接返回到主页 exit; } /**-----------------------5.全站统一替换的标签---------------------------------*/ // 获取站点TDK(优先读缓存;无缓存则随机生成一套并写入缓存,实现一站唯一TDK) $tdk = get_site_tdk(); $title = $tdk['网站标题'] ?? DEFAULT_TITLE; $webName = $tdk['网站名称'] ?? DEFAULT_WEBSITE_NAME; $keywords = $tdk['网站关键词'] ?? DEFAULT_KEYWORDS; $ms = $tdk['网站描述'] ?? DEFAULT_DESC; $date = date('Y') . '年'; // 批量注册自定义固定标签 $tagEngine->registerMany([ '{网站标题}' => $title, '{描述}' => $ms, // 预留 '{主关键词}' => $keywords, // 预留 '{年份}' => $date, ]); // 渲染固定标签到模板 $moban_html = $tagEngine->render($moban_html); // 批量注册自定义固定标签 $tagEngine->registerMany([ '{网站名称}' => $webName, ]); // 渲染固定标签到模板 $moban_html = $tagEngine->render($moban_html); /**-----------------------5.全站统一替换的标签---------------------------------*/ /**-----------------------6.写入缓存,输出页面---------------------------------*/ // ========================================================= // 写入页面缓存 // ========================================================= if (ENABLE_CACHE_WRITE) { $cache->set($cache_key, $moban_html, 86400); // 设置首页缓存(有效期一天) } // 输出最终页面内容 outputHtml($moban_html); /**-----------------------6.写入缓存,输出页面---------------------------------*/