Merge branch 'dev' of ssh://git.bgbg.live:18150/root/SEONexus into dev

This commit is contained in:
Default
2025-05-06 10:39:19 +08:00
81 changed files with 2967 additions and 2025 deletions

View File

@@ -447,9 +447,9 @@ foreach ($arrRoutes['prefixes'] as $platform => $prefixes) {
break;
case 'video_rank_index':
$strView = 'pc/getRank.html';
$strView = 'pc/getRankIndex.html';
if ($platform == 'h5') {
$strView = 'video/getRank.html';
$strView = 'video/getRankIndex.html';
}
//视频排行榜 首页
Route::get($strRoute, function () use ($strView) {

View File

@@ -17,18 +17,11 @@
<link href="/public/layer/need/layer.css" rel="stylesheet">
<link rel="stylesheet" href="/template/videodadi/font/iconfont.css" type="text/css">
<link rel="stylesheet" href="/template/videodadi/css/stui_block.css" type="text/css">
<link rel="stylesheet" href="/template/videodadi/css/stui_block_color.css" type="text/css">
<link rel="stylesheet" href="/template/videodadi/css/stui_default.css" type="text/css">
<!-- <link rel="stylesheet" href="/template/videodadi/css/stui_block_color.css" type="text/css"> -->
<!-- <link rel="stylesheet" href="/template/videodadi/css/stui_default.css" type="text/css"> -->
<link rel="stylesheet" href="/template/videodadi/css/mytheme-font.css" type="text/css">
<link rel="stylesheet" href="/template/videodadi/css/index.css" type="text/css">
<script>
const strPushApi = `{site:cfg code="PUSH_API_DOMAIN" encode="false"/}`;
</script>
<script src="/public/jquery/jquery-3.7.1.min.js" type="module" charset="utf-8"></script>
<script type="text/javascript"
src='/public/video/common.js?v={site:cfg code="STATIC_FILE_VERSION" encode="false"/}'></script>
{block name="head"}{/block}
{block name="head-css"}{/block}
{block name="head-js"}{/block}
@@ -38,7 +31,7 @@
</script>
</head>
<body>
<body class="{block name='body-class'}{/block}" id="{block name='body-id'}{/block}">
<header class="stui-header__top clearfix top-fixed headroom--top headroom--not-bottom" id="header-top">
<div class="container">
<div class="row">
@@ -62,7 +55,7 @@
<div class="stui-header__search">
<form id="search" name="search" method="get" action="{$strSearchListUrlTemp}">
<input type="text" name="keyword" class="mac_wd form-control mac_input" value=""
placeholder="请输入关键词..." autocomplete="off">
placeholder="搜索电影、电视剧或演员名称..." autocomplete="off">
<button class="submit" id="searchbutton" type="submit">
<i class="icon iconfont icon-search"></i>
</button>
@@ -71,7 +64,6 @@
</div>
<ul class="stui-header__menu type-slide">
<!-- 首页 -->
{if $DomainModel->info_id > 0}
<li class="{if $Request.route.strParentCategory == ''}active{/if}">
<a href="/">首页</a>
@@ -85,7 +77,6 @@
</li>
{/if}
<!-- 动态分类导航 -->
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
<li class="{if $val.v_category_en == $Request.route.strParentCategory}active{/if}">
<a href='{site:vciurl prent_category="$val.v_category_en" /}'>
@@ -95,7 +86,7 @@
{/video:categorytype}
<li>
<a href="{$strRankUrlTemp}">排行榜</a>
<a href="{$strRankUrlTemp}">排行榜</a>
</li>
</ul>
@@ -123,18 +114,27 @@
{include file="public/footer" /}
{block name="customize"}
{block name="customize"}{/block}
{/block}
<script>
const strPushApi = `{site:cfg code="PUSH_API_DOMAIN" encode="false"/}`;
</script>
<script src="/public/jquery/jquery-3.7.1.min.js" type="module" charset="utf-8"></script>
{block name="footer-js"}{/block}
<script type="text/javascript"
src='/public/video/common.js?v={site:cfg code="STATIC_FILE_VERSION" encode="false"/}'></script>
<!-- 全局统计 -->
{// 全局统计 }
{site:cfg code="PUBLIC_TONGJI_CODE" encode="false"/}
<!-- 站点统计 -->
{// 站点统计 }
{$DomainModel->d_statis|raw}
</body>

View File

@@ -1,7 +1,12 @@
{extend name="base" /}
{block name="get-data"}
{video:listexp count="12" sort_type="tuijian" d_key="key" d_val="Video" cache_life="86400" export_name="arrVideoTuijian" /}
{video:listexp count="18" sort_type="piaofang" d_key="key" d_val="Video" cache_life="86400" export_name="arrVideoPiaofang" /}
{site:grm page_code="h5_index" diff="0" num="100" g_key="arrGrm" /}
{/block}
{block name="title"}{site:replace code="VIDEO@INDEX@INDEX@TITLE"}{/block}
@@ -26,7 +31,7 @@
"description": "{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"}",
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}",
"target": 'https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}',
"query-input": "required name=search_term_string"
}
@@ -36,9 +41,12 @@
"@type": "VideoObject",
"name": "{$DomainModel->d_name}热门推荐预告片",
"description": "观看{$DomainModel->d_name}最新电影和电视剧的精彩预告片!",
"thumbnailUrl": "https://video1.com/img/video/2024/12/18/17/ai-qing-sheng-huo-di-er-ji.webp",
"uploadDate": "2025-05-05",
"duration": "m3u8",
{volist name="arrVideoTuijian" id="Video" key="key"}
{if $key == 1 }
"thumbnailUrl": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
{/if}
{/volist}
"uploadDate": "{:date('y-m-d')}",
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}"
@@ -46,22 +54,23 @@
},
{
"@type": "CollectionPage",
"name": "{$DomainModel->d_name} - 免费高清影视在线观看",
"name": "{$DomainModel->d_name} - {$DomainModel->d_logo_text}",
"url": "https://{$DomainModel->d_domain}",
"alternateName": "{$DomainModel->d_domain}",
"description": "{$DomainModel->d_name}首页提供最新电影、电视剧、综艺、动漫和短剧的免费高清在线观看,热门推荐每日更新!",
"description": "{$DomainModel->d_name}首页提供好莱坞最新电影、电视剧、综艺、动漫和短剧的免费高清在线观看,热门推荐每日更新!",
"mainEntity": {
"@type": "ItemList",
"itemListElement": [
{video:list count="2" sort_type="tuijian" d_key="key" d_val="Video" cache_life="86400"}
{volist name="arrVideoTuijian" id="Video" key="key"}
{if $key < 5 }
{
"@type": "ListItem",
"position": {$key+=1},
"position": {$key},
"item": {
"@type": "TVSeries",
"name": "{$Video.v_name}",
"url": "https://video1.com/voddetail/ai-qing-sheng-huo-di-er-ji-115959",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
"description": "{$Video.v_description}",
"actor": [
{foreach $Video.v_actor as $strActorKey=>$strActor }
@@ -74,13 +83,40 @@
"image": "{$Video.v_pic}",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "7.5",
"reviewCount": "1200"
"ratingValue": "{$Video.v_score}",
}
}
},
{/video:list}
{/if}
{/volist}
{volist name="arrVideoPiaofang" id="Video" key="key"}
{if $key < 5 }
{
"@type": "ListItem{$Video.v_id}",
"position": {$key},
"item": {
"@type": "Movies",
"name": "{$Video.v_name}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
"description": "{$Video.v_description}",
"actor": [
{foreach $Video.v_actor as $strActorKey=>$strActor }
{if $strActorKey < 5 }
{ "@type": "Person", "name": "{$strActor}" },
{/if}
{/foreach}
],
"numberOfEpisodes": {$Video.v_play_url|count},
"image": "{$Video.v_pic}",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{$Video.v_score}",
}
}
},
{/if}
{/volist}
]
}
}
@@ -111,7 +147,7 @@
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<a class="more text-muted pull-right"
href='{site:vclurl parent_category="all" category="all" area="all" lang="all" year="all" order="tuijian" page="1"/}'>更多<i
href='{site:vclurl parent_category="all" category="all" area="all" lang="all" year="all" order="tuijian" page="1"/}'>更多推荐<i
class="icon iconfont icon-more"></i></a>
<h2 class="title">
<img src="/template/videodadi/icon/icon_12.png">
@@ -122,13 +158,14 @@
</div>
</div>
<ul class="stui-vodlist clearfix">
{video:list count="2" sort_type="tuijian" d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu" /}
{/video:list}
{foreach $arrVideoTuijian as $key=>$Video }
{include file="public/video-list-shu" start="0"/}
{/foreach}
</ul>
<ul class="stui-vodlist__text col-pd clearfix hidden-xs">
{video:list count="2" sort_type="tuijian" d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu-end-text" /}
{video:list count="12" sort_type="tuijian" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu-end-text" start="13" /}
{/video:list}
</ul>
</div>
@@ -143,11 +180,9 @@
</div>
</div>
<ul class="stui-vodlist__text active col-pd clearfix">
{video:list count="2"
sort_type="piaofang"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb2" /}
{/video:list}
{foreach $arrVideoPiaofang as $key=>$Video }
{include file="public/video-list-phb2" start="27"/}
{/foreach}
</ul>
</div>
</div>
@@ -171,10 +206,10 @@
</div>
<div class="stui-pannel_bd clearfix">
<ul class="stui-vodlist__text active col-pd clearfix">
{video:ranklist count="10"
{video:ranklist count="12"
sort_type="$key"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="50" /}
{/video:ranklist}
</ul>
</div>

View File

@@ -43,15 +43,15 @@
<i class="icon iconfont icon-less"></i>
</a>
</li>
<li class="hidden-xs">
<!-- <li class="hidden-xs">
<a style="color: rgb(155, 154, 207);" class="copylink" href="javascript:;">
<i class="icon iconfont icon-share"></i>
</a>
</li>
<li class="visible-xs">
</li> -->
<!-- <li class="visible-xs">
<a style="color: rgb(124, 1, 82);" class="open-share" href="javascript:;">
<i class="icon iconfont icon-share"></i>
</a>
</li>
</li> -->
</ul>

View File

@@ -1,5 +1,8 @@
<li class="bottom-line-dot paihanban-ul-li">
{if !empty($arrGrm[$key + [start]])}
{$arrGrm[$key+[start]]|raw}
{/if}
<?php $key ++ ?>
<a
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'

View File

@@ -1,5 +1,8 @@
<li class="bottom-line-dot paihanban-ul-li">
{if !empty($arrGrm[$key + [start]])}
{$arrGrm[$key+[start]]|raw}
{/if}
<?php $key ++ ?>
<a
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'

View File

@@ -1,4 +1,7 @@
<li class="col-md-4 col-sm-3 col-xs-1 padding-0">
{if !empty($arrGrm[$key + [start]])}
{$arrGrm[$key+[start]]|raw}
{/if}
<a class="top-line-dot text-overflow"
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
title="{$Video.v_name}">

View File

@@ -1,4 +1,7 @@
<li>
{if !empty($arrGrm[$key + [start]])}
{$arrGrm[$key+[start]]|raw}
{/if}
<a
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
class="text-muted">

View File

@@ -1,5 +1,9 @@
<li class="col-md-6 col-sm-4 col-xs-3">
<div class="stui-vodlist__box">
{if !empty($arrGrm[$key + [start]])}
{$arrGrm[$key+[start]]|raw}
{/if}
<a style="color: rgb(233, 93, 80); background-image: url(&quot;/static/img/default.jpg&quot;);"
class="stui-vodlist__thumb lazyload-bg" href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'

View File

@@ -1,4 +1,7 @@
<li class="col-md-4 col-sm-3 col-xs-1 padding-0">
{if !empty($arrGrm[$key + [start]])}
{$arrGrm[$key+[start]]|raw}
{/if}
<a class="top-line-dot text-overflow" href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}' title="{$Video.v_name}">
<span class="text-muted pull-right">{$Video.v_remarks}</span>
{$Video.v_name}

View File

@@ -1,4 +1,7 @@
<li class="col-md-4 col-sm-3 col-xs-1 padding-0">
{if !empty($arrGrm[$key + [start]])}
{$arrGrm[$key+[start]]|raw}
{/if}
<a class="top-line-dot text-overflow"
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
title="{$Video.v_name}"><span class="text-muted pull-right">{$Video.v_remarks}</span>{$Video.v_name}</a>

View File

@@ -6,7 +6,7 @@
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<a class="more text-muted pull-right"
href='{site:vclurl parent_category="$val.v_category_en" category="all" area="all" lang="all" year="all" order="all" page="1"/}'>更多<i
href='{site:vclurl parent_category="$val.v_category_en" category="all" area="all" lang="all" year="all" order="all" page="1"/}'>更多{$val.v_category}<i
class="icon iconfont icon-more"></i></a>
<h3 class="title">
<img src="/template/videodadi/icon/icon_{$val.v_category_en}.png">
@@ -14,20 +14,20 @@
href="">最新{$val.v_category}</a>
</h3>
<ul class="nav nav-text pull-right hidden-sm hidden-xs">
{video:list count="3" v_category="$val.v_category_en" sort_type="tuijian" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu-top-text" /}
{video:list count="3" v_parent_category_en="$val.v_category_en" sort_type="tuijian" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu-top-text" start="60"/}
{/video:list}
</ul>
</div>
</div>
<ul class="stui-vodlist clearfix">
{video:list count="2" v_category="$val.v_category_en" sort_type="news" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu" /}
{video:list count="12" v_parent_category_en="$val.v_category_en" sort_type="news" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu" start="27"/}
{/video:list}
</ul>
<ul class="stui-vodlist__text col-pd clearfix hidden-xs">
{video:list count="2" v_category="$val.v_category_en" sort_type="news" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu-end-text" /}
{video:list count="12" v_parent_category_en="$val.v_category_en" sort_type="news" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu-end-text" start="70"/}
{/video:list}
</ul>
</div>
@@ -42,11 +42,11 @@
</div>
</div>
<ul class="stui-vodlist__text active col-pd clearfix">
{video:ranklist count="2"
v_category_en="$val.v_category_en"
{video:ranklist count="18"
v_parent_category_en="$val.v_category_en"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="80"/}
{/video:ranklist}
</ul>

View File

@@ -14,38 +14,94 @@ d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export
{site:grm page_code="h5_category_list_type" diff="0" num="100" g_key="arrGrm" /}
{site:helper func="initVideoCategoryTKD" /}
{/block}
{block name="title"}{site:replace code="VIDEO@GETCATEGORY@TITLE"}{/block}
{block name="keywords"}{site:replace code="VIDEO@GETCATEGORY@KEYWORDS"}{/block}
{block name="description"}{site:replace code="VIDEO@GETCATEGORY@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
{// 社交媒体标签}
<meta property="og:title" content='{site:replace code="VIDEO@GETCATEGORY@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETCATEGORY@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
{switch $Request.route.strParentCategory }
{case 'dian-ying' }
<meta property="og:type" content="video.movie" />
{/case}
{case 'dian-shi-ju' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'zong-yi' }
<meta property="og:type" content="video.tv_show" />
{/case}
{case 'dong-man' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'duan-ju-da-quan' }
<meta property="og:type" content="video.episode" />
{/case}
{default /}
<meta property="og:type" content="video.movie" />
{/switch}
<!-- 结构化数据 -->
{// 结构化数据}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="VIDEO@GETCATEGORY@TITLE"}',
"description": '{site:replace code="VIDEO@GETCATEGORY@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}',
"query-input": "required name=search_term_string"
}
}
[
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐",
"url": "https://{$DomainModel->d_domain}",
"description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}",
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}",
"query-input": "required name=search_term_string"
}
"hasPart": [
{volist name="resData.data" id="Video" key="key"}
{if $key < 5 }
{
"@type": "VideoObject",
"name": "{$Video.v_name}",
"description": "{$Video.v_description}",
"thumbnailUrl": '{$Video.v_pic}',
"uploadDate": "{:date('y-m-d')}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
},
{/if}
{/volist}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://{$DomainModel->d_domain}"
},
{
"@type": "ListItem",
"position": 2,
"name": "分类首页",
"item": "https://{$DomainModel->d_domain}{site:vciurl prent_category="$Request.route.strParentCategory" /}"
},
{
"@type": "ListItem",
"position": 3,
"name": "分类列表",
"item": "https://{$DomainModel->d_domain}{site:vclurl prent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" area="$Request.route.strArea" lang="$Request.route.strLang" year="$Request.route.strYear" order="$Request.route.strOrder" page="$Request.route.intPage"}"
}
]
},
]
</script>
@@ -56,14 +112,7 @@ d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export
<div class="container">
<!-- <p>route: /vodtype-:strCategory/:strParentCategory-:strArea-:strLang-:strYear-:strOrder-page:intPage </p>
<p>strParentCategory {$Request.route.strParentCategory}</p>
<p>strCategory {$Request.route.strCategory}</p>
<p>strLang {$Request.route.strLang}</p>
<p>strArea {$Request.route.strArea}</p>
<p>strYear {$Request.route.strYear}</p>
<p>strOrder {$Request.route.strOrder}</p>
<p>intPage :{$Request.route.intPage}</p> -->
<h1 class="view-title">
{site:replace code="VIDEO@GETCATEGORY@H1"}
@@ -77,8 +126,18 @@ d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<h3 class="title"><img
src="/template/videodadi/icon/icon_27.png">{site:getval code="strVideoClassName" /}筛选</h3>
src="/template/videodadi/icon/icon_27.png">{site:getval code="strVideoParentCategoryName" /}筛选</h3>
</div>
<ul class="stui-screen__list type-slide bottom-line-dot clearfix">
<li><span class="text-muted">按分类</span></li>
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
<li
class="{if $Request.route.strParentCategory == $val.v_category_en}active{/if}">
<a href='{site:vclurl prent_category="$val.v_category_en" category="all" area="$Request.route.strArea" lang="$Request.route.strLang" year="$Request.route.strYear" order="$Request.route.strOrder" page="$Request.route.intPage"}' class="text-muted">{$val.v_category}</a>
</li>
{/video:categorytype}
</ul>
<ul class="stui-screen__list type-slide bottom-line-dot clearfix">
<li><span class="text-muted">按类型</span></li>
@@ -146,7 +205,7 @@ d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export
<div class="stui-pannel_bd">
<ul class="stui-vodlist clearfix">
{foreach $resData.data as $key=>$Video}
{include file="public/video-list-shu" /}
{include file="public/video-list-shu" start="0"/}
{/foreach}
</ul>
</div>
@@ -179,21 +238,19 @@ d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export
{/switch}
{/volist}
</ul>
</div>
<div class="col-lg-wide-25 col-xs-1 stui-pannel-side hidden-sm hidden-xs padding-0">
<div class="stui-pannel stui-pannel-bg clearfix">
<div class="stui-pannel-box">
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<h3 class="title"><img src="/template/videodadi/icon/icon_12.png">电影周榜单</h3>
<h3 class="title"><img src="/template/videodadi/icon/icon_12.png">{site:getval code="strVideoParentCategoryName" /}周榜单</h3>
</div>
</div>
<div class="stui-pannel_bd">
<ul class="stui-vodlist__text col-pd clearfix">
{video:ranklist count="10" sort_type="weekly" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{video:ranklist count="20" v_parent_category_en="$Request.route.strParentCategory" sort_type="weekly" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" start="31"/}
{/video:ranklist}
</ul>
@@ -204,13 +261,13 @@ d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export
<div class="stui-pannel-box">
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<h3 class="title"><img src="/template/videodadi/icon/icon_12.png">电影月榜单</h3>
<h3 class="title"><img src="/template/videodadi/icon/icon_12.png">{site:getval code="strVideoParentCategoryName" /}月榜单</h3>
</div>
</div>
<div class="stui-pannel_bd">
<ul class="stui-vodlist__text col-pd clearfix">
{video:ranklist count="10" sort_type="monthly" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{video:ranklist count="20" v_parent_category_en="$Request.route.strParentCategory" sort_type="monthly" d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" start="51"/}
{/video:ranklist}
</ul>
</div>

View File

@@ -4,6 +4,8 @@
{site:grm page_code="h5_category_type" diff="0" num="100" g_key="arrGrm" /}
{site:helper func="initVideoCategoryTypeTKD" /}
{/block}
{block name="title"}{site:replace code="VIDEO@GETCATEGORYINDEX@TITLE"}{/block}
@@ -15,41 +17,90 @@
<meta property="og:title" content='{site:replace code="VIDEO@GETCATEGORYINDEX@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
{switch $Request.route.strParentCategory }
{case 'dian-ying' }
<meta property="og:type" content="video.movie" />
{/case}
{case 'dian-shi-ju' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'zong-yi' }
<meta property="og:type" content="video.tv_show" />
{/case}
{case 'dong-man' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'duan-ju-da-quan' }
<meta property="og:type" content="video.episode" />
{/case}
{default /}
<meta property="og:type" content="video.movie" />
{/switch}
<!-- 结构化数据 -->
<script type="application/ld+json">
[
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="VIDEO@GETCATEGORYINDEX@TITLE"}',
"description": '{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}',
"query-input": "required name=search_term_string"
}
}
"@type": "CollectionPage",
"name": "{$DomainModel->d_name} - 最新{site:getval code="strVideoParentCategoryName" /}推荐",
"url": "https://{$DomainModel->d_domain}",
"description": "{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}",
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}",
"query-input": "required name=search_term_string"
}
"hasPart": [
{video:ranklist count="5"
v_parent_category_en="$Request.route.strParentCategory"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{if $key < 5 }
{
"@type": "VideoObject",
"name": "{$Video.v_name}",
"description": "{$Video.v_description}",
"thumbnailUrl": '{$Video.v_pic}',
"uploadDate": "{:date('y-m-d')}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
},
{/if}
{/video:ranklist}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://{$DomainModel->d_domain}"
},
{
"@type": "ListItem",
"position": 2,
"name": "分类首页",
"item": "https://{$DomainModel->d_domain}{site:vciurl prent_category="$Request.route.strParentCategory" /}"
}
]
},
]
</script>
{/block}
{block name="head-css"}{/block}
{block name="head-js"}{/block}
{block name="main"}
<div class="container">
<h1 class="view-title">
{site:replace code="VIDEO@GETCATEGORYINDEX@H1"}
@@ -59,11 +110,11 @@
</div>
<div class="row">
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
{if $val.v_category_en == $Request.route.strParentCategory}
{foreach $val.children as $intChildrenKey=>$arrChildrenCategory }
{foreach $val.children as $intChildrenKey=>$arrChildrenCategory }
<div class="stui-pannel stui-pannel-bg clearfix">
<div class="stui-pannel-box clearfix">
<div class="stui-pannel_bd clearfix">
@@ -76,35 +127,35 @@
<i class="icon iconfont icon-more"></i>
</a>
<h3 class="title">
<img src="/template/videodadi/icon/icon_27.png"><a
style="color: rgb(52, 99, 240);" href="">
{site:getval code="strYear" /}最新{$arrChildrenCategory.v_category}推荐 - {$DomainModel->d_name}
<img src="/template/videodadi/icon/icon_27.png"><a style="color: rgb(52, 99, 240);"
href='{site:vclurl prent_category="$Request.route.strParentCategory" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all" page="1"/}'>
{site:getval code="strYear" /}最新{$arrChildrenCategory.v_category}推荐 -
{$DomainModel->d_name}
</a>
</h3>
</div>
</div>
<ul class="stui-vodlist clearfix">
{video:list count="12"
{video:list count="12"
v_category_en="$arrChildrenCategory.v_category_en"
v_lang_en="all"
v_area_en="all"
v_year="all"
sort_type="news"
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu" /}
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu" start="0"/}
{/video:list}
</ul>
<ul class="stui-vodlist__text col-pd clearfix hidden-xs">
{video:list count="12"
{video:list count="12"
v_category_en="$arrChildrenCategory.v_category_en"
v_lang_en="all"
v_area_en="all"
v_year="all"
v_year="all"
sort_type="news"
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-text2" /}
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-text2" start="13"/}
{/video:list}
</ul>
</div>
@@ -112,18 +163,19 @@
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<h3 class="title"><img src="/template/videodadi/icon/icon_12.png"><a
style="color: rgb(57, 129, 89);" href="">{$arrChildrenCategory.v_category}周榜单</a>
style="color: rgb(57, 129, 89);"
href='{site:vrlurl parent_category="$val.v_category_en" category="$arrChildrenCategory.v_category_en" sort_type="weekly" page="1"/}'>{$arrChildrenCategory.v_category}周榜单</a>
</h3>
</div>
</div>
<ul class="stui-vodlist__text active col-pd clearfix">
{video:ranklist count="10"
{video:ranklist count="18"
v_category_en="$arrChildrenCategory.v_category_en"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="27"/}
{/video:ranklist}
</ul>
</div>
</div>
@@ -132,8 +184,37 @@
{/foreach}
{/if}
{/video:categorytype}
<div class="stui-pannel stui-pannel-bg clearfix">
<div class="stui-pannel-box clearfix">
{video:ranksort d_key="key" d_val="val"}
<div class="col-lg-4 col-md-3 col-sm-2 col-xs-1">
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<h3 class="title"><img src="/template/videodadi/icon/icon_12.png">{site:getval code="strVideoParentCategoryName" /}{$val}排行榜</h3>
</div>
</div>
<div class="stui-pannel_bd clearfix">
<ul class="stui-vodlist__text active col-pd clearfix">
{video:ranklist count="18"
v_parent_category_en="$Request.route.strParentCategory"
sort_type="$key"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" start="50" /}
{/video:ranklist}
</ul>
</div>
</div>
{/video:ranksort}
</div>
</div>
</div>
</div>
{/block}
{block name="customize"}

View File

@@ -2,50 +2,85 @@
{block name="get-data"}
{video:pagerexp page="1" limit="30"
v_class="$Request.route.strClass"
d_key="d_key"
d_val="Video"
p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" export_name="resData" /}
{site:grm page_code="h5_rank_type" diff="0" num="100" g_key="arrGrm" /}
{/block}
{block name="title"}{site:replace code="VIDEO@GETVIDEORANK@TITLE"}{/block}
{block name="keywords"}{site:replace code="VIDEO@GETVIDEORANK@KEYWORDS"}{/block}
{block name="description"}{site:replace code="VIDEO@GETVIDEORANK@DESCRIPTION"}{/block}
{block name="title"}{site:replace code="VIDEO@GETVIDEORANKINDEX@TITLE"}{/block}
{block name="keywords"}{site:replace code="VIDEO@GETVIDEORANKINDEX@KEYWORDS"}{/block}
{block name="description"}{site:replace code="VIDEO@GETVIDEORANKINDEX@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEORANK@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEORANK@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
<!-- 结构化数据 -->
{// 社交媒体标签}
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEORANKINDEX@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEORANKINDEX@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="video.movie" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="VIDEO@GETVIDEORANK@TITLE"}',
"description": '{site:replace code="VIDEO@GETVIDEORANK@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}',
"query-input": "required name=search_term_string"
}
}
[
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"name": "{$DomainModel->d_name} - 最新排行榜推荐",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="VIDEO@GETVIDEORANKINDEX@TITLE"}',
"description": '{site:replace code="VIDEO@GETVIDEORANKINDEX@DESCRIPTION"}',
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}",
"query-input": "required name=search_term_string"
}
"hasPart": [
{video:ranklist count="5"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{if $key < 5 }
{
"@type": "VideoObject",
"name": "{$Video.v_name}",
"description": "{$Video.v_description}",
"thumbnailUrl": '{$Video.v_pic}',
"uploadDate": "{:date('y-m-d')}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
},
{/if}
{/video:ranklist}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://{$DomainModel->d_domain}"
},
{
"@type": "ListItem",
"position": 2,
"name": "排行榜首页",
"item": "https://{$DomainModel->d_domain}{$strRankUrlTemp}"
}
]
},
]
</script>
{/block}
{block name="head-css"}
<link rel="canonical" href="https://{$Request.route.strSiteDomain}/rank/{$Request.route.strVideoClassName}/{$Request.route.strOrderName}">
<link rel="canonical" href="https://{$Request.route.strSiteDomain}/rank/{$Request.route.strVideoParentCategoryName}/{$Request.route.strOrderName}">
{/block}
{block name="head-js"}
@@ -56,9 +91,9 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
<div class="container">
<h1 class="view-title">
{site:replace code="VIDEO@GETVIDEORANK@H1"}
{site:replace code="VIDEO@GETVIDEORANKINDEX@H1"}
</h1>
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEORANK@TEXT"}</h4>
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEORANKINDEX@TEXT"}</h4>
<div class="row">
@@ -107,7 +142,7 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
{video:ranklist count="20"
sort_type="$key"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="0" /}
{/video:ranklist}
</ul>
</div>
@@ -115,7 +150,6 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
{/video:ranksort}
</div>
</div>

View File

@@ -2,50 +2,88 @@
{block name="get-data"}
{video:pagerexp page="1" limit="30"
v_class="$Request.route.strClass"
d_key="d_key"
{video:ranklistexp page="1" limit="30"
v_parent_category_en="$Request.route.strParentCategory"
v_category_en="$Request.route.strCategory"
sort_type="$Request.route.strSortType"
d_key="key"
d_val="Video"
p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" export_name="resData" /}
p_val="page_data" button_num="10" cache_life="86400" export_name="arrVideoRankList" /}
{site:grm page_code="h5_rank_list_type" diff="0" num="100" g_key="arrGrm" /}
{site:helper func="initVideoRankListTKD" /}
{/block}
{block name="title"}{site:replace code="VIDEO@GETVIDEORANK@TITLE"}{/block}
{block name="keywords"}{site:replace code="VIDEO@GETVIDEORANK@KEYWORDS"}{/block}
{block name="description"}{site:replace code="VIDEO@GETVIDEORANK@DESCRIPTION"}{/block}
{block name="title"}{site:replace code="VIDEO@GETVIDEORANKLIST@TITLE"}{/block}
{block name="keywords"}{site:replace code="VIDEO@GETVIDEORANKLIST@KEYWORDS"}{/block}
{block name="description"}{site:replace code="VIDEO@GETVIDEORANKLIST@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEORANK@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEORANK@DESCRIPTION"}' />
{// 社交媒体标签}
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEORANKLIST@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEORANKLIST@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
<meta property="og:type" content="video.movie" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="VIDEO@GETVIDEORANK@TITLE"}',
"description": '{site:replace code="VIDEO@GETVIDEORANK@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}',
"query-input": "required name=search_term_string"
}
}
[
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"name": "{$DomainModel->d_name} - 最新排行榜推荐",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="VIDEO@GETVIDEORANKLIST@TITLE"}',
"description": '{site:replace code="VIDEO@GETVIDEORANKLIST@DESCRIPTION"}',
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}",
"query-input": "required name=search_term_string"
}
"hasPart": [
{volist name="arrVideoRankList" id="Video" key="key"}
{if $key < 5 }
{
"@type": "VideoObject",
"name": "{$Video.v_name}",
"description": "{$Video.v_description}",
"thumbnailUrl": '{$Video.v_pic}',
"uploadDate": "{:date('y-m-d')}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
},
{/if}
{/volist}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://{$DomainModel->d_domain}"
},
{
"@type": "ListItem",
"position": 2,
"name": "排行榜首页",
"item": "https://{$DomainModel->d_domain}{$strRankUrlTemp}"
}
]
},
]
</script>
{/block}
{block name="head-css"}
<link rel="canonical" href="https://{$Request.route.strSiteDomain}/rank/{$Request.route.strVideoClassName}/{$Request.route.strOrderName}">
{/block}
{block name="head-js"}
@@ -54,9 +92,9 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
{block name="main"}
<div class="container">
<h1 class="view-title">
{site:replace code="VIDEO@GETVIDEORANK@H1"}
{site:replace code="VIDEO@GETVIDEORANKLIST@H1"}
</h1>
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEORANK@TEXT"}</h4>
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEORANKLIST@TEXT"}</h4>
<div class="row">
<div class="col-lg-wide-75 col-xs-1 padding-0">
<div class="stui-pannel stui-pannel-bg clearfix">
@@ -64,7 +102,7 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
<div class="stui-pannel_hd">
<div class="stui-pannel__head active bottom-line clearfix">
<h3 class="title"><img
src="/template/videodadi/icon/icon_27.png">{site:getval code="strVideoClassName" /}筛选</h3>
src="/template/videodadi/icon/icon_27.png">{site:getval code="strVideoParentCategoryName" /}筛选</h3>
</div>
<ul class="stui-screen__list type-slide bottom-line-dot clearfix">
@@ -73,12 +111,12 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
<li
class='{if empty( $Request.route.strParentCategory) || $Request.route.strParentCategory == "" || $Request.route.strParentCategory == "all"}active{/if}'>
<a
href='{site:vrlurl parent_category="all" category="all" sort_type="Request.route.strSortType" page="1"/}'>全部</a>
href='{site:vrlurl parent_category="all" category="all" sort_type="$Request.route.strSortType" page="1"/}'>全部</a>
</li>
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
<li class="{if $Request.route.strParentCategory == $val.v_category_en}active{/if}">
<a href='{site:vrlurl parent_category="$val.v_category_en" category="all" sort_type="Request.route.strSortType" page="1"/}'
<a href='{site:vrlurl parent_category="$val.v_category_en" category="all" sort_type="$Request.route.strSortType" page="1"/}'
class="text-muted">{$val.v_category}</a>
</li>
{/video:categorytype}
@@ -89,14 +127,14 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
<li><span class="text-muted">按类型</span></li>
<li
class='{if empty( $Request.route.strCategory) || $Request.route.strCategory == "" || $Request.route.strCategory == "all"}active{/if}'>
<a href='{site:vrlurl parent_category="all" category="all" sort_type="Request.route.strSortType" page="1"/}'>全部</a>
<a href='{site:vrlurl parent_category="all" category="all" sort_type="$Request.route.strSortType" page="1"/}'>全部</a>
</li>
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
{if $val.v_category_en == $Request.route.strParentCategory}
{foreach $val.children as $intChildrenKey=>$arrChildrenCategory }
<li
class="{if $Request.route.strCategory == $arrChildrenCategory.v_category_en}active{/if}">
<a href='{site:vrlurl parent_category="$Request.route.strParentCategory" category="$arrChildrenCategory.v_category_en" sort_type="Request.route.strSortType" page="1"/}' class="text-muted">{$arrChildrenCategory.v_category}</a>
<a href='{site:vrlurl parent_category="$Request.route.strParentCategory" category="$arrChildrenCategory.v_category_en" sort_type="$Request.route.strSortType" page="1"/}' class="text-muted">{$arrChildrenCategory.v_category}</a>
</li>
{/foreach}
{/if}
@@ -126,8 +164,8 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
</div>
<div class="stui-pannel_bd">
<ul class="stui-vodlist clearfix">
{foreach $resData.data as $key=>$Video}
{include file="public/video-list-shu" /}
{foreach $arrVideoRankList as $key=>$Video}
{include file="public/video-list-shu" start="0" /}
{/foreach}
</ul>
</div>
@@ -150,7 +188,7 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
v_parent_category_en="dian-ying"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="0" /}
{/video:ranklist}
</ul>
@@ -170,7 +208,7 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateVideoPager" e
v_parent_category_en="dian-shi-ju"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="0" /}
{/video:ranklist}
</ul>
</div>

