diff --git a/code/app/common/helper/SiteStyle.php b/code/app/common/helper/SiteStyle.php index 55eafcf..debc305 100644 --- a/code/app/common/helper/SiteStyle.php +++ b/code/app/common/helper/SiteStyle.php @@ -215,6 +215,14 @@ class SiteStyle // 页面规则 $homePage = self::buildHomePageCfg($seed); $categoryIndexPage = self::buildCategoryIndexPageCfg($seed); + $categoryHomePage = [ + // 3 套母型:A / B / C + 'family' => ['A', 'B', 'C'][$seed % 3], + + // 每套母型 10 个子变体(0–9) + 'variant' => ($seed >> 4) % 10, + ]; + $categoryPage = self::buildCategoryPageCfg($seed); $categoryListPage = self::buildCategoryListPageCfg($seed); $searchPage = self::buildSearchPageCfg($seed); @@ -297,6 +305,7 @@ class SiteStyle 'pages' => [ 'home' => $homePage, + 'category_home' => $categoryHomePage, 'category_index' => $categoryIndexPage, 'category' => $categoryPage, 'category_list' => $categoryListPage, @@ -484,6 +493,8 @@ class SiteStyle "seowords/layout/layout_" . $cfg['pages']['detail']['seowords']['layout'] . ".css", "pinlun/_pinlun_layout_" . $cfg['pages']['detail']['pinlun']['layout'] . ".css", + "category/category_home/family_" . $cfg['pages']['category_home']['family'] . ".css", + "banner/banner_" . sprintf('%02d', $tpl['banner_tpl']) . ".css", "list/list_" . sprintf('%02d', $tpl['list_tpl']) . ".css", "detail/detail_" . sprintf('%02d', $tpl['detail_tpl']) . ".css", diff --git a/code/app/common/seo/SeoRenderer.php b/code/app/common/seo/SeoRenderer.php index 07720a2..c337f8e 100644 --- a/code/app/common/seo/SeoRenderer.php +++ b/code/app/common/seo/SeoRenderer.php @@ -20,83 +20,6 @@ class SeoRenderer // $this->pool = SiteStyle::SEO_POOL[$poolId]['seo_phrase'] ?? []; } - /** - * 只负责:选一条模板 - */ - // public function getTemplate(string $field, string $strPage): string - // { - - // // 1️⃣ 取当前字段 + 页面类型的文案池 - // $phrases = loadSeoFile( - // $this->cfg['pool_id'], - // $strPage, - // $field - // ); - - // if (!$phrases) { - // return ''; - // } - - // // 2️⃣ 冻结的 slot - // $slot = $this->cfg['phrase_pick'][$strPage][$field] ?? 0; - - // // slot 是二维 - // if (isset($phrases[$slot]) && is_array($phrases[$slot])) { - // $list = $phrases[$slot]; - // } else { - // $list = $phrases; - // } - - // // 3️⃣ 稳定消费 index(不受扩容影响) - // $len = $this->cfg['slot_len'][$strPage][$field] ?? count($list); - // $len = max(1, min($len, count($list))); - - // // $idx = abs(crc32( - // // Request::pathinfo() ?: Request::host() - // // )) % $len; - // $idx = $this->cfg['phrase_idx'][$strPage][$field] ?? 0; - // return $list[$idx] ?? ''; - - - // return $list[$idx] ?? ''; - // } - // public function getTemplate(string $field, string $strPage): string - // { - // if (empty($this->cfg['pool_id'])) { - // return ''; - // } - - // // 1️⃣ 加载运行期文案池(不冻结) - // $phrases = loadSeoFile( - // $this->cfg['pool_id'], - // $strPage, - // $field - // ); - - // if (!$phrases || !is_array($phrases)) { - // return ''; - // } - - // // 2️⃣ 冻结 slot - // $slot = $this->cfg['phrase_pick'][$strPage][$field] ?? 0; - - // if (isset($phrases[$slot]) && is_array($phrases[$slot])) { - // $list = $phrases[$slot]; - // } else { - // // 兜底:当成单 slot - // $list = $phrases; - // } - - // if (!$list) { - // return ''; - // } - - // // 3️⃣ 冻结 idx(核心) - // $idx = $this->cfg['phrase_idx'][$strPage][$field] ?? 0; - - // return $list[$idx] ?? ''; - // } - public function getTemplate(string $field, string $strPage): string { diff --git a/code/app/home/view/videoGpt1/index/index.html b/code/app/home/view/videoGpt1/index/index.html index d5cbd83..331f381 100644 --- a/code/app/home/view/videoGpt1/index/index.html +++ b/code/app/home/view/videoGpt1/index/index.html @@ -48,7 +48,7 @@ {include file="module/list/title/_title_router" /} {assign name="listCfg" value="$TpStyle.template_cfg.list_layout.lunli"} {assign name="limit" value="$listCfg.layout['max_items']"} - {video:listexp count="$limit" v_parent_category_en="dian-ying" + {video:listexp count="$limit" v_category_en="lun-li-pian" d_key="key" d_val="Video" cache_life="3600" export_name="__LIST__" /} {include file="module/list/shell/_shell_router" /} diff --git a/code/app/home/view/videoGpt1/module/category/category_home/family_A.html b/code/app/home/view/videoGpt1/module/category/category_home/family_A.html new file mode 100644 index 0000000..1c4f309 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_home/family_A.html @@ -0,0 +1,58 @@ +
+ + + + {video:categorytype category_type="ONE" d_key="key" d_val="val"} +
+ +
+ {if $TpStyle.template_cfg.pages.category_home.variant < 5} +

