预留)
$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.写入缓存,输出页面---------------------------------*/