View File

@@ -15,30 +15,74 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager"
{block name="description"}{site:replace code="VIDEO@GETSEARCHVIDEO@DESCRIPTION"}{/block}
{block name="head"}
<meta property="og:title" content="动作电影 - 第1页 - 大地影视搜索">
<meta property="og:description" content="大地影视搜索动作电影 第1页最新视频免费观看免费视频,热门影视,视频网站访问video1.com发现更多">
<meta property="og:image" content="https://video1.com/img/search.webp">
<meta property="og:url" content="https://video1.com/search?q=动作电影&page=1">
<meta property="og:title" content='{site:replace code="VIDEO@GETSEARCHVIDEO@TITLE"}'>
<meta property="og:description" content='{site:replace code="VIDEO@GETSEARCHVIDEO@DESCRIPTION"}'>
<meta property="og:url" content='https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}'>
<meta property="og:type" content="website">
<meta property="og:site_name" content="大地影视">
<meta property="og:site_name" content='{$DomainModel->d_name}'>
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="动作电影 第1页 - 大地影视">
<meta name="twitter:description" content="搜索动作电影 第1页大地影视提供最新视频免费视频,热门影视,视频网站立即访问video1.com">
<meta name="twitter:image" content="https://video1.com/img/search.webp">
<meta name="twitter:title" content='{site:replace code="VIDEO@GETSEARCHVIDEO@TITLE"}'>
<meta name="twitter:description" content='{site:replace code="VIDEO@GETSEARCHVIDEO@DESCRIPTION"}'>
<meta name="twitter:image:alt" content="动作电影 搜索结果第1页">
<!-- 结构化数据 -->
{// 结构化数据}
<script type="application/ld+json">
[
{
"@context": "https://schema.org",
"@type": "SearchResultsPage",
"name": "{strSearchKeywords} 第{intPage}页",
"url": "https://{strSiteDomain}/search?q={strSearchKeywords}&page={intPage}",
"description": "{strSiteName}搜索{strSearchKeywords} 第{intPage}页,最新视频免费观看"
"@type": "WebSite",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}",
"alternateName": "{$DomainModel->d_domain}",
"description": "{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"}",
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:vsurl key="search_term_string" p="1"/}',
"query-input": "required name=search_term_string"
}
},
{
"@type": "CollectionPage",
"name": "{$DomainModel->d_name} - {$DomainModel->d_logo_text}",
"url": "https://{$DomainModel->d_domain}",
"alternateName": "{$DomainModel->d_domain}",
"description": '{site:replace code="VIDEO@GETSEARCHVIDEO@DESCRIPTION"}',
"mainEntity": {
"@type": "ItemList",
"itemListElement": [
{volist name="resData.data" id="Video" key="key"}
{if $key < 5 }
{
"@type": "ListItem",
"position": {$key},
"item": {
"@type": "Movies",
"name": "{$Video.v_name}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}',
"description": "{$Video.v_description}",
"actor": [
{foreach $Video.v_actor as $strActorKey=>$strActor }
{if $strActorKey < 5 }
{ "@type": "Person", "name": "{$strActor}" },
{/if}
{/foreach}
],
"numberOfEpisodes": {$Video.v_play_url|count},
"image": "{$Video.v_pic}",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{$Video.v_score}",
}
}
},
{/if}
{/volist}
]
}
}
</script>
]
</script>
{/block}
@@ -72,6 +116,9 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager"
{foreach $resData.data as $key=>$Video}
<li class="active clearfix">
{if !empty($arrGrm[$key])}
{$arrGrm[$key]|raw}
{/if}
<div class="thumb"><a
class="v-thumb stui-vodlist__thumb lazyload-bg"
@@ -166,7 +213,7 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager"
v_parent_category_en="dian-ying"
sort_type="total"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="11"/}
{/video:ranklist}
@@ -187,7 +234,7 @@ p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager"
v_parent_category_en="dian-shi-ju"
sort_type="total"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="31"/}
{/video:ranklist}
</ul>