{$val.v_category}

+ {elseif $TpStyle.template_cfg.pages.category_home.variant < 10 /} +

{$val.v_category}分类

+ {elseif $TpStyle.template_cfg.pages.category_home.variant < 15 /} +

{$val.v_category}频道

+ {else /} +

{$val.v_category}类型导航

+ {/if} + + {if $TpStyle.template_cfg.pages.category_home.variant < 10} + + 更多 + + {/if} +
+ + {if in_array($TpStyle.template_cfg.pages.category_home.variant,[2,5,9,13,17])} +

+ 提供{$val.v_category}相关热门分类,持续更新。 +

+ {/if} + + + +
+ {/video:categorytype} + +
diff --git a/code/app/home/view/videoGpt1/module/category/category_home/family_B.html b/code/app/home/view/videoGpt1/module/category/category_home/family_B.html new file mode 100644 index 0000000..8dba85b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_home/family_B.html @@ -0,0 +1,40 @@ +
+ + {video:categorytype category_type="ONE" d_key="key" d_val="val"} +
+ +
+ {if $TpStyle.template_cfg.pages.category_home.variant < 10} +

{$val.v_category}频道

+ {else /} +

{$val.v_category}内容分类

+ {/if} + + {if in_array($TpStyle.template_cfg.pages.category_home.variant,[1,6,11,16])} +

+ 汇集{$val.v_category}下的热门类型,便于快速查找。 +

+ {/if} +
+ +
+ {foreach $val.children as $child} + + {$child.v_category} + + {/foreach} +
+ + {if $TpStyle.template_cfg.pages.category_home.variant >= 10} + + {/if} + +
+ {/video:categorytype} + +
diff --git a/code/app/home/view/videoGpt1/module/category/category_home/family_c.html b/code/app/home/view/videoGpt1/module/category/category_home/family_c.html new file mode 100644 index 0000000..727111c --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_home/family_c.html @@ -0,0 +1,31 @@ +
+ + {video:categorytype category_type="ONE" d_key="key" d_val="val"} +
+ + {if $TpStyle.template_cfg.pages.category_home.variant < 7} +

{$val.v_category}分类导航

+ {elseif $TpStyle.template_cfg.pages.category_home.variant < 14 /} +

{$val.v_category}内容索引

+ {else /} +

{$val.v_category}类型入口

+ {/if} + + {if !in_array($TpStyle.template_cfg.pages.category_home.variant,[4,9,16])} +

+ 本页整理{$val.v_category}相关的多个细分类型,方便浏览与筛选。 +