View File

@@ -3,9 +3,9 @@
{block name="get-data"}
{if $Request.route.intVId}
{video:info v_id="$Request.route.intVId" v_key="arrVideo" /}
{video:info v_id="$Request.route.intVId" v_key="arrVideo" /}
{else}
{video:info v_id="$DomainModel->info_id" n_key="arrVideo" n_forge_id="0" /}
{video:info v_id="$DomainModel->info_id" n_key="arrVideo" n_forge_id="0" /}
{/if}
{site:grm page_code="h5_video_info" diff="$arrVideo.v_id" num="120" g_key="arrGrm" /}
@@ -38,36 +38,93 @@
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEOINFO@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEOINFO@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
<!-- 结构化数据 -->
{// Open Graph 协议用于Facebook、LinkedIn等}
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEOINFO@TITLE"}'>
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEOINFO@DESCRIPTION"}'>
{switch $arrVideo.v_parent_category_en }
{case 'dian-ying' }
<meta property="og:type" content="video.movie" />
{/case}
{case 'dian-shi-ju' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'zong-yi' }
<meta property="og:type" content="video.tv_show" />
{/case}
{case 'dong-man' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'duan-ju-da-quan' }
<meta property="og:type" content="video.episode" />
{/case}
{default /}
<meta property="og:type" content="video.movie" />
{/switch}
<meta property="og:url" content='https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}'>
<meta property="og:image" content="{$arrVideo.v_pic}">
<meta property="og:site_name" content="{$DomainModel->d_name}">
<meta property="og:video:type" content="video/m3u8">
{// Twitter Card用于Twitter/X}
<meta name="twitter:card" content="player">
<meta name="twitter:title" content='{site:replace code="VIDEO@GETVIDEOINFO@TITLE"}'>
<meta name="twitter:description" content='{site:replace code="VIDEO@GETVIDEOINFO@DESCRIPTION"}'>
<meta name="twitter:image" content="{$arrVideo.v_pic}">
{// 结构化数据}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "{strVideoName}",
"description": "{strVideoDescription}",
"director": {
"@type": "Person",
"name": "{strVideoDirector}"
},
"actor": {
"@type": "Person",
"name": "{strVideoActor}"
},
"thumbnailUrl": "",
"url": "",
"inLanguage": "{strLangName}",
"contentLocation": {
"@type": "Place",
"name": "{strAreaName}"
}
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "{$arrVideo.v_name}",
"description": "{$arrVideo.v_description}",
"thumbnailUrl": "{$arrVideo.v_pic}",
"uploadDate": "{:date('y-m-d')}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}',
"inLanguage": [
{volist name='$arrVideo.v_lang' id='strVideoLang' key='index'}
"{$strVideoLang}",
{/volist}
],
"contentLocation": [
{volist name='$arrVideo.v_area' id='strVideoArea' key='index'}
{
"@type": "Place",
"name": "{$strVideoArea}"
},
{/volist}
],
"director": [
{volist name='$arrVideo.v_director' id='strVideoDirector' key='index'}
{
"@type": "Person",
"name": "{$strVideoDirector}"
}
{/volist}
],
"actor": [
{volist name='$arrVideo.v_actor' id='strVideoActor' key='index'}
{
"@type": "Person",
"name": "{$strVideoActor}"
},
{/volist}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{$arrVideo.v_score}",
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
}
</script>
}
</script>
{/block}
@@ -75,9 +132,9 @@
{block name="main"}
<div class="container">
<h1 class="view-title">
{site:replace code="VIDEO@GETVIDEOINFO@H1"}
{site:replace code="VIDEO@GETVIDEOINFO@H1" diff="$arrVideo.v_id"}
</h1>
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEOINFO@TEXT"}</h4>
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEOINFO@TEXT" diff="$arrVideo.v_id"}</h4>
<div class="row">
<div class="col-lg-wide-75 col-xs-1 padding-0">
@@ -88,9 +145,11 @@
当前位置
<i class="icon iconfont icon-more"></i>
</span>
<a style="color: rgb(178, 251, 104)" href="/">首页</a>
<a class="nav-item-a" href="/">首页</a>
<i class="icon iconfont icon-more"></i>
<a style="color: rgb(226, 55, 35)" href="">{$arrVideo.v_category}</a>
<a class="nav-item-a" href='{site:vciurl prent_category="$arrVideo.v_parent_category_en" /}'>{$arrVideo.v_parent_category}</a>
<i class="icon iconfont icon-more"></i>
<a class="nav-item-a" href='{site:vclurl prent_category="$arrVideo.v_parent_category_en" category="$arrVideo.v_category_en" area="all" lang="all" year="all" order="all" page="1"}'>{$arrVideo.v_category}</a>
<i class="icon iconfont icon-more"></i>
<span class="text-muted">{$arrVideo.v_name}</span>
</div>
@@ -106,16 +165,16 @@
<div class="stui-content__detail">
<h1 class="title">
<h2 class="title">
《{$arrVideo.v_name}》<span class="score text-red">{$arrVideo.v_score}</span>
</h1>
</h2>
<p class="data">
<span class="text-muted">类型:</span>
<a href='{site:vsurl key="$arrVideo.v_category" p="1"/}'>{$arrVideo.v_category}</a>
&nbsp;
<span class="split-line"></span>
<span class="text-muted hidden-xs">地区:</span>
{volist name='$arrVideo.v_actor' id='vo' key='index'}
{volist name='$arrVideo.v_area' id='vo' key='index'}
<a style="color: rgb(240, 3, 132)" href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
&nbsp;
{/volist}
@@ -143,9 +202,8 @@
<span class="text-muted">更新:</span>{$arrVideo.v_publish_date}
</p>
<p class="desc hidden-xs">
<span class="left text-muted">简介:</span>  
{$arrVideo.v_description|raw}
<a>
<span class="left text-muted">简介:{$arrVideo.v_description|raw}</span>
<a href="#desc">
详情
<i class="icon iconfont icon-moreunfold"></i>
</a>
@@ -237,7 +295,7 @@
sort_type="news"
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu" /}
{include file="public/video-list-shu" start="0"/}
{/video:list}
</ul>
@@ -249,7 +307,7 @@
v_year="all"
sort_type="news"
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-text2" /}
{include file="public/video-list-text2" start="13"/}
{/video:list}
</ul>
@@ -269,11 +327,11 @@
</div>
<div class="stui-pannel_bd">
<ul class="stui-vodlist__text col-pd clearfix">
{video:ranklist count="12"
{video:ranklist count="18"
v_parent_category_en="$arrVideo.v_parent_category_en"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="25"/}
{/video:ranklist}
</ul>
</div>
@@ -290,11 +348,11 @@
</div>
<div class="stui-pannel_bd">
<ul class="stui-vodlist__text col-pd clearfix">
{video:ranklist count="12"
{video:ranklist count="18"
v_parent_category_en="$arrVideo.v_parent_category_en"
sort_type="monthly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="45"/}
{/video:ranklist}
</ul>

View File

@@ -1,122 +1,125 @@
{extend name="base" /}
{block name="get-data"}
{if $Request.route.intVId}
{video:info v_id="$Request.route.intVId" n_key="arrVideo" n_forge_id="$Request.route.intForgeId" /}
{else}
{video:info v_id="$DomainModel->info_id" n_key="arrVideo" n_forge_id="0" /}
{/if}
{video:info v_id="$Request.route.intVId" v_key="arrVideo" /}
{site:grm page_code="h5_video_info" diff="$arrVideo.v_id" num="120" g_key="arrGrm" /}
{/block}
{block name="title"}
{if $DomainModel->info_id == $Request.route.intVId || empty($Request.route.intVId)}
{site:replace code="INDEX@INDEX@TITLE"}
{else}
{site:replace code="VIDEO@GETVIDEOINFO@TITLE" diff="$Request.route.intVId" /}
{/if}
{site:replace code="VIDEO@GETVIDEOPLAY@TITLE" diff="$Request.route.intVId" /}
{/block}
{block name="keywords"}
{if $DomainModel->info_id == $Request.route.intVId || empty($Request.route.intVId)}
{site:replace code="INDEX@INDEX@KEYWORDS"}
{else}
{site:replace code="VIDEO@GETVIDEOINFO@KEYWORDS" diff="$Request.route.intVId"}
{/if}
{site:replace code="VIDEO@GETVIDEOPLAY@KEYWORDS" diff="$Request.route.intVId"}
{/block}
{block name="description"}
{if $DomainModel->info_id == $Request.route.intVId || empty($Request.route.intVId)}
{site:replace code="INDEX@INDEX@DESCRIPTION"}
{else}
{site:replace code="VIDEO@GETVIDEOINFO@DESCRIPTION" diff="$Request.route.intVId"}
{/if}
{site:replace code="VIDEO@GETVIDEOPLAY@DESCRIPTION" diff="$Request.route.intVId"}
{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEOPLAY@TITLE"}' />
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEOPLAY@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
<!-- 结构化数据 -->
{// Open Graph 协议用于Facebook、LinkedIn等}
<meta property="og:title" content='{site:replace code="VIDEO@GETVIDEOINFO@TITLE"}'>
<meta property="og:description" content='{site:replace code="VIDEO@GETVIDEOINFO@DESCRIPTION"}'>
{switch $arrVideo.v_parent_category_en }
{case 'dian-ying' }
<meta property="og:type" content="video.movie" />
{/case}
{case 'dian-shi-ju' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'zong-yi' }
<meta property="og:type" content="video.tv_show" />
{/case}
{case 'dong-man' }
<meta property="og:type" content="video.episode" />
{/case}
{case 'duan-ju-da-quan' }
<meta property="og:type" content="video.episode" />
{/case}
{default /}
<meta property="og:type" content="video.movie" />
{/switch}
<meta property="og:url" content='https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}'>
<meta property="og:image" content="{$arrVideo.v_pic}">
<meta property="og:site_name" content="{$DomainModel->d_name}">
<meta property="og:video:type" content="video/m3u8">
{// Twitter Card用于Twitter/X}
<meta name="twitter:card" content="player">
<meta name="twitter:title" content='{site:replace code="VIDEO@GETVIDEOINFO@TITLE"}'>
<meta name="twitter:description" content='{site:replace code="VIDEO@GETVIDEOINFO@DESCRIPTION"}'>
<meta name="twitter:image" content="{$arrVideo.v_pic}">
{// 结构化数据}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "{strVideoName}",
"description": "{strVideoDescription}",
"director": {
"@type": "Person",
"name": "{strVideoDirector}"
},
"actor": {
"@type": "Person",
"name": "{strVideoActor}"
},
"thumbnailUrl": "https://{strSiteDomain}/img/video/{strYear}/{strVideoName}.webp",
"url": "https://{strSiteDomain}/voddetail/{strVideoName}",
"inLanguage": "{strLangName}",
"contentLocation": {
"@type": "Place",
"name": "{strAreaName}"
}
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "{$arrVideo.v_name}",
"description": "{$arrVideo.v_description}",
"thumbnailUrl": "{$arrVideo.v_pic}",
"uploadDate": "{:date('y-m-d')}",
"url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}',
"inLanguage": [
{volist name='$arrVideo.v_lang' id='strVideoLang' key='index'}
"{$strVideoLang}",
{/volist}
],
"contentLocation": [
{volist name='$arrVideo.v_area' id='strVideoArea' key='index'}
{
"@type": "Place",
"name": "{$strVideoArea}"
},
{/volist}
],
"director": [
{volist name='$arrVideo.v_director' id='strVideoDirector' key='index'}
{
"@type": "Person",
"name": "{$strVideoDirector}"
}
{/volist}
],
"actor": [
{volist name='$arrVideo.v_actor' id='strVideoActor' key='index'}
{
"@type": "Person",
"name": "{$strVideoActor}"
},
{/volist}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{$arrVideo.v_score}",
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
}
</script>
}
</script>
{/block}
{block name="head-css"}
<link rel="stylesheet" href="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/dplayer/1.24.0/DPlayer.min.css">
<style type="text/css">
.stui-player__head {
display: none;
}
.dplayer-video-wrap {
max-height: 480px;
}
video {
max-height: 480px;
}
@media (max-width:767px) {
body {
padding-top: 0;
}
.stui-header__top {
display: none;
}
.stui-player__head {
display: block;
padding: 15px;
background-color: #333;
color: #fff;
}
.stui-player__head a {
color: #fff;
}
}
</style>
{/block}
{block name="head-js"}
<script type="text/javascript"
src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/hls.js/1.1.5-0.canary.8257/hls.min.js" defer></script>
<script type="text/javascript" src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/dplayer/1.26.0/DPlayer.min.js"
defer></script>
{/block}
{block name='body-class'}video-play-page{/block}
{block name="main"}
<div class="container">
@@ -268,7 +271,7 @@
sort_type="news"
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-shu" /}
{include file="public/video-list-shu" start="0"/}
{/video:list}
</ul>
@@ -280,7 +283,7 @@
v_year="all"
sort_type="news"
d_key="d_key" d_val="Video" cache_life="86400"}
{include file="public/video-list-text2" /}
{include file="public/video-list-text2" start="0" /}
{/video:list}
</ul>
</div>
@@ -303,7 +306,7 @@
v_parent_category_en="$arrVideo.v_parent_category_en"
sort_type="weekly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="0"/}
{/video:ranklist}
</ul>
</div>
@@ -323,7 +326,7 @@
v_parent_category_en="$arrVideo.v_parent_category_en"
sort_type="monthly"
d_key="key" d_val="Video" cache_life="86400"}
{include file="public/video-list-phb" /}
{include file="public/video-list-phb" start="0"/}
{/video:ranklist}
</ul>
</div>
@@ -346,20 +349,6 @@
'v_category': `{$arrVideo['v_category']}`,
};
</script>
{/block}
{block name="customize"}
<script>
function findFirstUrl(obj) {
for (const key in obj) {
const data = obj[key];
if (Array.isArray(data) && data.length > 0 && data[0].url) {
return data[0].url;
}
}
return null;
}
var intPlayUrlIndex = '{$Request.route.intPlayIndex}'
var strPlayType = '{$Request.route.strPlayType}'
var intJumpTimeFirst = 1;
@@ -367,83 +356,20 @@
var intJumpTimeTwoEnd = 1;
var arrPlayUrl = {$arrVideo.v_play_url|json_encode|raw} ;
var strPlayUrl = ""
if (strPlayType == 'default') {
strPlayUrl = findFirstUrl(arrPlayUrl)
} else {
var ActivePlayUrl = arrPlayUrl[strPlayType][intPlayUrlIndex - 1]
strPlayUrl = ActivePlayUrl.url
}
document.addEventListener('DOMContentLoaded', function () {
initDPlayer(strPlayUrl)
function initDPlayer(strPlayUrl) {
let DomDPlayer = document.getElementById('dplayer')
videoPlayer = new DPlayer({
container: DomDPlayer,
autoplay: true,
screenshot: false,
//logo: dplayerLogo,
video: {
url: strPlayUrl,
type: 'hls',
},
pluginOptions: {
hls: {
maxBufferLength: 600,
},
},
});
videoPlayer.play()
// 监听全屏进入事件
videoPlayer.on('fullscreen', function () {
DomDPlayer.classList.add("dp-fullscreen");
// 设置视频元素的样式,取消 max-height
document.querySelector("video").style.maxHeight = "none";
});
// 监听全屏退出事件
videoPlayer.on('fullscreen_cancel', function () {
DomDPlayer.classList.remove("dp-fullscreen");
// 恢复 max-height 为 480px
document.querySelector("video").style.maxHeight = "480px";
});
videoPlayer.on('error', function () {
});
videoPlayer.on('play', function () {
console.log('play')
// 确保视频准备好后再进行跳转
// setTimeout(() => {
// if (videoPlayer.video.readyState >= 2) {
// // readyState >= 2 表示元数据已加载
// videoPlayer.seek(20); // 跳转到 20 分钟
// }
// }, 1000); // 等待一会儿确保视频已开始
});
// 监听当前播放时间
videoPlayer.on('timeupdate', function () {
if (videoPlayer.video.currentTime < intJumpTimeFirst) { // 当前时间小于 20 秒
videoPlayer.seek(intJumpTimeFirst); // 跳过到 20 秒
}
if (videoPlayer.video.currentTime >= intJumpTimeTwoStart && videoPlayer.video.currentTime < intJumpTimeTwoEnd) { // 当前时间小于 20 秒
videoPlayer.seek(intJumpTimeTwoEnd + 1); // 跳过到 20 秒
}
});
}
})
// 页面加载时执行
// $(document).ready(function () {
// let vod_name = $("h1 a").text();
// let vod_url = window.location.pathname;
// let vod_part = $(".stui-content__playlist .active a").text();
// addHistory(vod_name, vod_url, vod_part)
// history();
// });
</script>
{/block}
{block name="customize"}
{/block}
{block name="footer-js"}
<script type="text/javascript"
src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/hls.js/1.1.5-0.canary.8257/hls.min.js" defer></script>
<script type="text/javascript" src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/dplayer/1.26.0/DPlayer.min.js"
defer></script>
{/block}

View File

@@ -10,14 +10,14 @@
'{strLangName}' => '这个是语言名字..',
'{strOrderName}' => '这个是排序名字..',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
'{intPage}' => '当前页面分页页码',
目前在搭建一个视频站点:
站点页面 有:首页,分类首页,分类列表页面,排行榜首页,排行榜列表页面,搜索页面,视频详情页面,视频播放页面
目前 优化分类列表页面:分类首页有分页 {intPage} 是这的占位符,
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoClassName} 是这些的占位符
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoParentCategoryName} 是这些的占位符
每个大分类下面有N个小分类 动作片 爱情片 .. 注意:{strVideoCategoryName} 是这些的占位符
筛选条件1 按地区筛选: 中国 美国 .. 注意:{strAreaName} 是这些的占位符
筛选条件2 按语言筛选: 汉语,英语 .. 注意:{strLangName} 是这些的占位符
@@ -34,20 +34,20 @@
返回格式:
title [
'{strYear}最新{strVideoClassName}推荐 - {strSiteName} - 免费高清{strVideoClassName}'
'{strYear}最新{strVideoParentCategoryName}推荐 - {strSiteName} - 免费高清{strVideoParentCategoryName}'
..
]
keywords: [
'最新{strVideoClassName},高清{strVideoClassName},免费{strVideoClassName}在线观看,{strSiteName},{strYear}{strVideoClassName}排行榜,{strVideoClassName}推荐',
'最新{strVideoParentCategoryName},高清{strVideoParentCategoryName},免费{strVideoParentCategoryName}在线观看,{strSiteName},{strYear}{strVideoParentCategoryName}排行榜,{strVideoParentCategoryName}推荐',
..
]
description: [
'{strSiteName}提供{strYear}最新{strVideoClassName},免费在线观看高清{strVideoClassName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
'{strSiteName}提供{strYear}最新{strVideoParentCategoryName},免费在线观看高清{strVideoParentCategoryName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
..
]
h1 [
'{strSiteName} - {strYear}最新{strVideoClassName}推荐'
'{strSiteName} - {strYear}最新{strVideoParentCategoryName}推荐'
..
]

View File

@@ -7,7 +7,7 @@
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
目前在搭建一个视频站点:
站点页面 有:首页,分类首页,分类列表页面,排行榜首页,排行榜列表页面,搜索页面,视频详情页面,视频播放页面
@@ -24,20 +24,20 @@
返回格式:
title [
'{strYear}最新{strVideoClassName}推荐 - {strSiteName} - 免费高清{strVideoClassName}'
'{strYear}最新{strVideoParentCategoryName}推荐 - {strSiteName} - 免费高清{strVideoParentCategoryName}'
..
]
keywords: [
'最新{strVideoClassName},高清{strVideoClassName},免费{strVideoClassName}在线观看,{strSiteName},{strYear}{strVideoClassName}排行榜,{strVideoClassName}推荐',
'最新{strVideoParentCategoryName},高清{strVideoParentCategoryName},免费{strVideoParentCategoryName}在线观看,{strSiteName},{strYear}{strVideoParentCategoryName}排行榜,{strVideoParentCategoryName}推荐',
..
]
description: [
'{strSiteName}提供{strYear}最新{strVideoClassName},免费在线观看高清{strVideoClassName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
'{strSiteName}提供{strYear}最新{strVideoParentCategoryName},免费在线观看高清{strVideoParentCategoryName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
..
]
h1 [
'{strSiteName} - {strYear}最新{strVideoClassName}推荐'
'{strSiteName} - {strYear}最新{strVideoParentCategoryName}推荐'
..
]

View File

@@ -9,7 +9,7 @@
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
目前在搭建一个视频站点:
站点页面 有:首页,分类首页,分类列表页面,排行榜首页,排行榜列表页面,搜索页面,视频详情页面,视频播放页面
@@ -24,20 +24,20 @@
返回格式:
title [
'{strYear}最新{strVideoClassName}推荐 - {strSiteName} - 免费高清{strVideoClassName}'
'{strYear}最新{strVideoParentCategoryName}推荐 - {strSiteName} - 免费高清{strVideoParentCategoryName}'
..
]
keywords: [
'最新{strVideoClassName},高清{strVideoClassName},免费{strVideoClassName}在线观看,{strSiteName},{strYear}{strVideoClassName}排行榜,{strVideoClassName}推荐',
'最新{strVideoParentCategoryName},高清{strVideoParentCategoryName},免费{strVideoParentCategoryName}在线观看,{strSiteName},{strYear}{strVideoParentCategoryName}排行榜,{strVideoParentCategoryName}推荐',
..
]
description: [
'{strSiteName}提供{strYear}最新{strVideoClassName},免费在线观看高清{strVideoClassName},包括{sub_categories}等,{strSiteKeywords},立即访问{strSiteDomain}',
'{strSiteName}提供{strYear}最新{strVideoParentCategoryName},免费在线观看高清{strVideoParentCategoryName},包括{sub_categories}等,{strSiteKeywords},立即访问{strSiteDomain}',
..
]
h1 [
'{strSiteName} - {strYear}最新{strVideoClassName}推荐'
'{strSiteName} - {strYear}最新{strVideoParentCategoryName}推荐'
..
]

View File

@@ -8,13 +8,13 @@
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strOrderName}' => '这个是排序名字..',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
目前在搭建一个视频站点:
站点页面 有:首页,分类首页,分类列表页面,排行榜首页,排行榜列表页面,搜索页面,视频详情页面,视频播放页面
注意:目前 优化排行榜页面:排行榜页面没有分页,
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoClassName} 是这些的占位符
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoParentCategoryName} 是这些的占位符
每个大分类下面有N个小分类 动作片 爱情片 .. 注意:{strVideoCategoryName} 是这些的占位符
筛选条件1 按排序筛选: 天排行榜,周排行榜,月排行榜,总排行榜,票房排行榜 .. 注意:{strOrderName} 是这些的占位符
@@ -30,20 +30,20 @@
返回格式:
title [
'{strYear}{strVideoClassName}排行榜 - {strSiteName} - 高清热门{strVideoClassName}'
'{strYear}{strVideoParentCategoryName}排行榜 - {strSiteName} - 高清热门{strVideoParentCategoryName}'
..
]
keywords: [
'{strVideoClassName}排行榜,热门{strVideoClassName},高清{strVideoClassName},免费{strVideoClassName}在线观看,{strSiteName},{strSiteKeywords}',
'{strVideoParentCategoryName}排行榜,热门{strVideoParentCategoryName},高清{strVideoParentCategoryName},免费{strVideoParentCategoryName}在线观看,{strSiteName},{strSiteKeywords}',
..
]
description: [
'{strSiteName}精选{strYear}{strVideoClassName}排行榜,免费观看高清热门{strVideoClassName},包括{sub_categories}等,{strSiteKeywords},访问{strSiteDomain}',
'{strSiteName}精选{strYear}{strVideoParentCategoryName}排行榜,免费观看高清热门{strVideoParentCategoryName},包括{sub_categories}等,{strSiteKeywords},访问{strSiteDomain}',
..
]
h1 [
'{strSiteName} - {strYear}{strVideoClassName}排行榜'
'{strSiteName} - {strYear}{strVideoParentCategoryName}排行榜'
..
]

View File

@@ -0,0 +1,78 @@
很好,下面是我整理了一份格式,你根据这个格式 返回我需要的高质量内容
{strSiteKeywords} = 免费视频,热门影视,视频网站
最牛的seo 优化大师
这个是 替换标识 这个页面下面的标签都可以使用 {strSiteKeywords} 是全局公用关键词,你看看怎么使用
'{strSiteName}' => '这个是网站名',
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'
目前在搭建一个视频站点:
站点页面 有:首页,分类首页,分类列表页面,排行榜首页,排行榜列表页面,搜索页面,视频详情页面,视频播放页面
注意:目前 优化排行榜首页:排行榜页面没有分页,
分类列表页 展示内容: 日,周 ,月,总 四个排行榜列表每个列表展示20个视频
需要你帮忙设计 TKD 模板,
h1标签内容 模板,
h4标签(页面介绍描述,主要是丰富页面 友好seo)
因为我后面需要部署大量域名站点 都使用同一个视图模板,所以要设计不同的 seo 替换模板
请根据路由和上面的替换标识和描述你帮忙设计50套最友好seo的 tkd. h1 . h4 替换模板,字数要符合常规,不要超标也不要少,质量要保证,多参考其它 权重高的视频站点设计,
需要完整 50 套模板的详细文本(而非代表性示例),不要重复
注意 占位替换模板只能使用我上面列出来的,如果需要增加请告诉我,尽量把上面的占位符都使用上
返回格式:
title [
..
]
keywords: [
..
]
description: [
..
]
h1 [
..
]
h4 [
..
]
注意:h4: 确保 <h4> 内容自然长度适中50-120 字)(作用是丰富列表页面内容的文案)
{
"title": [
],
"keywords": [
],
"description": [
],
"h1": [
],
"h4": [
]
}