+ {/if} + + + +
+ {/video:categorytype} + +
diff --git a/code/app/home/view/videoGpt1/rss/baidu.xml b/code/app/home/view/videoGpt1/rss/baidu.xml index ac39614..8fd01ee 100644 --- a/code/app/home/view/videoGpt1/rss/baidu.xml +++ b/code/app/home/view/videoGpt1/rss/baidu.xml @@ -19,7 +19,7 @@ <?php echo html_entity_decode($Video['v_name'], ENT_QUOTES | ENT_XML1, 'UTF-8'); ?> {$Video.v_remarks} - https://{$DomainModel->d_domain}{site:vurl v_id='$vo.v_id' v_py='$vo.v_name_en'/} + https://{$DomainModel->d_domain}{site:vurl v_id='$Video.v_id' v_py='$Video.v_name_en'/} {volist name='$Video.v_actor' id='vo' key='index'} {$vo} , diff --git a/code/app/home/view/videoGpt1/rss/so.xml b/code/app/home/view/videoGpt1/rss/so.xml index 70d5cbb..36669fd 100644 --- a/code/app/home/view/videoGpt1/rss/so.xml +++ b/code/app/home/view/videoGpt1/rss/so.xml @@ -9,7 +9,7 @@ sort_type="news" d_key="d_key" d_val="Video" cache_life="86400"} -https://www.{$DomainModel->d_domain}{site:vurl v_id='$vo.v_id' v_py='$vo.v_name_en'/} +https://www.{$DomainModel->d_domain}{site:vurl v_id='$Video.v_id' v_py='$Video.v_name_en'/} {$Video.v_publish_date} diff --git a/code/app/home/view/videoGpt1/video/getMap.html b/code/app/home/view/videoGpt1/video/getMap.html index b7299a0..da9bd45 100644 --- a/code/app/home/view/videoGpt1/video/getMap.html +++ b/code/app/home/view/videoGpt1/video/getMap.html @@ -1,88 +1,17 @@ {extend name="base" /} {block name="get-data"} -{video:pagerexp page="$Request.get.page" limit="12" -key="$Request.get.keyword" -d_key="d_key" -d_val="Video" -p_val="page_data" button_num="5" cache_life="3600" func="generateSearchPager" export_name="resData" /} -{site:grm page_code="h5_video_search" diff="0" num="30" g_key="arrGrm" /} + {/block} -{block name="title"}{site:replace code="VIDEO@GETSEARCHVIDEO@TITLE"}{/block} -{block name="keywords"}{site:replace code="VIDEO@GETSEARCHVIDEO@KEYWORDS"}{/block} -{block name="description"}{site:replace code="VIDEO@GETSEARCHVIDEO@DESCRIPTION"}{/block} +{block name="title"}{site:seotkd code="title" page="category_home" /}{/block} +{block name="keywords"}{site:seotkd code="keywords" page="category_home" /}{/block} +{block name="description"}{site:seotkd code="description" page="category_home" /}{/block} {block name="head"} - - - - - - - - - -{// 结构化数据} - {/block} @@ -96,49 +25,21 @@ p_val="page_data" button_num="5" cache_life="3600" func="generateSearchPager" ex {block name="main"} -
- +{switch name="TpStyle.template_cfg.pages.category_home.family"} - {video:categorytype category_type="ONE" d_key="key" d_val="val"} -
- +{case value="A"} + {include file="module/category/category_home/family_A" /} +{/case} -
- - -
-
- - {/video:categorytype} +{case value="B"} + {include file="module/category/category_home/family_B" /} +{/case} - -
+{case value="C"} + {include file="module/category/category_home/family_C" /} +{/case} + +{/switch} {/block} {block name="customize"} diff --git a/code/app/services/VideoService.php b/code/app/services/VideoService.php index 4a4909c..f83595e 100644 --- a/code/app/services/VideoService.php +++ b/code/app/services/VideoService.php @@ -653,11 +653,22 @@ class VideoService // 更新值 $arrAllVideoClass = StaticConfig::getVideoCategoryFilter(); - $strNCategory = $arrAllVideoClass[$strVCategoryEn]; + //$strNCategory = $arrAllVideoClass[$strVCategoryEn]; + $strNCategory = ($strVCategoryEn === 'all' || !isset($arrAllVideoClass[$strVCategoryEn])) + ? '' + : $arrAllVideoClass[$strVCategoryEn]; + ConverterMovel::setVal([ 'intPage' => $intPage, - 'strVideoParentCategoryName' => empty($strVParentCategory) || $strVParentCategory == 'all' ? '' : StaticConfig::$arrVideoClass[$strVParentCategory], + 'strVideoParentCategoryName' => + empty($strVParentCategory) + || $strVParentCategory === 'all' + || !isset(StaticConfig::$arrVideoClass[$strVParentCategory]) + ? '' + : StaticConfig::$arrVideoClass[$strVParentCategory], + + //'strVideoParentCategoryName' => empty($strVParentCategory) || $strVParentCategory == 'all' ? '' : StaticConfig::$arrVideoClass[$strVParentCategory], 'strVideoCategoryName' => empty($strNCategory) ? '' : str_replace("视频", "", $strNCategory), 'strVideoStatus' => empty($strVStatus) ? '' : StaticConfig::$arrVideoStatus[$strVStatus], 'strVideoOrder' => empty($strSortType) ? '' : StaticConfig::$arrVideoSortType[$strSortType], @@ -808,9 +819,9 @@ class VideoService // 线路映射(可持续扩展) $arrMap = [ - 'maotai' => '茅台', - 'douban' => '豆瓣', - 'youzhi' => '优质', + 'maotai' => '茅台资源', + 'douban' => '豆瓣资源', + 'youzhi' => '优质资源', 'default' => '默认', 'vip' => 'VIP线路', diff --git a/code/public/initdata/video/pools/pool_v1/category_home/description.php b/code/public/initdata/video/pools/pool_v1/category_home/description.php new file mode 100644 index 0000000..3a6de9a --- /dev/null +++ b/code/public/initdata/video/pools/pool_v1/category_home/description.php @@ -0,0 +1,64 @@ +