View File

@@ -7,7 +7,7 @@
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
'{strAreaName}' => '这个是当前视地区名字..',
'{strLangName}' => '这个是当前视语言名字..',
@@ -58,14 +58,14 @@
注意:h4: 确保 <h4> 内容自然长度适中50-120 字)(作用是丰富列表页面内容的文案)
感谢你的详细需求!你的目标是为视频站点的视频播放页面设计 50 套高质量、互不重复的 SEO 优化 TKDTitle、Keywords、Description、H1 和 H4 模板,并补充 50 套社交媒体标签模板Open Graph 和 Twitter Card以支持多域名部署并确保模板符合 SEO 最佳实践、字数要求和内容质量。你提供了占位符({strSiteName}, {strSiteDomain}, {strSiteKeywords}, {strYear}, {strVideoClassName}, {strVideoCategoryName}, {strAreaName}, {strLangName}, {strVideoName}, {strVideoDirector}, {strVideoActor}, {strVideoDescription}, {intPlayIndex})和全局关键词(免费视频,热门影视,视频网站),并要求参考高权重视频站点(如爱奇艺、腾讯视频、优酷),确保 <h4> 内容自然、长度适中50-120 字),且模板仅使用指定占位符,尽量融入所有占位符,尤其是重要占位符(如 {strVideoName}, {strVideoDescription}, {intPlayIndex})。
感谢你的详细需求!你的目标是为视频站点的视频播放页面设计 50 套高质量、互不重复的 SEO 优化 TKDTitle、Keywords、Description、H1 和 H4 模板,并补充 50 套社交媒体标签模板Open Graph 和 Twitter Card以支持多域名部署并确保模板符合 SEO 最佳实践、字数要求和内容质量。你提供了占位符({strSiteName}, {strSiteDomain}, {strSiteKeywords}, {strYear}, {strVideoParentCategoryName}, {strVideoCategoryName}, {strAreaName}, {strLangName}, {strVideoName}, {strVideoDirector}, {strVideoActor}, {strVideoDescription}, {intPlayIndex})和全局关键词(免费视频,热门影视,视频网站),并要求参考高权重视频站点(如爱奇艺、腾讯视频、优酷),确保 <h4> 内容自然、长度适中50-120 字),且模板仅使用指定占位符,尽量融入所有占位符,尤其是重要占位符(如 {strVideoName}, {strVideoDescription}, {intPlayIndex})。
视频播放页面与视频详情页面高度相似,但增加了播放器(播放 m3u8 文件),且对于电视剧包含集数(通过 {intPlayIndex} 表示)。以下是根据你的要求设计的 完整 50 套 TKD、H1、H4 模板 和 50 套社交媒体标签模板,专为视频播放页面优化,确保高质量、无重复,参考高权重视频站点的 SEO 和社交媒体策略(如爱奇艺的“电视剧名称 第X集 - 在线观看”)。
设计原则
TKD、H1、H4 模板
SEO 友好:
Title60-70 字符,突出 {strVideoName}、 {intPlayIndex}如“第1集”、 {strVideoClassName},吸引点击。
Title60-70 字符,突出 {strVideoName}、 {intPlayIndex}如“第1集”、 {strVideoParentCategoryName},吸引点击。
Keywords6-8 个关键词,融入 {strSiteKeywords}, {strVideoActor}, {intPlayIndex},覆盖高频搜索词(如“电视剧名称 第1集”
Description120-160 字符,包含 {strVideoName}, {strVideoDescription:50}, {intPlayIndex} 和行动号召。
H120-40 字符,突出 {strVideoName} 和 {intPlayIndex},适合页面显示。
@@ -88,7 +88,7 @@ H450-120 字(约 100-200 字符)。
腾讯视频H1 简洁(如“电视剧名称 第X集”Keywords 覆盖主演和集数。
优酷Description 突出“在线播放”、“高清”。
占位符使用:
尽量融入 {strSiteName}, {strSiteDomain}, {strSiteKeywords}, {strYear}, {strVideoClassName}, {strVideoCategoryName}, {strAreaName}, {strLangName}, {strVideoName}, {strVideoDirector}, {strVideoActor}, {strVideoDescription}, {intPlayIndex}。
尽量融入 {strSiteName}, {strSiteDomain}, {strSiteKeywords}, {strYear}, {strVideoParentCategoryName}, {strVideoCategoryName}, {strAreaName}, {strLangName}, {strVideoName}, {strVideoDirector}, {strVideoActor}, {strVideoDescription}, {intPlayIndex}。
{intPlayIndex} 在电视剧播放页面中高频使用(如“第{intPlayIndex}集”),电影播放页面可省略或替换为“正片”。
社交媒体标签模板
SEO 和分享优化:

View File

@@ -7,7 +7,7 @@
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
'{strAreaName}' => '这个是当前视地区名字..',
'{strLangName}' => '这个是当前视语言名字..',
@@ -59,11 +59,11 @@
感谢你的详细需求!你的目标是为视频站点的视频详情页面设计 50 套高质量、互不重复的 SEO 优化 TKDTitle、Keywords、Description、H1 和 H4 模板,以支持多域名部署,并确保模板符合 SEO 最佳实践、字数要求和内容质量。你提供了占位符({strSiteName}、{strSiteDomain}、{strSiteKeywords}、{strYear}、{strVideoClassName}、{strVideoCategoryName}、{strAreaName}、{strLangName}、{strVideoName}、{strVideoDirector}、{strVideoActor}、{strVideoDescription})和全局关键词(免费视频,热门影视,视频网站),并要求参考高权重视频站点(如爱奇艺、腾讯视频、优酷),确保 <h4> 内容自然、长度适中50-120 字),且模板仅使用指定占位符,尽量融入所有占位符,尤其是重要占位符(如 {strVideoName}、{strVideoDescription})。
感谢你的详细需求!你的目标是为视频站点的视频详情页面设计 50 套高质量、互不重复的 SEO 优化 TKDTitle、Keywords、Description、H1 和 H4 模板,以支持多域名部署,并确保模板符合 SEO 最佳实践、字数要求和内容质量。你提供了占位符({strSiteName}、{strSiteDomain}、{strSiteKeywords}、{strYear}、{strVideoParentCategoryName}、{strVideoCategoryName}、{strAreaName}、{strLangName}、{strVideoName}、{strVideoDirector}、{strVideoActor}、{strVideoDescription})和全局关键词(免费视频,热门影视,视频网站),并要求参考高权重视频站点(如爱奇艺、腾讯视频、优酷),确保 <h4> 内容自然、长度适中50-120 字),且模板仅使用指定占位符,尽量融入所有占位符,尤其是重要占位符(如 {strVideoName}、{strVideoDescription})。
以下是根据你的要求设计的 完整 50 套详细、无重复的 SEO 优化模板,针对视频详情页面(包含视频的详细信息,如名称、导演、演员、简介等)。模板参考高权重视频站点的 SEO 策略(如爱奇艺的“电影名称 - 在线观看 - 爱奇艺”),注重关键词密度、语义清晰、用户吸引力和多域名适配。每个模板确保:
Title60-70 字符,突出 {strVideoName}、 {strVideoClassName},吸引点击。
Title60-70 字符,突出 {strVideoName}、 {strVideoParentCategoryName},吸引点击。
Keywords6-8 个关键词,融入 {strSiteKeywords}、{strVideoActor},覆盖高频搜索词。
Description120-160 字符,包含 {strVideoName}、 {strVideoDescription}截取前50字和行动号召。
H120-40 字符,突出 {strVideoName},适合页面显示。
@@ -71,14 +71,14 @@ H450-120 字,自然流畅,引导用户,丰富页面内容。
设计原则
SEO 友好:
模板融入高频关键词如“在线观看”、“高清”、“免费”参考高权重视频站点的标题结构如“2025电影名称 - 腾讯视频”)。
确保 Title、Keywords、Description 和 H1/H4 关键词一致,强化页面主题(如 {strVideoName}、 {strVideoClassName})。
确保 Title、Keywords、Description 和 H1/H4 关键词一致,强化页面主题(如 {strVideoName}、 {strVideoParentCategoryName})。
{strVideoDescription} 在 Description 中截取前50字确保语义完整符合 SEO 规范。
独特性:
50 套模板通过措辞变化(如“热播”、“精选”、“热门”)、占位符组合(如 {strVideoActor}、 {strVideoDirector})和结构调整(如站点名称位置)保持多样性。
避免与视频播放页面或其他页面(如分类列表页)冲突,详情页面强调 {strVideoName}、 {strVideoDescription} 和 {strVideoActor}。
多域名适配:
使用指定占位符(未新增任何占位符)支持批量部署。
{strVideoClassName} 动态替换大分类(如“电影”),{strVideoCategoryName} 替换小分类(如“动作片”),{strVideoName} 替换具体视频名称。
{strVideoParentCategoryName} 动态替换大分类(如“电影”),{strVideoCategoryName} 替换小分类(如“动作片”),{strVideoName} 替换具体视频名称。
字数控制:
Title60-70 字符。
Keywords6-8 个关键词。
@@ -90,6 +90,6 @@ H450-120 字(约 100-200 字符)。
腾讯视频H1 简洁如“电影名称”Description 突出“主演”、“导演”。
优酷Keywords 覆盖广泛(如“电影名称、演员、免费在线观看”)。
占位符使用:
所有模板尽量融入 {strSiteName}、{strSiteDomain}、{strSiteKeywords}、{strYear}、{strVideoClassName}、{strVideoCategoryName}、{strAreaName}、{strLangName}、{strVideoName}、{strVideoDirector}、{strVideoActor}、{strVideoDescription}。
所有模板尽量融入 {strSiteName}、{strSiteDomain}、{strSiteKeywords}、{strYear}、{strVideoParentCategoryName}、{strVideoCategoryName}、{strAreaName}、{strLangName}、{strVideoName}、{strVideoDirector}、{strVideoActor}、{strVideoDescription}。
{strVideoDescription} 在 Description 中截取前50字如“{strVideoDescription:50}”H4 中使用完整简介或部分引导语。
重要占位符(如 {strVideoName}、{strVideoDescription}、{strVideoActor})在每套模板中高频使用

View File

@@ -9,13 +9,13 @@
'{strLangName}' => '这个是语言名字..',
'{strOrderName}' => '这个是排序名字..',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
'{intPage}' => '当前页面分页页码',
分类列表页面:
分类首页有分页 {intPage} 是这的占位符,
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoClassName} 是这些的占位符
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoParentCategoryName} 是这些的占位符
每个大分类下面有N个小分类 动作片 爱情片 .. 注意:{strVideoCategoryName} 是这些的占位符
筛选条件1 按地区筛选: 中国 美国 .. 注意:{strAreaName} 是这些的占位符
筛选条件2 按语言筛选: 汉语,英语 .. 注意:{strLangName} 是这些的占位符
@@ -30,20 +30,20 @@
返回格式例子:
title [
'{strYear}最新{strVideoClassName}推荐 - {strSiteName} - 免费高清{strVideoClassName}'
'{strYear}最新{strVideoParentCategoryName}推荐 - {strSiteName} - 免费高清{strVideoParentCategoryName}'
..
]
keywords: [
'最新{strVideoClassName},高清{strVideoClassName},免费{strVideoClassName}在线观看,{strSiteName},{strYear}{strVideoClassName}排行榜,{strVideoClassName}推荐',
'最新{strVideoParentCategoryName},高清{strVideoParentCategoryName},免费{strVideoParentCategoryName}在线观看,{strSiteName},{strYear}{strVideoParentCategoryName}排行榜,{strVideoParentCategoryName}推荐',
..
]
description: [
'{strSiteName}提供{strYear}最新{strVideoClassName},免费在线观看高清{strVideoClassName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
'{strSiteName}提供{strYear}最新{strVideoParentCategoryName},免费在线观看高清{strVideoParentCategoryName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
..
]
h1 [
'{strSiteName} - {strYear}最新{strVideoClassName}推荐'
'{strSiteName} - {strYear}最新{strVideoParentCategoryName}推荐'
..
]

View File

@@ -5,7 +5,7 @@
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
分类首页:
没有分页一共有5大分类 电影,电视剧,综艺,动漫,短剧
@@ -19,20 +19,20 @@
返回格式:
title [
'{strYear}最新{strVideoClassName}推荐 - {strSiteName} - 免费高清{strVideoClassName}'
'{strYear}最新{strVideoParentCategoryName}推荐 - {strSiteName} - 免费高清{strVideoParentCategoryName}'
..
]
keywords: [
'最新{strVideoClassName},高清{strVideoClassName},免费{strVideoClassName}在线观看,{strSiteName},{strYear}{strVideoClassName}排行榜,{strVideoClassName}推荐',
'最新{strVideoParentCategoryName},高清{strVideoParentCategoryName},免费{strVideoParentCategoryName}在线观看,{strSiteName},{strYear}{strVideoParentCategoryName}排行榜,{strVideoParentCategoryName}推荐',
..
]
description: [
'{strSiteName}提供{strYear}最新{strVideoClassName},免费在线观看高清{strVideoClassName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
'{strSiteName}提供{strYear}最新{strVideoParentCategoryName},免费在线观看高清{strVideoParentCategoryName},包括{strSiteKeywords}等,立即访问{strSiteDomain}',
..
]
h1 [
'{strSiteName} - {strYear}最新{strVideoClassName}推荐'
'{strSiteName} - {strYear}最新{strVideoParentCategoryName}推荐'
..
]

View File

@@ -5,12 +5,12 @@
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strOrderName}' => '这个是排序名字..',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
排行榜页面:
排行榜页面没有分页,
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoClassName} 是这些的占位符
一共有5大分类 电影,电视剧,综艺,动漫,短剧 注意:{strVideoParentCategoryName} 是这些的占位符
每个大分类下面有N个小分类 动作片 爱情片 .. 注意:{strVideoCategoryName} 是这些的占位符
筛选条件1 按排序筛选: 天排行榜,周排行榜,月排行榜,总排行榜,票房排行榜 .. 注意:{strOrderName} 是这些的占位符
@@ -25,20 +25,20 @@
返回格式:
title [
'{strYear}{strVideoClassName}排行榜 - {strSiteName} - 高清热门{strVideoClassName}'
'{strYear}{strVideoParentCategoryName}排行榜 - {strSiteName} - 高清热门{strVideoParentCategoryName}'
..
]
keywords: [
'{strVideoClassName}排行榜,热门{strVideoClassName},高清{strVideoClassName},免费{strVideoClassName}在线观看,{strSiteName},{strSiteKeywords}',
'{strVideoParentCategoryName}排行榜,热门{strVideoParentCategoryName},高清{strVideoParentCategoryName},免费{strVideoParentCategoryName}在线观看,{strSiteName},{strSiteKeywords}',
..
]
description: [
'{strSiteName}精选{strYear}{strVideoClassName}排行榜,免费观看高清热门{strVideoClassName},包括{sub_categories}等,{strSiteKeywords},访问{strSiteDomain}',
'{strSiteName}精选{strYear}{strVideoParentCategoryName}排行榜,免费观看高清热门{strVideoParentCategoryName},包括{sub_categories}等,{strSiteKeywords},访问{strSiteDomain}',
..
]
h1 [
'{strSiteName} - {strYear}{strVideoClassName}排行榜'
'{strSiteName} - {strYear}{strVideoParentCategoryName}排行榜'
..
]

View File

@@ -4,7 +4,7 @@
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
'{strAreaName}' => '这个是当前视地区名字..',
'{strLangName}' => '这个是当前视语言名字..',

View File

@@ -4,7 +4,7 @@
'{strSiteDomain}' => '这个是站点域名',
'{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
'{strYear}' => '这个是年份',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
'{strAreaName}' => '这个是当前视地区名字..',
'{strLangName}' => '这个是当前视语言名字..',

View File

@@ -34,7 +34,7 @@ class ConverterMovel
'{strNovelDescription}' => '',
'{strSearchKeywords}' => '',
'{strVideoClassName}' => '',
'{strVideoParentCategoryName}' => '',
'{strVideoCategoryName}' => '',
'{strAreaName}' => '',
'{strLangName}' => '',
@@ -72,7 +72,7 @@ class ConverterMovel
'{strNovelDescription}' => '小说简介',
'{strSearchKeywords}' => '搜索关键词',
'{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoParentCategoryName}' => '视频自定义分类名称:电影/电视剧..',
'{strVideoCategoryName}' => '视频分类名称:动作片..',
'{strAreaName}' => '这个是地区名字..',
'{strLangName}' => '这个是语言名字..',
@@ -85,12 +85,6 @@ class ConverterMovel
'{strVideoDescription}' => '这个是当前视频简介',
'{intPlayIndex}' => '这个是当前视频播放集数',
// '{strSiteName}' => '这个是网站名',
// '{strSiteDomain}' => '这个是站点域名',
// '{strSiteKeywords}' => '这个是网站全局通用关键字,可以替换到任何页面的 TKD模板里面',
// '{strYear}' => '这个是年份',
// '{strVideoClassName}' => '视频自定义分类名称:电影/电视剧..',
];
static private function getKey($strKey): string

View File

@@ -79,11 +79,11 @@ class VideoCategoryModel extends MongoModel
"v_category" => "动画片",
"children" => [],
],
[
"v_category_en" => "lun-li-pian",
"v_category" => "倫理片",
"children" => [],
],
// [
// "v_category_en" => "lun-li-pian",
// "v_category" => "倫理片",
// "children" => [],
// ],
],
],
[
@@ -221,6 +221,8 @@ class VideoCategoryModel extends MongoModel
'dian-shi-ju' => '电视剧',
'zong-yi' => '综艺',
'dong-man' => '动漫',
'duan-ju-da-quan' => '短剧大全',
'dong-zuo-pian' => '动作片',
'xi-ju-pian' => '喜剧片',
'ai-qing-pian' => '爱情片',
@@ -228,6 +230,8 @@ class VideoCategoryModel extends MongoModel
'kong-bu-pian' => '恐怖片',
'ju-qing-pian' => '剧情片',
'zhan-zheng-pian' => '战争片',
'lian-xu-ju' => '连续剧',
'guo-chan-ju' => '国产剧',
'ou-mei-ju' => '欧美剧',
'han-ju' => '韩剧',
@@ -236,16 +240,24 @@ class VideoCategoryModel extends MongoModel
'tai-ju' => '泰剧',
'ji-lu-pian' => '记录片',
'hai-wai-ju' => '海外剧',
'tai-wan-ju' => '台湾剧',
'han-guo-ju' => '韩国剧',
'xiang-gang-ju' => '香港剧',
'tai-guo-ju' => '泰国剧',
'ri-ben-ju' => '日本剧',
'da-lu-zong-yi' => '大陆综艺',
'ri-han-zong-yi' => '日韩综艺',
'gang-tai-zong-yi' => '港台综艺',
'ou-mei-zong-yi' => '欧美综艺',
'guo-chan-dong-man' => '国产动漫',
'ri-han-dong-man' => '日韩动漫',
'ou-mei-dong-man' => '欧美动漫',
'dong-hua-pian' => '动画片',
'gang-tai-dong-man' => '港台动漫',
'hai-wai-dong-man' => '海外动漫',
'yan-chang-hui' => '演唱会',
'lun-li' => '伦理',
'shao-shi-dian-ying' => '邵氏电影',
@@ -253,19 +265,13 @@ class VideoCategoryModel extends MongoModel
'lan-qiu' => '篮球',
'zu-qiu' => '足球',
'si-nuo-ke' => '斯诺克',
'lian-xu-ju' => '连续剧',
'tai-wan-ju' => '台湾剧',
'han-guo-ju' => '韩国剧',
'xiang-gang-ju' => '香港剧',
'tai-guo-ju' => '泰国剧',
'ri-ben-ju' => '日本剧',
'fu-li' => '福利',
'lun-li-pian' => '伦理片',
'gao-xiao' => '搞笑',
'yin-le' => '音乐',
'ying-shi' => '影视',
'qi-che' => '汽车',
'duan-ju-da-quan' => '短剧大全',
'yu-gao-pian' => '预告片',
'ti-yu' => '体育',
];

View File

@@ -5,6 +5,7 @@ namespace app\services;
use app\model\ConverterMovel;
use app\model\DomainModel;
use app\model\GanRaoMaModel;
use app\model\VideoCategoryModel;
use app\model\TemplatesModel;
use app\model\CategoryModel;
use app\model\ChapterModel;
@@ -313,6 +314,64 @@ class SiteContext
]);
}
/**
* 视图反向控制器(注释函数),在视图开头调用,用来初始化一些操作。这里尽量不要复杂逻辑。这是个样例
*
* @return void
*/
public function initVideoCategoryTypeTKD()
{
$strParentCategory = $this->Request->param('strParentCategory');
ConverterMovel::setVal([
'strVideoParentCategoryName' => empty($strParentCategory) || $strParentCategory == 'all' ? '' : StaticConfig::$arrVideoClass[$strParentCategory],
]);
}
/**
* 视图反向控制器(注释函数),在视图开头调用,用来初始化一些操作。这里尽量不要复杂逻辑。这是个样例
* '/vodtype-:strParentCategory/:strCategory-:strYear-:strArea-:strOrder/:strLang-page:intPage',
* @return void
*/
public function initVideoCategoryTKD()
{
$strParentCategory = $this->Request->param('strParentCategory');
$strCategory = $this->Request->param('strCategory');
$strYear = $this->Request->param('strYear');
$strArea = $this->Request->param('strArea');
$strOrder = $this->Request->param('strOrder');
$strLang = $this->Request->param('strLang');
$intPage = $this->Request->param('intPage');
ConverterMovel::setVal([
'strVideoParentCategoryName' => empty($strParentCategory) || $strParentCategory == 'all' ? '' : StaticConfig::$arrVideoClass[$strParentCategory],
'strVideoCategoryName' => empty($strCategory) || $strCategory == 'all' ? '' : VideoCategoryModel::$arrCategory[$strCategory],
'strAreaName' => empty($strArea) || $strArea == 'all' ? '' : StaticConfig::$arrVideoArea[$strArea],
'strLangName' => empty($strLang) || $strLang == 'all' ? '' : StaticConfig::$arrVideoLang[$strLang],
'strOrderName' => empty($strOrder) || $strOrder == 'all' ? '' : StaticConfig::$arrVideoSortType[$strOrder],
'strYear' => empty($strYear) || $strYear == 'all' ? '' : StaticConfig::$arrVideoYear[$strYear],
'intPage' => $intPage ?? 1,
]);
}
/**
* 视图反向控制器(注释函数),在视图开头调用,用来初始化一些操作。这里尽量不要复杂逻辑。这是个样例
* '/vodtype-:strParentCategory/:strCategory-:strYear-:strArea-:strOrder/:strLang-page:intPage',
* @return void
*/
public function initVideoRankListTKD()
{
$strParentCategory = $this->Request->param('strParentCategory');
$strCategory = $this->Request->param('strCategory');
$strSortType = $this->Request->param('strSortType');
$intPage = $this->Request->param('intPage');
ConverterMovel::setVal([
'strVideoParentCategoryName' => empty($strParentCategory) || $strParentCategory == 'all' ? '' : StaticConfig::$arrVideoClass[$strParentCategory],
'strVideoCategoryName' => empty($strCategory) || $strCategory == 'all' ? '' : VideoCategoryModel::$arrCategory[$strCategory],
'strOrderName' => empty($strSortType) || $strSortType == 'all' ? '' : StaticConfig::$arrVideoRankSortType[$strSortType],
'intPage' => $intPage ?? 1,
]);
}
/**
* 视图反向控制器(注释函数),在视图开头调用,用来初始化一些操作。这里尽量不要复杂逻辑。这是个样例
*

View File

@@ -62,10 +62,14 @@ class StaticConfig
static $arrVideoLang = [
'all' => '所有',
'guo-yu' => '国语',
'yue-yu' => '粤语',
'ying-yu' => '英语',
'han-yu' => '韩语',
'tai-yu' => '泰语',
'ri-yu' => '日语',
'yue-nan-yu' => '越南语',
'ying-yu-shou-yu' => '英语手语',
'ying-yu' => '英语',
'yin-niu-te-yu' => '因纽特语',
'yin-ni-yu' => '印尼语',
'yin-du-yu' => '印度语Hindi',
@@ -84,14 +88,12 @@ class StaticConfig
'tu-ku-man-yu' => '土库曼语',
'tu-er-qi-yu' => '土耳其语',
'tu-er' => '土耳',
'tai-yu' => '泰语',
'tai-mi-er-yu' => '泰米尔语Tamil',
'tai-mi-er' => '泰米尔',
'tai-lu-gu-yu' => '泰卢固语',
'ta-jia' => '他加',
'shang-hai' => '上海',
'rui-dian-yu' => '瑞典语',
'ri-yu' => '日语',
'qi-ta' => '其它',
'pu-tong-hua' => '普通话',
'pu-tao-ya-yu' => '葡萄牙语',
@@ -111,8 +113,6 @@ class StaticConfig
'he-lan-yu' => '荷兰语',
'han-yu-pu-tong-hua' => '汉语普通话Manda',
'han-yu-pu-tong' => '汉语普通',
'han-yu' => '韩语',
'guo-yu' => '国语',
'fei-lv-bin-yu' => '菲律宾语',
'fa-yu' => '法语',
'e-yu' => '俄语',
@@ -134,25 +134,28 @@ class StaticConfig
'zhong-guo-tai-wan' => '中国台湾',
'zhong-guo-da-lu' => '中国大陆',
'zhong-guo' => '中国',
'mei-guo' => '美国',
'da-lu' => '大陆',
'xiang-gang' => '香港',
'tai-wan' => '台湾',
'ri-ben' => '日本',
'han-guo' => '韩国',
'tai-guo' => '泰国',
'xin-jia-po' => '新加坡',
'yin-du' => '印度',
'ying-guo' => '英国',
'zhi-li' => '智利',
'yue-nan' => '越南',
'ying-guo' => '英国',
'yin-ni' => '印尼',
'yin-du' => '印度',
'yi-da-li' => '意大利',
'xiong-ya-li' => '匈牙利',
'xin-xi-lan' => '新西兰',
'xin-jia-po' => '新加坡',
'xiang-gang' => '香港',
'xi-de' => '西德',
'xi-ban-ya' => '西班牙',
'tu-er-qi' => '土耳其',
'tai-wan' => '台湾',
'tai-guo' => '泰国',
'si-luo-wen-ni-ya' => '斯洛文尼亚',
'rui-shi' => '瑞士',
'rui-dian' => '瑞典',
'ri-ben' => '日本',
'qi-ta' => '其它',
'pu-tao-ya' => '葡萄牙',
'nuo-wei' => '挪威',
@@ -161,7 +164,6 @@ class StaticConfig
'nan-fei' => '南非',
'mo-xi-ge' => '墨西哥',
'mo-luo-ge' => '摩洛哥',
'mei-guo' => '美国',
'ma-lai-xi-ya' => '马来西亚',
'ma-er-ta' => '马耳他',
'lu-sen-bao' => '卢森堡',
@@ -170,14 +172,12 @@ class StaticConfig
'jian-pu-zhai' => '柬埔寨',
'jia-na-da' => '加拿大',
'he-lan' => '荷兰',
'han-guo' => '韩国',
'ha-sa-ke-si-tan' => '哈萨克斯坦',
'fei-lv-bin' => '菲律宾',
'fa-guo' => '法国',
'e-luo-si' => '俄罗斯',
'de-guo' => '德国',
'dan-mai' => '丹麦',
'da-lu' => '大陆',
'bo-lan' => '波兰',
'bi-li-shi' => '比利时',
'bao-jia-li-ya' => '保加利亚',
@@ -192,90 +192,89 @@ class StaticConfig
static $arrVideoYear = [
'all' => '所有',
'1924' => '1924',
'1935' => '1935',
'1938' => '1938',
'1940' => '1940',
'1941' => '1941',
'1942' => '1942',
'1945' => '1945',
'1948' => '1948',
'1949' => '1949',
'1950' => '1950',
'1952' => '1952',
'1953' => '1953',
'1954' => '1954',
'1955' => '1955',
'1956' => '1956',
'1957' => '1957',
'1958' => '1958',
'1959' => '1959',
'1960' => '1960',
'1962' => '1962',
'1963' => '1963',
'1964' => '1964',
'1965' => '1965',
'1966' => '1966',
'1967' => '1967',
'1968' => '1968',
'1969' => '1969',
'1970' => '1970',
'1971' => '1971',
'1972' => '1972',
'1973' => '1973',
'1974' => '1974',
'1975' => '1975',
'1976' => '1976',
'1977' => '1977',
'1978' => '1978',
'1979' => '1979',
'1980' => '1980',
'1981' => '1981',
'1982' => '1982',
'1983' => '1983',
'1984' => '1984',
'1985' => '1985',
'1986' => '1986',
'1987' => '1987',
'1988' => '1988',
'1989' => '1989',
'1990' => '1990',
'1991' => '1991',
'1992' => '1992',
'1993' => '1993',
'1994' => '1994',
'1995' => '1995',
'1996' => '1996',
'1997' => '1997',
'1998' => '1998',
'1999' => '1999',
'2000' => '2000',
'2001' => '2001',
'2002' => '2002',
'2003' => '2003',
'2004' => '2004',
'2005' => '2005',
'2006' => '2006',
'2007' => '2007',
'2008' => '2008',
'2009' => '2009',
'2010' => '2010',
'2011' => '2011',
'2012' => '2012',
'2013' => '2013',
'2014' => '2014',
'2015' => '2015',
'2016' => '2016',
'2017' => '2017',
'2018' => '2018',
'2019' => '2019',
'2020' => '2020',
'2021' => '2021',
'2022' => '2022',
'2023' => '2023',
'2024' => '2024',
'2025' => '2025',
'2024' => '2024',
'2023' => '2023',
'2022' => '2022',
'2021' => '2021',
'2020' => '2020',
'2019' => '2019',
'2018' => '2018',
'2017' => '2017',
'2016' => '2016',
'2015' => '2015',
'2014' => '2014',
'2013' => '2013',
'2012' => '2012',
'2011' => '2011',
'2010' => '2010',
'2009' => '2009',
'2008' => '2008',
'2007' => '2007',
'2006' => '2006',
'2005' => '2005',
'2004' => '2004',
'2003' => '2003',
'2002' => '2002',
'2001' => '2001',
'2000' => '2000',
'1999' => '1999',
'1998' => '1998',
'1997' => '1997',
'1996' => '1996',
'1995' => '1995',
'1994' => '1994',
'1993' => '1993',
'1992' => '1992',
'1991' => '1991',
'1990' => '1990',
'1989' => '1989',
'1988' => '1988',
'1987' => '1987',
'1986' => '1986',
'1985' => '1985',
'1984' => '1984',
'1983' => '1983',
'1982' => '1982',
'1981' => '1981',
'1980' => '1980',
'1979' => '1979',
'1978' => '1978',
'1977' => '1977',
'1976' => '1976',
'1975' => '1975',
'1974' => '1974',
'1973' => '1973',
'1972' => '1972',
'1971' => '1971',
'1970' => '1970',
'1969' => '1969',
'1968' => '1968',
'1967' => '1967',
'1966' => '1966',
'1965' => '1965',
'1964' => '1964',
'1963' => '1963',
'1962' => '1962',
'1960' => '1960',
'1959' => '1959',
'1958' => '1958',
'1957' => '1957',
'1956' => '1956',
'1955' => '1955',
'1954' => '1954',
'1953' => '1953',
'1952' => '1952',
'1950' => '1950',
'1949' => '1949',
'1948' => '1948',
'1945' => '1945',
'1942' => '1942',
'1941' => '1941',
'1940' => '1940',
'1938' => '1938',
'1935' => '1935',
'1924' => '1924',
];
static $arrVideoClass = [

View File

@@ -301,6 +301,7 @@ class VideoService
*/
public function getVideoList(array $arrParams): array
{
$intCount = (int)$arrParams['count'] ?? 10;
// $strVCategory = $arrParams['v_category'] ?? '';
$strSortType = (string)$arrParams['sort_type'] ?? '';
@@ -311,6 +312,7 @@ class VideoService
$strVCategoryEn = (string) $arrParams['v_category_en'] ?? '';
$strVParentCategoryEn = (string) $arrParams['v_parent_category_en'] ?? '';
$strVLangEn = (string)$arrParams['v_lang_en'] ?? 'all';
$strVAreaEn = (string)$arrParams['v_area_en'] ?? 'all';
@@ -582,12 +584,12 @@ class VideoService
$intLifeTime = $intLifeTime;
}
// 更新值
ConverterMovel::setVal([
'intPage' => $intPage,
'strVideoClassName' => empty($strVClass) || $strVClass == 'all' ? '' : StaticConfig::$arrVideoClass[$strVClass],
'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],
@@ -680,6 +682,12 @@ class VideoService
// 视频详情
$arrVideo = $this->VideoModel->getVideoByVId($intVId);
// 取前5个元素
$strTopActor = array_slice($arrVideo['v_actor'], 0, 5);
// 取前5个元素
$strTopDirectors = array_slice($arrVideo['v_director'], 0, 5);
// 点击数
$arrVideoClicks = $this->VideoClicksModel->getStats($intVId);
@@ -687,9 +695,13 @@ class VideoService
ConverterMovel::setVal([
'intPage' => 1,
'strVideoName' => $arrVideo['v_name'],
'strVideoParentCategoryName' => $arrVideo['v_parent_category'],
'strVideoCategoryName' => $arrVideo['v_category'],
'strVideoStatus' => $arrVideo['v_isend'],
'strVideoDescription' => $arrVideo['v_description'],
'intPlayIndex' => 1,
'strVideoDirector' => implode(',', $strTopDirectors),
'strVideoActor' => implode(',', $strTopActor),
]);
$arrVideo['arrVideoClicks'] = $arrVideoClicks;