video-template-3
This commit is contained in:
247
code/app/home/view/videoBoKu/base.html
Normal file
247
code/app/home/view/videoBoKu/base.html
Normal file
@@ -0,0 +1,247 @@
|
||||
<html lang="zh-CN">
|
||||
|
||||
<head>
|
||||
{block name="get-data"}{/block}
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
|
||||
<title>{block name="title"}{/block}</title>
|
||||
<meta name="keywords" content='{block name="keywords"}{/block}'>
|
||||
<meta name="description" content='{block name="description"}{/block}'>
|
||||
|
||||
<link rel="shortcut icon" href="/template/videoboku//images/favicon.png" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-font.css" type="text/css">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-ui.css" type="text/css">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-site.css" type="text/css">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-share.css" type="text/css">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-color.css" type="text/css" name="default">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-color.css" type="text/css" name="skin" disabled="">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-color1.css" type="text/css" name="skin" disabled="">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-color2.css" type="text/css" name="skin" disabled="">
|
||||
<link rel="stylesheet" href="/template/videoboku/css/mytheme-color3.css" type="text/css" name="skin" disabled="">
|
||||
|
||||
{block name="head"}{/block}
|
||||
{block name="head-css"}{/block}
|
||||
{block name="head-js"}{/block}
|
||||
<script>
|
||||
const strPcPath = `{$strPcPath}`;
|
||||
</script>
|
||||
|
||||
|
||||
<style type="text/css">
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
||||
|
||||
<body class="active {block name='body-class'}{/block}" id="{block name='body-id'}{/block}">
|
||||
<header class="myui-header__top clearfix top-fixed headroom--top headroom--not-bottom" id="header-top">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="myui-header_bd clearfix">
|
||||
<div class="myui-header__logo" >
|
||||
<a class="logo" href="/">
|
||||
{$DomainModel->d_name}
|
||||
</a>
|
||||
</div>
|
||||
<ul class="myui-header__menu nav-menu">
|
||||
<li class="{if $Request.route.strParentCategory == ''}active{/if} visible-inline-lg"><a class="logo" href="/">首页</a></li>
|
||||
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
<li class=" visible-inline-lg {if $val.v_category_en == $Request.route.strParentCategory}active{/if}">
|
||||
<a href='{site:vciurl parent_category="$val.v_category_en" /}'>
|
||||
{$val.v_category}
|
||||
</a>
|
||||
</li>
|
||||
{/video:categorytype}
|
||||
<li class=" visible-inline-lg">
|
||||
<a href='{$strRankUrlTemp}'>
|
||||
榜单
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li class="dropdown-hover dropdown-toggle"><a href="javascript:;">频道<i class="fa fa-angle-down"></i></a>
|
||||
<div class="dropdown-box bottom fadeInDown clearfix">
|
||||
<ul class="item nav-list clearfix">
|
||||
<li class="col-lg-5 col-md-5 col-sm-5 col-xs-3 ">
|
||||
<a class="btn btn-sm btn-block {if $Request.route.strParentCategory == ''}btn-warm{else}btn-default{/if}" href="/">首页</a>
|
||||
</li>
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
<li class="col-lg-5 col-md-5 col-sm-5 col-xs-3 ">
|
||||
<a class="btn btn-sm btn-block {if $val.v_category_en == $Request.route.strParentCategory}btn-warm{else}btn-default{/if}"
|
||||
href='{site:vciurl parent_category="$val.v_category_en" /}'>
|
||||
{$val.v_category}
|
||||
</a>
|
||||
</li>
|
||||
{/video:categorytype}
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
{foreach $val.children as $intChildrenKey=>$arrChildrenCategory }
|
||||
<li class="col-lg-5 col-md-5 col-sm-5 col-xs-3 ">
|
||||
<a class="btn btn-sm btn-block {if $arrChildrenCategory.v_category_en == $Request.route.strCategory}btn-warm{else}btn-default{/if}"
|
||||
href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all" page="1"/}'>
|
||||
{$arrChildrenCategory.v_category}
|
||||
</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
{/video:categorytype}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="myui-header__search search-box">
|
||||
<a class="search-select dropdown-hover"
|
||||
href="javascript:;">
|
||||
<span class="text">视频</span>
|
||||
<i class="fa fa-caret-down"></i>
|
||||
<div class="dropdown-box bottom fadeInDown">
|
||||
<ul class="item">
|
||||
<li class="vod" data-action="{$strSearchListUrlTemp}">视频</li>
|
||||
</ul>
|
||||
</div>
|
||||
</a>
|
||||
<form id="search" name="search" method="get" action="{$strSearchListUrlTemp}">
|
||||
<input type="text" id="wd" name="keyword"
|
||||
class="search_wd form-control ac_input" value="" placeholder="请输入关键字" autocomplete="off"
|
||||
style=" padding-left: 65px; ">
|
||||
<button class="submit search_submit" id="searchbutton" type="submit" name="submit">
|
||||
<i class="fa fa-search"></i>
|
||||
</button>
|
||||
</form>
|
||||
<a class="search-close visible-xs" href="javascript:;">
|
||||
<i class="fa fa-close"></i>
|
||||
</a>
|
||||
<div class="search-dropdown-hot dropdown-box bottom fadeInDown">
|
||||
<div class="item">
|
||||
<p class="text-muted">热门搜索</p>
|
||||
{video:list count="6"
|
||||
sort_type="news"
|
||||
d_key="key" d_val="Video"
|
||||
cache_life="86400"}
|
||||
<p>
|
||||
<a class="text-333"
|
||||
href='{site:vsurl key="$Video.v_name" p="1"/}'
|
||||
title="{$Video.v_name}">
|
||||
<span class="badge badge-first">{$key++}</span>
|
||||
{$Video.v_name}
|
||||
</a>
|
||||
</p>
|
||||
{/video:list}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="myui-header__user">
|
||||
<li class="visible-xs">
|
||||
<form id="search" name="search" method="get" action="{$strSearchListUrlTemp}">
|
||||
<input type="text" id="wd" name="keyword"
|
||||
class="search_wd form-control ac_input" value="" placeholder="请输入关键字" autocomplete="off"
|
||||
style=" padding-left:2px; ">
|
||||
<button class="submit search_submit h5-searchbutton" id="h5-searchbutton" type="submit" name="submit">
|
||||
<i class="fa fa-search"></i>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
</li>
|
||||
<li class="dropdown-hover">
|
||||
<a href="{$strHistoryUrlTemp}" title="播放记录">
|
||||
<i class="fa fa-clock-o"></i>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{block name="main"}
|
||||
{/block}
|
||||
|
||||
|
||||
{include file="public/footer" /}
|
||||
|
||||
{block name="customize"}{/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}
|
||||
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
var bp = document.createElement('script');
|
||||
var curProtocol = window.location.protocol.split(':')[0];
|
||||
if (curProtocol === 'https') {
|
||||
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
|
||||
}
|
||||
else {
|
||||
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
|
||||
}
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(bp, s);
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
// 移动端点击切换
|
||||
$('.dropdown-toggle').on('click', function(e) {
|
||||
//e.preventDefault(); // 阻止默认行为(避免跳转)
|
||||
var $parent = $(this).closest('.dropdown-hover');
|
||||
var $dropdownBox = $parent.find('.dropdown-box');
|
||||
|
||||
// 切换 active 类
|
||||
$parent.toggleClass('active');
|
||||
|
||||
// 显示或隐藏下拉菜单
|
||||
if ($parent.hasClass('active')) {
|
||||
$dropdownBox.slideDown(300); // 动画显示
|
||||
} else {
|
||||
$dropdownBox.slideUp(300); // 动画隐藏
|
||||
}
|
||||
|
||||
// 关闭其他下拉菜单
|
||||
$('.dropdown-hover').not($parent).removeClass('active').find('.dropdown-box').slideUp(300);
|
||||
});
|
||||
|
||||
// 点击下拉菜单中的链接,允许跳转
|
||||
$('.dropdown-box a').on('click', function(e) {
|
||||
// 确保不阻止默认行为,允许 <a> 标签跳转
|
||||
// 如果需要,可以在这里添加其他逻辑(如记录点击)
|
||||
});
|
||||
|
||||
// 点击页面其他地方关闭下拉菜单
|
||||
$(document).on('click', function(e) {
|
||||
// 仅当点击不在 .dropdown-hover 或其子元素时关闭
|
||||
if (!$(e.target).closest('.dropdown-hover').length) {
|
||||
$('.dropdown-hover').removeClass('active').find('.dropdown-box').slideUp(300);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
58
code/app/home/view/videoBoKu/index.md
Normal file
58
code/app/home/view/videoBoKu/index.md
Normal file
@@ -0,0 +1,58 @@
|
||||
独播库频模板-
|
||||
http://test.yagebm.com/
|
||||
|
||||
1.视频分类 分页标签查询, 增加 4个查询字段
|
||||
|
||||
$v_class = $tag['v_class'] ?? '10'; // 自定义分类 电影 电视剧 ..
|
||||
$v_lang = $tag['v_lang'] ?? "all"; // 语言
|
||||
$v_area = $tag['v_area'] ?? "all"; // 地区
|
||||
$v_year = $tag['v_year'] ?? "all"; // 年份
|
||||
|
||||
2. 排行榜标签 增加 分类查询
|
||||
{video:ranklist v_class="dianying" v_category="$val.v_category_en"
|
||||
|
||||
|
||||
|
||||
需要 配置tkd 模板的页面
|
||||
|
||||
首页:
|
||||
h1: 站点名字 - 站点text logo
|
||||
丰富内容-》站点描述:
|
||||
T
|
||||
K
|
||||
D
|
||||
|
||||
|
||||
分类首页
|
||||
h1: 站点名字 - 站点text logo
|
||||
丰富内容-》站点描述:
|
||||
tkd
|
||||
分类分页
|
||||
|
||||
视频详情页面
|
||||
视频播放页面
|
||||
|
||||
视频搜索页面
|
||||
视频排行榜首页
|
||||
视频排行榜分页
|
||||
|
||||
|
||||
目前在搭建一个视频站点:
|
||||
页面 有
|
||||
首页
|
||||
分类首页:分类首页没有分页,一共有 电影,电视剧,综艺,动漫,短剧 。5大分类。
|
||||
分类首页 展示内容:每一大分类下面的所有小分类 展示10个视频;
|
||||
这个就是上面发你的代码;
|
||||
需要你帮忙设计 TKD 模板
|
||||
和 h1标签内容 模板
|
||||
因为我后面需要部署大量域名站点 都使用同一个模板
|
||||
|
||||
分类列表分页:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
267
code/app/home/view/videoBoKu/index/index.html
Normal file
267
code/app/home/view/videoBoKu/index/index.html
Normal file
@@ -0,0 +1,267 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{video:listexp count="9" sort_type="tuijian" d_key="key" d_val="Video" cache_life="86400" export_name="arrVideoTuijian"
|
||||
/}
|
||||
{video:listexp count="9" 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}
|
||||
{block name="keywords"}{site:replace code="VIDEO@INDEX@INDEX@KEYWORDS"}{/block}
|
||||
{block name="description"}{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"}{/block}
|
||||
|
||||
{block name="head"}
|
||||
<!-- 社交媒体标签 -->
|
||||
<meta property="og:title" content='{site:replace code="VIDEO@INDEX@INDEX@TITLE"}' />
|
||||
<meta property="og:description" content='{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"}' />
|
||||
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
|
||||
<meta property="og:type" content="website" />
|
||||
|
||||
<!-- 结构化数据 -->
|
||||
<script type="application/ld+json">
|
||||
[
|
||||
{
|
||||
"@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"
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "VideoObject",
|
||||
"name": "{$DomainModel->d_name}热门推荐预告片",
|
||||
"description": "观看{$DomainModel->d_name}最新电影和电视剧的精彩预告片!",
|
||||
{volist name="arrVideoTuijian" id="Video" key="key"}
|
||||
{if $key == 1 }
|
||||
"thumbnailUrl": 'https://{$DomainModel->d_domain}{$Video.v_pic}',
|
||||
{/if}
|
||||
{/volist}
|
||||
"uploadDate": "{:date('Y-m-d')}",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "CollectionPage",
|
||||
"name": "{$DomainModel->d_name} - {$DomainModel->d_logo_text}",
|
||||
"url": "https://{$DomainModel->d_domain}",
|
||||
"alternateName": "{$DomainModel->d_domain}",
|
||||
"description": "{$DomainModel->d_name}首页提供好莱坞最新电影、电视剧、综艺、动漫和短剧的免费高清在线观看,热门推荐每日更新!",
|
||||
"mainEntity": {
|
||||
"@type": "ItemList",
|
||||
"itemListElement": [
|
||||
|
||||
{volist name="arrVideoTuijian" id="Video" key="key"}
|
||||
{if $key < 5 }
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": {$key},
|
||||
"item": {
|
||||
"@type": "TVSeries",
|
||||
"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}
|
||||
|
||||
{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}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
</script>
|
||||
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="head-js"}{/block}
|
||||
|
||||
|
||||
{block name="main"}
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<h1 class="view-title">
|
||||
<a href="/">{$DomainModel->d_name}</a>-{$DomainModel->d_text_logo}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETCATEGORYINDEX@TEXT"}</h4>
|
||||
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix"><span
|
||||
class="text-muted more pull-right"></span>
|
||||
<h2 class="title">全球票房榜</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd clearfix">
|
||||
<ul class="myui-vodlist clearfix">
|
||||
{foreach $arrVideoPiaofang as $key=>$Video }
|
||||
{include file="public/video-list-shu-pf" start="0" col-lg="9"/}
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix"><span
|
||||
class="text-muted more pull-right"></span>
|
||||
<h2 class="title">影片推荐</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd clearfix">
|
||||
<ul class="myui-vodlist clearfix">
|
||||
{foreach $arrVideoTuijian as $key=>$Video }
|
||||
{include file="public/video-list-shu" start="10" col-lg="9"/}
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
{include file="public/video-panel" /}
|
||||
{/video:categorytype}
|
||||
|
||||
|
||||
|
||||
<div class="myui-panel myui-panel-bg hidden-xs clearfix visible-inline-lg">
|
||||
<div class="myui-panel-box clearfix">
|
||||
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
{if $val.v_category_en != 'zong-yi'}
|
||||
|
||||
<div class="col-lg-4 col-md-3 col-sm-2 col-xs-1 padding-0">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h2 class="title">{$val.v_category}总榜单</h2>
|
||||
<a class="more text-muted"
|
||||
href="{$strRankUrlTemp}">更多<i class="fa fa-angle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd clearfix">
|
||||
<ul class="myui-vodlist__media active col-pd clearfix">
|
||||
{video:ranklist count="1"
|
||||
v_parent_category_en="$val.v_category_en"
|
||||
sort_type="total"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
<li>
|
||||
<div class="thumb">
|
||||
<a class="myui-vodlist__thumb img-xs-70"
|
||||
style="background: url({$Video.v_pic});"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
|
||||
title="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
data-original="{$Video.v_pic}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="detail detail-side">
|
||||
<h6 class="title">
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}' >
|
||||
<i class="fa fa-angle-right text-muted pull-right"></i>
|
||||
{$Video.v_name}
|
||||
</a>
|
||||
</h6>
|
||||
<p class="font-12"><span class="text-muted">类型:</span>{$Video.v_parent_category}</p>
|
||||
<p class="font-12"><span class="text-muted">地区:</span>
|
||||
{volist name='$Video.v_area' id='vo' key='index'}
|
||||
{$vo}
|
||||
{/volist}
|
||||
</p>
|
||||
<p class="font-12 margin-0"><span class="text-muted">主演:</span>
|
||||
{volist name='$Video.v_actor' id='vo' key='index'}
|
||||
{$vo}
|
||||
|
||||
{/volist}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
<ul class="myui-vodlist__text col-pd clearfix">
|
||||
{video:ranklist count="10"
|
||||
v_parent_category_en="$val.v_category_en"
|
||||
sort_type="total"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
{if $key >0}
|
||||
{include file="public/video-list-phb" start="80"/}
|
||||
{/if}
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{/video:categorytype}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="customize"}
|
||||
|
||||
|
||||
{/block}
|
||||
75
code/app/home/view/videoBoKu/public/footer.html
Normal file
75
code/app/home/view/videoBoKu/public/footer.html
Normal file
@@ -0,0 +1,75 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title">友情链接</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd clearfix">
|
||||
<div class="col-xs-1">
|
||||
<ul class="myui-link__text clearfix">
|
||||
{ad:list code="YOUQING_LIANJIE_GUANG_GAO" order="desc" limit="2" id="ad"}
|
||||
<li>
|
||||
<a href="{$ad.gg_tiao_zhuan_di_zhi}" target="_blank">{$ad.gg_wen_zi}
|
||||
</a>
|
||||
</li>
|
||||
{/ad:list}
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="myui-foot clearfix">
|
||||
<div class="container min">
|
||||
<div class="row">
|
||||
<div class="col-pd text-center masked">
|
||||
<p>本站所有视频和图片均来自互联网收集而来,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传<br>若本站收录的节目无意侵犯了贵司权益,请发邮件至{site:cfg code="YOU_XIANG" encode="false"/}
|
||||
(我们会在3个工作日内删除侵权内容,谢谢。)</p>
|
||||
<p>{$DomainModel->d_name}是一个优质影视资源网站,免费提供最新电影、热播电视剧、综艺节目、动漫、短剧等影视作品在线观看,看电影追剧首选{$DomainModel->d_name}。</p>
|
||||
<p>反馈邮箱:{site:cfg code="YOU_XIANG" encode="false"/}</p>
|
||||
<p class="hidden-xs">
|
||||
<a href="/sitemap_index.xml" target="_blank">XML地图</a>
|
||||
<a href="/robots.txt" target="_blank">网站地图</a>
|
||||
{ad:list code="YOUQING_LIANJIE_GUANG_GAO" order="desc" limit="2" id="ad"}
|
||||
<a href="{$ad.gg_tiao_zhuan_di_zhi}" target="_blank">{$ad.gg_wen_zi}
|
||||
</a>
|
||||
{/ad:list}
|
||||
<!-- <a target="_blank" href="/rss.xml">RSS订阅</a><span class="split-line"></span><a
|
||||
target="_blank" href="/rss/baidu.xml">百度蜘蛛</a><span class="split-line"></span><a
|
||||
target="_blank" href="/rss/google.xml">谷歌地图</a><span class="split-line"></span><a
|
||||
target="_blank" href="/rss/bing.xml">必应地图</a><span class="split-line"></span><a
|
||||
target="_blank" href="/rss/so.xml">360地图</a><span class="split-line"></span><a
|
||||
target="_blank" href="/rss/sogou.xml">搜狗地图</a> -->
|
||||
</p>
|
||||
<p class="margin-0">Copyright © 2008-2023 by {$DomainModel->d_name} 统计代码</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="myui-panel-bg myui-nav__tabbar">
|
||||
<a class="item" href="/">
|
||||
<p style="padding: 5px 5px;" class="btn {if $arrChildrenCategory.v_category_en == $Request.route.strCategory}btn-warm{/if}">首页</p>
|
||||
</a>
|
||||
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
<a class="item" href='{site:vciurl parent_category="$val.v_category_en" /}'>
|
||||
<p style="padding: 5px 5px;" class="btn {if $val.v_category_en == $Request.route.strParentCategory}btn-warm{/if}">{$val.v_category}</p>
|
||||
</a>
|
||||
|
||||
{/video:categorytype}
|
||||
|
||||
<a class="item" href="{$strRankUrlTemp}">
|
||||
<p style="padding: 5px 5px;" class="btn ">榜单</p>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
16
code/app/home/view/videoBoKu/public/video-list-phb.html
Normal file
16
code/app/home/view/videoBoKu/public/video-list-phb.html
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
<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"/}' title="{$Video.v_name}">
|
||||
<span class="pull-right text-muted hidden-md">{$Video.v_remarks} </span>
|
||||
<span class='badge badge-radius
|
||||
{eq name="$key" value="1"}badge-first {/eq}
|
||||
{eq name="$key" value="2"}badge-second {/eq}
|
||||
{eq name="$key" value="3"}badge-third {/eq}'
|
||||
'>{$key}</span>
|
||||
{$Video.v_name}
|
||||
</a>
|
||||
</li>
|
||||
34
code/app/home/view/videoBoKu/public/video-list-shu-pf.html
Normal file
34
code/app/home/view/videoBoKu/public/video-list-shu-pf.html
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
|
||||
<li class="col-lg-[col-lg] col-md-8 col-sm-4 col-xs-3">
|
||||
<div class="myui-vodlist__box">
|
||||
{if !empty($arrGrm[$key + [start]])}
|
||||
{$arrGrm[$key+[start]]|raw}
|
||||
{/if}
|
||||
<a class="myui-vodlist__thumb lazyload-bg"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
|
||||
title="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
data-src="{$Video.v_pic ?? ''}"
|
||||
style="background-image: url("/static/img/loading.gif");">
|
||||
<span class="play hidden-xs"></span>
|
||||
<span class="pic-tag pic-tag-top" style="background-color: #5bb7fe;">{$Video.v_box_office ?? 0}亿</span>
|
||||
<span class="pic-text text-right">{$Video.v_remarks}</span>
|
||||
<img src="{$Video.v_pic ?? ''}"
|
||||
alt="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
style="display: none;">
|
||||
</a>
|
||||
<div class="myui-vodlist__detail">
|
||||
<h3 class="title text-overflow">
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}' title="{$Video.v_name}">{$Video.v_name}</a>
|
||||
</h3>
|
||||
<p class="text text-overflow text-muted hidden-xs">
|
||||
{$Video.v_year}
|
||||
/
|
||||
{volist name='$Video.v_area' id='vo' key='index'}
|
||||
{$vo}
|
||||
{/volist}
|
||||
/ {$Video.v_parent_category}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
34
code/app/home/view/videoBoKu/public/video-list-shu.html
Normal file
34
code/app/home/view/videoBoKu/public/video-list-shu.html
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
|
||||
<li class="col-lg-[col-lg] col-md-8 col-sm-4 col-xs-3">
|
||||
<div class="myui-vodlist__box">
|
||||
{if !empty($arrGrm[$key + [start]])}
|
||||
{$arrGrm[$key+[start]]|raw}
|
||||
{/if}
|
||||
<a class="myui-vodlist__thumb lazyload-bg"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
|
||||
title="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
data-src="{$Video.v_pic ?? ''}"
|
||||
style="background-image: url("/static/img/loading.gif");">
|
||||
<span class="play hidden-xs"></span>
|
||||
<span class="pic-tag pic-tag-top" style="background-color: #5bb7fe;">{$Video.v_score}分</span>
|
||||
<span class="pic-text text-right">{$Video.v_remarks}</span>
|
||||
<img src="{$Video.v_pic ?? ''}"
|
||||
alt="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
style="display: none;">
|
||||
</a>
|
||||
<div class="myui-vodlist__detail">
|
||||
<h3 class="title text-overflow">
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}' title="{$Video.v_name}">{$Video.v_name}</a>
|
||||
</h3>
|
||||
<p class="text text-overflow text-muted hidden-xs">
|
||||
{$Video.v_year}
|
||||
/
|
||||
{volist name='$Video.v_area' id='vo' key='index'}
|
||||
{$vo}
|
||||
{/volist}
|
||||
/ {$Video.v_parent_category}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
9
code/app/home/view/videoBoKu/public/video-list-text.html
Normal file
9
code/app/home/view/videoBoKu/public/video-list-text.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<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>
|
||||
</li>
|
||||
51
code/app/home/view/videoBoKu/public/video-panel.html
Normal file
51
code/app/home/view/videoBoKu/public/video-panel.html
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_bd clearfix">
|
||||
<div class="col-lg-wide-75 col-xs-1 padding-0">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h2 class="title">最新{$val.v_category}</h2>
|
||||
<a class="more text-muted"
|
||||
href='{site:vclurl parent_category="$val.v_category_en" category="all" area="all" lang="all" year="all" order="all" page="1"/}'>
|
||||
更多<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
<ul class="nav nav-text pull-right hidden-sm hidden-xs">
|
||||
{foreach $val.children as $intChildrenKey=>$arrChildrenCategory }
|
||||
<li>
|
||||
<a href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all" page="1"/}'
|
||||
class="text-muted">
|
||||
{$arrChildrenCategory.v_category}
|
||||
</a>
|
||||
<span class="split-line"></span>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="myui-vodlist clearfix">
|
||||
{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+($key*12)" col-lg="6"/}
|
||||
{/video:list}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-lg-wide-25 hidden-sm hidden-xs visible-inline-lg">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h2 class="title">最热{$val.v_category}周排行榜</h2><a class="more text-muted"
|
||||
href="{$strRankUrlTemp}">更多<i class="fa fa-angle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="myui-vodlist__text active clearfix" style="padding: 0 10px;">
|
||||
{video:ranklist count="16"
|
||||
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" start="27+($key*17)"/}
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
294
code/app/home/view/videoBoKu/sitemap/index.md
Normal file
294
code/app/home/view/videoBoKu/sitemap/index.md
Normal file
@@ -0,0 +1,294 @@
|
||||
对于一个小说站点(如你提到的包含首页、分类列表、排行榜、男生/女生频道、详情页面、章节页面、目录页面等),配置 Sitemap 时需要根据页面类型的重要性和 SEO 目标选择性地包含 URL,并合理组织以优化搜索引擎抓取和索引。以下是针对小说站点特点的 Sitemap 配置建议,包括哪些页面应该包含、如何处理大量 URL,以及相关的最佳实践。
|
||||
|
||||
---
|
||||
|
||||
### 一、小说站点页面类型分析
|
||||
根据你提供的信息,小说站点的页面类型可以分为以下几类,每类页面的 SEO 价值和是否需要包含在 Sitemap 中有所不同:
|
||||
|
||||
| 页面类型 | 描述 | SEO 价值 | 是否包含在 Sitemap |
|
||||
|------------------|----------------------------------------------------------------------|---------------------------------------|--------------------|
|
||||
| **首页** | 网站主入口,通常包含推荐小说、导航等。 | 高(核心流量入口) | 是 |
|
||||
| **分类列表** | 按题材、类型(如玄幻、言情)展示小说列表,可能有多页(如 `page=2`)。| 高(引导用户到具体小说) | 是(仅包含主页面) |
|
||||
| **排行榜** | 热门小说排行,可能按日、周、月或类型(如男生/女生)排序。 | 中到高(吸引点击,动态更新) | 是(视情况精选) |
|
||||
| **男生/女生频道**| 针对不同用户群的分类页面(如男生玄幻、女生穿越)。 | 高(细分用户需求) | 是 |
|
||||
| **详情页面** | 小说详情页,包含简介、封面、目录链接等。 | 高(核心转化页面) | 是 |
|
||||
| **章节页面** | 小说具体章节内容,通常数量庞大。 | 中到低(内容分散,SEO 价值有限) | 视情况(可选) |
|
||||
| **目录页面** | 小说章节列表,汇总所有章节链接。 | 中(便于用户导航,SEO 价值中等) | 是 |
|
||||
|
||||
---
|
||||
|
||||
### 二、Sitemap 配置策略
|
||||
#### 1. 哪些 URL 应该包含?
|
||||
基于小说站点的特点,建议优先包含以下页面:
|
||||
|
||||
- **首页**:
|
||||
- 包含站点的唯一首页 URL(如 `https://www.example.com/`)。
|
||||
- 设置高优先级(如 `<priority>1.0</priority>`)和频繁更新(如 `<changefreq>daily</changefreq>`)。
|
||||
|
||||
- **分类列表(主页面)**:
|
||||
- 包含每个分类的主页面(如 `https://www.example.com/category/xuanhuan`)。
|
||||
- 排除分页 URL(如 `https://www.example.com/category/xuanhuan?page=2`),因为分页内容重复且 SEO 价值低。
|
||||
- 示例:玄幻、言情、历史等分类页面。
|
||||
|
||||
- **男生/女生频道**:
|
||||
- 包含频道主页(如 `https://www.example.com/male`、`https://www.example.com/female`)。
|
||||
- 如果频道下有子分类(如男生玄幻、女生穿越),也应包含。
|
||||
|
||||
- **排行榜(精选)**:
|
||||
- 包含主要排行榜页面(如 `https://www.example.com/rank/hot`、`https://www.example.com/rank/male`)。
|
||||
- 如果排行榜页面频繁更新(如每日排行),可设置 `<changefreq>daily</changefreq>`。
|
||||
- 排除次要或动态参数页面(如 `?sort=week`),避免重复内容。
|
||||
|
||||
- **详情页面**:
|
||||
- 包含所有小说详情页面(如 `https://www.example.com/book/123`)。
|
||||
- 这些页面是 SEO 的核心,吸引搜索流量(如用户搜索小说名)。
|
||||
- 使用 `<lastmod>` 反映小说更新时间,提示搜索引擎重新抓取。
|
||||
|
||||
- **目录页面**:
|
||||
- 包含每个小说的目录页面(如 `https://www.example.com/book/123/chapters`)。
|
||||
- 目录页面便于用户导航,且可能被搜索引擎索引为长尾关键词(如“小说名 章节列表”)。
|
||||
|
||||
- **章节页面(可选)**:
|
||||
- **不建议全部包含**:小说章节页面数量庞大(可能数十万到数百万),SEO 价值较低(用户很少通过搜索直接进入具体章节)。
|
||||
- **可选策略**:
|
||||
- 只包含最新章节(如最近 30 天的章节),吸引搜索引擎抓取更新内容。
|
||||
- 只包含热门小说的前几章(如前 10 章),作为引流入口。
|
||||
- 如果包含,设置较低优先级(如 `<priority>0.3</priority>`)。
|
||||
|
||||
#### 2. 哪些 URL 应该排除?
|
||||
- **分页 URL**:如分类列表的 `?page=2`,重复内容无 SEO 价值。
|
||||
- **动态参数 URL**:如 `?sort=latest` 或 `?utm_source=...`,应规范化到标准 URL。
|
||||
- **不可索引页面**:
|
||||
- 已设置 `<meta name="robots" content="noindex">` 的页面。
|
||||
- 被 `robots.txt` 屏蔽的页面(如 `Disallow: /user/`)。
|
||||
- **用户生成内容**:
|
||||
- 如评论页、用户个人中心、搜索结果页(`?q=keyword`)。
|
||||
- **临时页面**:
|
||||
- 如促销活动页、测试页面。
|
||||
- **错误页面**:如 404、500 页面。
|
||||
|
||||
---
|
||||
|
||||
### 三、处理大量 URL 的策略
|
||||
小说站点通常有大量 URL(尤其是章节页面),可能超过 Sitemap 的限制(50,000 条 URL 或 50MB)。以下是应对方法:
|
||||
|
||||
#### 1. 使用 Sitemap 索引文件
|
||||
- 将 URL 分组到多个子 Sitemap 文件(如 `sitemap-books.xml`、`sitemap-chapters.xml`),每文件不超过 50,000 条 URL。
|
||||
- 创建一个 Sitemap 索引文件(如 `sitemap_index.xml`)引用所有子 Sitemap。
|
||||
- 示例:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<sitemap>
|
||||
<loc>https://www.example.com/sitemap-main.xml</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.example.com/sitemap-books.xml</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.example.com/sitemap-chapters.xml</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
</sitemap>
|
||||
</sitemapindex>
|
||||
```
|
||||
|
||||
#### 2. 分组策略
|
||||
- **按页面类型分组**:
|
||||
- `sitemap-main.xml`:首页、分类列表、排行榜、男生/女生频道。
|
||||
- `sitemap-books.xml`:小说详情页面和目录页面。
|
||||
- `sitemap-chapters.xml`:章节页面(如果包含)。
|
||||
- **按更新频率分组**:
|
||||
- 频繁更新的页面(如排行榜、最新章节)单独分组,设置 `<changefreq>daily</changefreq>`。
|
||||
- **按小说分组**:
|
||||
- 为每部小说生成单独的 Sitemap(如 `sitemap-book123.xml`),包含其详情页、目录页和部分章节页。
|
||||
|
||||
#### 3. 动态生成 Sitemap
|
||||
- **脚本生成**:
|
||||
- 使用 Python、PHP 等脚本从数据库查询 URL,生成 Sitemap 文件。
|
||||
- 示例(Python,参考前文):
|
||||
```python
|
||||
from lxml import etree
|
||||
import datetime
|
||||
|
||||
# 模拟数据库查询
|
||||
urls = [
|
||||
{'loc': 'https://www.example.com/', 'lastmod': '2025-04-21', 'changefreq': 'daily', 'priority': '1.0'},
|
||||
{'loc': 'https://www.example.com/book/123', 'lastmod': '2025-04-21', 'changefreq': 'weekly', 'priority': '0.8'},
|
||||
{'loc': 'https://www.example.com/book/123/chapters', 'lastmod': '2025-04-21', 'changefreq': 'weekly', 'priority': '0.6'},
|
||||
]
|
||||
|
||||
urlset = etree.Element("urlset", xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
|
||||
for url in urls:
|
||||
url_element = etree.SubElement(urlset, "url")
|
||||
loc = etree.SubElement(url_element, "loc")
|
||||
loc.text = url['loc']
|
||||
lastmod = etree.SubElement(url_element, "lastmod")
|
||||
lastmod.text = url['lastmod']
|
||||
changefreq = etree.SubElement(url_element, "changefreq")
|
||||
changefreq.text = url['changefreq']
|
||||
priority = etree.SubElement(url_element, "priority")
|
||||
priority.text = url['priority']
|
||||
|
||||
tree = etree.ElementTree(urlset)
|
||||
tree.write("sitemap-main.xml", pretty_print=True, xml_declaration=True, encoding="UTF-8")
|
||||
```
|
||||
|
||||
- **定时任务**:
|
||||
- 使用 cron 任务每天或每周生成 Sitemap,上传到根目录。
|
||||
- 示例(Linux cron):
|
||||
```bash
|
||||
0 2 * * * python3 /path/to/generate_sitemap.py
|
||||
```
|
||||
|
||||
- **触发式更新**:
|
||||
- 在小说更新(如新章节发布)时,触发脚本更新相关 Sitemap。
|
||||
|
||||
#### 4. 伪静态 Sitemap
|
||||
- 配置服务器将 `sitemap_index.xml` 等请求重定向到动态脚本,实时生成 XML 内容。
|
||||
- 示例(Apache + PHP,参考前文):
|
||||
```apache
|
||||
RewriteEngine On
|
||||
RewriteRule ^sitemap_index\.xml$ sitemap_index.php [L]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 四、robots.txt 配置
|
||||
在 `robots.txt` 中声明 Sitemap 索引文件,使用绝对路径:
|
||||
```txt
|
||||
User-agent: *
|
||||
Disallow: /user/
|
||||
Disallow: /search/
|
||||
Sitemap: https://www.example.com/sitemap_index.xml
|
||||
```
|
||||
|
||||
- 确保不通过 `Disallow` 屏蔽 Sitemap 文件。
|
||||
- 如果 Sitemap 托管在 CDN(如 `https://cdn.example.com/sitemap_index.xml`),在 `robots.txt` 中使用 CDN 地址,并验证所有权。
|
||||
|
||||
---
|
||||
|
||||
### 五、SEO 优化建议
|
||||
1. **优先级设置**:
|
||||
- 首页:`<priority>1.0</priority>`
|
||||
- 分类/频道/详情页:`<priority>0.8</priority>`
|
||||
- 目录页:`<priority>0.6</priority>`
|
||||
- 章节页(若包含):`<priority>0.3</priority>`
|
||||
|
||||
2. **更新频率**:
|
||||
- 首页、排行榜:`<changefreq>daily</changefreq>`
|
||||
- 分类/频道/详情/目录页:`<changefreq>weekly</changefreq>`
|
||||
- 章节页:`<changefreq>monthly</changefreq>`(或 `never` 如果不频繁更新)
|
||||
|
||||
3. **规范化 URL**:
|
||||
- 确保只包含规范 URL(如 `https://www.example.com/book/123` 而非 `http://example.com/book/123`)。
|
||||
- 使用 `<link rel="canonical">` 或 Sitemap 统一规范版本。
|
||||
|
||||
4. **避免重复内容**:
|
||||
- 排除带参数的 URL(如 `?sort=latest`)。
|
||||
- 如果男生/女生频道与分类列表有重复内容,选择主要入口包含在 Sitemap 中。
|
||||
|
||||
5. **图片 Sitemap(可选)**:
|
||||
- 为小说封面图片创建图片 Sitemap,优化图片搜索排名。
|
||||
- 示例:
|
||||
```xml
|
||||
<url>
|
||||
<loc>https://www.example.com/book/123</loc>
|
||||
<image:image>
|
||||
<image:loc>https://www.example.com/images/book123.jpg</image:loc>
|
||||
<image:title>小说封面</image:title>
|
||||
</image:image>
|
||||
</url>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 六、注意事项
|
||||
1. **章节页面数量庞大**:
|
||||
- 如果每部小说有数百章节,章节页面可能占主导。建议只包含最新或热门章节,或完全排除章节页面,依靠目录页面引导爬虫。
|
||||
2. **抓取预算**:
|
||||
- 小说站点 URL 数量多,需优化 Sitemap 避免浪费搜索引擎的抓取预算。
|
||||
3. **动态更新**:
|
||||
- 小说站点内容更新频繁(如新章节发布),建议动态生成 Sitemap 或频繁更新。
|
||||
4. **验证 Sitemap**:
|
||||
- 提交 `sitemap_index.xml` 到 Google Search Console、Bing Webmaster Tools,检查是否被正确解析。
|
||||
- 使用 GSC 的“索引覆盖率”报告,确认重要页面(如详情页)是否被索引。
|
||||
|
||||
---
|
||||
|
||||
### 七、示例 Sitemap 配置
|
||||
#### 索引文件(`sitemap_index.xml`)
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<sitemap>
|
||||
<loc>https://www.example.com/sitemap-main.xml</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.example.com/sitemap-books.xml</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
</sitemap>
|
||||
</sitemapindex>
|
||||
```
|
||||
|
||||
#### 主 Sitemap(`sitemap-main.xml`)
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://www.example.com/</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.example.com/category/xuanhuan</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.example.com/male</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.example.com/rank/hot</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
```
|
||||
|
||||
#### 小说 Sitemap(`sitemap-books.xml`)
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://www.example.com/book/123</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.example.com/book/123/chapters</loc>
|
||||
<lastmod>2025-04-21</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 八、结论
|
||||
- **不需包含所有 URL**:小说站点应优先包含首页、分类列表、男生/女生频道、排行榜、详情页面和目录页面。章节页面可根据需要部分包含或完全排除。
|
||||
- **精选策略**:重点包含 SEO 价值高的页面(如详情页),排除分页、动态参数、低价值页面。
|
||||
- **大型站点处理**:使用 Sitemap 索引文件和子 Sitemap,按页面类型分组,动态生成以应对大量 URL。
|
||||
- **SEO 优化**:设置合理的 `<priority>` 和 `<changefreq>`,定期更新 Sitemap,验证索引效果。
|
||||
|
||||
如果你需要针对小说站点的具体脚本(生成 Sitemap 或伪静态配置)、CMS 插件推荐,或其他细节(如图片 Sitemap、robots.txt 优化),请告诉我!
|
||||
3
code/app/home/view/videoBoKu/sitemap/robots.txt
Normal file
3
code/app/home/view/videoBoKu/sitemap/robots.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
User-agent: *
|
||||
Disallow:
|
||||
Sitemap: https://{$DomainModel->d_domain}/sitemap_index.xml
|
||||
@@ -0,0 +1,20 @@
|
||||
{novel:pagerexp page="$Request.get.page" limit="40000"
|
||||
sort_type="news"
|
||||
d_key="key"
|
||||
d_val="Novel"
|
||||
cache_life="86400" func="generateCategoryPager" export_name="resData" /}
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<!-- // 根据分页查询,按顺序 每页 50000个小说 -->
|
||||
|
||||
{foreach $resData.data as $key=>$Novel}
|
||||
<url>
|
||||
<loc>https://www.{$DomainModel->d_domain}{site:nclurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" order="zheng" page="1"/}</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
{/foreach}
|
||||
<!-- 最多 50,000 个 <url> 条目 -->
|
||||
</urlset>
|
||||
20
code/app/home/view/videoBoKu/sitemap/sitemap-books.xml
Normal file
20
code/app/home/view/videoBoKu/sitemap/sitemap-books.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
{novel:pagerexp page="$Request.get.page" limit="40000"
|
||||
sort_type="news"
|
||||
d_key="key"
|
||||
d_val="Novel"
|
||||
cache_life="86400" func="generateCategoryPager" export_name="resData" /}
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<!-- // 根据分页查询,按顺序 每页 50000个小说 -->
|
||||
|
||||
{foreach $resData.data as $key=>$Novel}
|
||||
<url>
|
||||
<loc>https://www.{$DomainModel->d_domain}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
{/foreach}
|
||||
|
||||
</urlset>
|
||||
18
code/app/home/view/videoBoKu/sitemap/sitemap-chapters.xml
Normal file
18
code/app/home/view/videoBoKu/sitemap/sitemap-chapters.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
{novel:pagerexp page="$Request.get.page" limit="40000"
|
||||
sort_type="news"
|
||||
d_key="key"
|
||||
d_val="Novel"
|
||||
cache_life="86400" func="generateCategoryPager" export_name="resData" /}
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
{foreach $resData.data as $key=>$Novel}
|
||||
<url>
|
||||
<loc>https://www.{$DomainModel->d_domain}{site:lcpurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
{/foreach}
|
||||
|
||||
</urlset>
|
||||
35
code/app/home/view/videoBoKu/sitemap/sitemap-main.xml
Normal file
35
code/app/home/view/videoBoKu/sitemap/sitemap-main.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://www.{$DomainModel->d_domain}/</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://www.{$DomainModel->d_domain}{$strRankUrlTemp}</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
|
||||
<!-- 分类 -->
|
||||
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
|
||||
<!-- 排序 -->
|
||||
{novel:sort d_key="sort_key" d_val="strSortName"}
|
||||
<!-- 状态 -->
|
||||
{novel:status d_key="status_key" d_val="strStatusName"}
|
||||
<url>
|
||||
<loc>https://www.{$DomainModel->d_domain}{site:nflurl category="$strCategoryPinyin" order="$sort_key" status="$status_key" /}</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
{/novel:status}
|
||||
{/novel:sort}
|
||||
{/novel:category}
|
||||
|
||||
|
||||
<!-- 注意 所有链接不要分页,有分页的取第一页即可 -->
|
||||
</urlset>
|
||||
39
code/app/home/view/videoBoKu/sitemap/sitemap_index.xml
Normal file
39
code/app/home/view/videoBoKu/sitemap/sitemap_index.xml
Normal file
@@ -0,0 +1,39 @@
|
||||
{novel:pagerexp page="1" limit="40000"
|
||||
sort_type="news"
|
||||
d_key="d_key"
|
||||
d_val="Novel"
|
||||
cache_life="86400" func="generateCategoryPager" export_name="resData" /}
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<sitemap>
|
||||
<loc>https://www.{$DomainModel->d_domain}/sitemap-main.xml</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
</sitemap>
|
||||
|
||||
<!--小说总数量/50000 得出 sitemap-books 一共有多少个 -->
|
||||
{for start="0" end="$resData.p_data.pages"}
|
||||
<sitemap>
|
||||
<loc>https://www.{$DomainModel->d_domain}/sitemap-books-{$i+1}.xml</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
</sitemap>
|
||||
{/for}
|
||||
|
||||
<!-- 小说总数量/50000 得出 sitemap-books-catalog一共有多少个,每个小说只取一个目录链接,分页不需要加入去 -->
|
||||
{for start="0" end="$resData.p_data.pages"}
|
||||
<sitemap>
|
||||
<loc>https://www.{$DomainModel->d_domain}/sitemap-books-catalog-{$i+1}.xml</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
</sitemap>
|
||||
{/for}
|
||||
|
||||
<!-- 小说章节取最新章节 -->
|
||||
{for start="0" end="$resData.p_data.pages"}
|
||||
<sitemap>
|
||||
<loc>https://www.{$DomainModel->d_domain}/sitemap-chapters-{$i+1}.xml</loc>
|
||||
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||
</sitemap>
|
||||
{/for}
|
||||
|
||||
|
||||
</sitemapindex>
|
||||
118
code/app/home/view/videoBoKu/user/getHistory.html
Normal file
118
code/app/home/view/videoBoKu/user/getHistory.html
Normal file
@@ -0,0 +1,118 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{site:grm page_code="h5_video_search" diff="$Request.url" num="30" g_key="arrGrm" /}
|
||||
{/block}
|
||||
|
||||
{block name="title"}我的观看记录{/block}
|
||||
{block name="keywords"}我的观看记录{/block}
|
||||
{block name="description"}我的观看记录{/block}
|
||||
|
||||
|
||||
|
||||
{block name="head"}
|
||||
|
||||
{/block}
|
||||
|
||||
|
||||
{block name="head-css"}
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="head-js"}
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="main"}
|
||||
|
||||
|
||||
<div class="wrap">
|
||||
<div class="container min">
|
||||
|
||||
<div class="row">
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h2 class="a1100b title">观看记录</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd col-pd clearfix">
|
||||
<ul class="myui-vodlist__media clearfix" id="historyContainer">
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/block}
|
||||
{block name="customize"}
|
||||
<script>
|
||||
const strVideoUrlTemp = `{site:replace code="VIDEO_INFO_URL"}`;
|
||||
const strVideoPlayUrlTemp = `{site:replace code="VIDEO_PLAY_URL"}`;
|
||||
const strSearchUrlTemp = `{site:replace code="VIDEO_SEARCH_LIST_URL"}`;
|
||||
// 调用展示书架功能
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
const secondTemplate = `
|
||||
<li class="active clearfix">
|
||||
<div class="thumb">
|
||||
<a class="myui-vodlist__thumb img-lg-150 img-xs-100 lazyload"
|
||||
href={{videoUrl}}
|
||||
title="{{videoName}}"
|
||||
data-src="{{videoPic}}"
|
||||
data-original="{{videoPic}}"
|
||||
style="background-image: url("{{videoPic}}");">
|
||||
<span class="play hidden-xs"></span>
|
||||
<span class="pic-tag pic-tag-top" style="background-color: #5bb7fe;">{$Video.v_score}分</span>
|
||||
<span class="pic-text text-right">{{videoRemarks}}</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<h4 class="title">
|
||||
<a href={{videoUrl}}>
|
||||
{{videoName}}
|
||||
</a>
|
||||
</h4>
|
||||
<p><span class="text-muted">导演:</span>内详</p>
|
||||
<p><span class="text-muted">主演:</span>内详</p>
|
||||
<p><span class="text-muted">分类:</span>
|
||||
{{videoParentCategory}}
|
||||
<span class="split-line"></span>
|
||||
<span class="text-muted hidden-xs">地区:</span>
|
||||
内详
|
||||
<span class="split-line"></span>
|
||||
<span class="text-muted hidden-xs">年份:</span>
|
||||
{{videoYear}}
|
||||
</p>
|
||||
<p class="hidden-xs">
|
||||
<span class="text-muted">简介:</span>
|
||||
...
|
||||
<a href={{videoUrl}}>详情 ></a>
|
||||
</p>
|
||||
<p class="margin-0">
|
||||
<a class="btn btn-sm btn-warm"
|
||||
href='{{videoPlayUrl}}'>
|
||||
<i class="fa fa-play"></i>
|
||||
立即播放
|
||||
</a>
|
||||
|
||||
<a class="btn btn-sm btn-default hidden-xs"
|
||||
href={{videoUrl}}>
|
||||
查看详情
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
`;
|
||||
// 调用展示书架功能
|
||||
displayHistory(secondTemplate);
|
||||
})
|
||||
</script>
|
||||
{/block}
|
||||
268
code/app/home/view/videoBoKu/video/getCategory.html
Normal file
268
code/app/home/view/videoBoKu/video/getCategory.html
Normal file
@@ -0,0 +1,268 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{video:pagerexp page="$Request.get.page" limit="27" button_num="10" cache_life="86400"
|
||||
key="$Request.get.keyword"
|
||||
v_parent_category_en="$Request.route.strParentCategory"
|
||||
v_category_en="$Request.route.strCategory"
|
||||
v_lang_en="$Request.route.strLang"
|
||||
v_area_en="$Request.route.strArea"
|
||||
v_year="$Request.route.strYear"
|
||||
sort_type="$Request.route.strOrder"
|
||||
d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export_name="resData" /}
|
||||
|
||||
{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}" />
|
||||
{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": "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 parent_category="$Request.route.strParentCategory" /}"
|
||||
},
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 3,
|
||||
"name": "分类列表",
|
||||
"item": "https://{$DomainModel->d_domain}{site:vclurl parent_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>
|
||||
|
||||
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="main"}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<h1 class="view-title">
|
||||
{site:replace code="VIDEO@GETCATEGORY@H1"}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETCATEGORY@TEXT"}</h4>
|
||||
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vciurl parent_category="$Request.route.strParentCategory" /}' itemprop="item">
|
||||
<span itemprop="name">{site:getval code="strVideoParentCategoryName" /}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" area="all" lang="all" year="all" order="all" page="1"/}'
|
||||
itemprop="item">
|
||||
<span itemprop="name">{site:getval code="strVideoCategoryName" /}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="3" />
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="row">
|
||||
<div class="myui-panel myui-panel-bg2 clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h3 class="title"> {site:getval code="strVideoParentCategoryName" /}</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<div class="slideDown-box">
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="text-muted btn">类型</a></li>
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
<li>
|
||||
<a href='{site:vclurl parent_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="c65506 btn {if $Request.route.strParentCategory == $val.v_category_en}btn-warm{/if}">
|
||||
{$val.v_category}
|
||||
</a>
|
||||
</li>
|
||||
{/video:categorytype}
|
||||
</ul>
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="btn text-muted">剧情</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>
|
||||
<a class=" a618ce btn {if $Request.route.strCategory == $arrChildrenCategory.v_category_en}btn-warm{/if}"
|
||||
href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$arrChildrenCategory.v_category_en" area="$Request.route.strArea" lang="$Request.route.strLang" year="$Request.route.strYear" order="$Request.route.strOrder" page="$Request.route.intPage"}'>{$arrChildrenCategory.v_category}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/video:categorytype}
|
||||
</ul>
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="btn text-muted">地区</a></li>
|
||||
{video:area d_key="key" d_val="val"}
|
||||
<li>
|
||||
<a href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" area="$key" lang="$Request.route.strLang" year="$Request.route.strYear" order="$Request.route.strOrder" page="$Request.route.intPage"}'
|
||||
class=" ae52d4 btn {if $Request.route.strArea == $key}btn-warm{/if}">{$val}</a>
|
||||
</li>
|
||||
{/video:area}
|
||||
</ul>
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="btn text-muted">年份</a></li>
|
||||
{video:year d_key="key" d_val="val"}
|
||||
<li>
|
||||
<a href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" area="$Request.route.strArea" lang="$Request.route.strLang" year="$key" order="$Request.route.strOrder" page="$Request.route.intPage"}'
|
||||
class=" e230a5 btn {if $Request.route.strYear == $key}btn-warm{/if}">{$val}</a>
|
||||
</li>
|
||||
{/video:year}
|
||||
</ul>
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="btn text-muted">语言</a></li>
|
||||
{video:lang d_key="key" d_val="val"}
|
||||
|
||||
<li>
|
||||
<a href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" area="$Request.route.strArea" lang="$key" year="$Request.route.strYear" order="$Request.route.strOrder" page="$Request.route.intPage"}'
|
||||
class=" btn {if $Request.route.strLang == $key}btn-warm{/if}">{$val}</a>
|
||||
</li>
|
||||
{/video:lang}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
|
||||
<li><a class="btn text-muted">排序</a></li>
|
||||
{video:sort d_key="key" d_val="val"}
|
||||
<li>
|
||||
<a class=" btn {if $Request.route.strOrder == $key}btn-warm{/if}"
|
||||
href='{site:vclurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" area="$Request.route.strArea" lang="$Request.route.strLang" year="$Request.route.strYear" order="$key" page="$Request.route.intPage"}'>
|
||||
{$val}
|
||||
</a>
|
||||
</li>
|
||||
{/video:sort}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist clearfix">
|
||||
{foreach $resData.data as $key=>$Video}
|
||||
{include file="public/video-list-shu" start="0" col-lg="9"/}
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="myui-page text-center clearfix">
|
||||
{volist name="resData.p_data.pager" id="vo" key="k"}
|
||||
{switch $vo.label}
|
||||
{case value="上一页"}
|
||||
{if $resData.p_data.page == 1}
|
||||
<li class="disabled"><span>上一页</span></li>
|
||||
{else}
|
||||
<li><a href="{$vo.url}">1</a></li>
|
||||
{/if}
|
||||
{/case}
|
||||
{case value="下一页"}
|
||||
{if $resData.p_data.page >= $resData.p_data.total}
|
||||
<li class="disabled"><span>下一页</span></li>
|
||||
{else}
|
||||
<li><a href="{$vo.url}">下一页</a></li>
|
||||
{/if}
|
||||
{/case}
|
||||
{default /}
|
||||
{if preg_match('/^\d+$/', $vo.label)}
|
||||
<li>
|
||||
<a href="{$vo.url}"
|
||||
class='cc4f99 btn {eq name="vo.label" value="$Request.route.intPage"}btn-warm {/eq} btn-default '>{$vo.label}</a>
|
||||
</li>
|
||||
{/if}
|
||||
{/switch}
|
||||
{/volist}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
{block name="customize"}
|
||||
|
||||
{/block}
|
||||
195
code/app/home/view/videoBoKu/video/getCategoryType.html
Normal file
195
code/app/home/view/videoBoKu/video/getCategoryType.html
Normal file
@@ -0,0 +1,195 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{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}
|
||||
{block name="keywords"}{site:replace code="VIDEO@GETCATEGORYINDEX@KEYWORDS"}{/block}
|
||||
{block name="description"}{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}{/block}
|
||||
|
||||
{block name="head"}
|
||||
<!-- 社交媒体标签 -->
|
||||
<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}" />
|
||||
{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": "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 parent_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"}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETCATEGORYINDEX@TEXT"}</h4>
|
||||
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vciurl parent_category="$Request.route.strParentCategory" /}' itemprop="item">
|
||||
<span itemprop="name">{site:getval code="strVideoParentCategoryName" /}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
{video:categorytype category_type="ONE" d_key="strParentCategoryKey" d_val="arrParentCategory"}
|
||||
{if $arrParentCategory.v_category_en == $Request.route.strParentCategory}
|
||||
{foreach $arrParentCategory.children as $strChildrenCategoryKey=>$arrChildrenCategory }
|
||||
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_bd clearfix">
|
||||
<div class="col-lg-wide-75 col-xs-1 padding-0">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title">最新{$arrChildrenCategory.v_category}</h3>
|
||||
<a class="more text-muted"
|
||||
href='{site:vclurl parent_category="$arrParentCategory.v_category_en" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all" page="1"/}'>
|
||||
更多<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
<ul class="nav nav-text pull-right hidden-sm hidden-xs">
|
||||
{foreach $arrChildrenCategory.children as $intChildrenKey=>$arrChildrenCategory }
|
||||
<li>
|
||||
<a href='{site:vclurl parent_category="$arrParentCategory.v_category_en" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all" page="1"/}'
|
||||
class="text-muted">
|
||||
{$arrChildrenCategory.v_category}
|
||||
</a>
|
||||
<span class="split-line"></span>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="myui-vodlist clearfix">
|
||||
{video:list count="12"
|
||||
v_parent_category_en="$arrParentCategory.v_category_en"
|
||||
v_category_en="$arrChildrenCategory.v_category_en"
|
||||
sort_type="news"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
{include file="public/video-list-shu" start="27" col-lg="6"/}
|
||||
{/video:list}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-lg-wide-25 hidden-sm hidden-xs visible-inline-lg">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title">最热{$arrChildrenCategory.v_category}</h3><a class="more text-muted"
|
||||
href="{$strRankUrlTemp}">更多<i class="fa fa-angle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="myui-vodlist__text active clearfix" style="padding: 0 10px;">
|
||||
{video:ranklist count="17"
|
||||
v_parent_category_en="$arrParentCategory.v_category_en"
|
||||
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" start="80"/}
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/video:categorytype}
|
||||
|
||||
|
||||
</div>
|
||||
{/block}
|
||||
{block name="customize"}
|
||||
|
||||
{/block}
|
||||
224
code/app/home/view/videoBoKu/video/getRankIndex.html
Normal file
224
code/app/home/view/videoBoKu/video/getRankIndex.html
Normal file
@@ -0,0 +1,224 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{site:grm page_code="h5_rank_type" diff="0" num="100" g_key="arrGrm" /}
|
||||
|
||||
|
||||
{/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@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": "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 < 10 }
|
||||
{
|
||||
"@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"}
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="head-js"}
|
||||
|
||||
{/block}
|
||||
|
||||
{block name='body-class'}rank-index{/block}
|
||||
|
||||
{block name="main"}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<h1 class="view-title">
|
||||
{site:replace code="VIDEO@GETVIDEORANKINDEX@H1"}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEORANKINDEX@TEXT"}</h4>
|
||||
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{$strRankUrlTemp}' itemprop="item">
|
||||
<span itemprop="name">排行榜</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="row">
|
||||
<div class="myui-panel myui-panel-bg2 clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h2 class="title"> 排行榜 筛选</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<div class="slideDown-box">
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="text-muted btn">类型</a></li>
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
<li>
|
||||
<a href='{site:vrlurl parent_category="$val.v_category_en" category="all" sort_type="daily" page="1"/}'
|
||||
class="btn {if $Request.route.strParentCategory == $val.v_category_en}btn-warm{/if}">
|
||||
{$val.v_category}
|
||||
</a>
|
||||
</li>
|
||||
{/video:categorytype}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- hidden-xs visible-inline-lg-->
|
||||
<div class="myui-panel myui-panel-bg clearfix ">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<?php $intRankSortKey = 0;?>
|
||||
{video:ranksort d_key="strRankSortKey" d_val="strRankSortVal"}
|
||||
<?php $intRankSortKey ++ ;?>
|
||||
<div class="col-lg-4 col-md-3 col-sm-2 col-xs-1 padding-0">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h2 class="title">{$strRankSortVal}排行榜</h2>
|
||||
<a class="more text-muted"
|
||||
href='{site:vrlurl parent_category="all" category="all" sort_type="$strRankSortKey" page="1"/}'>
|
||||
更多
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd clearfix">
|
||||
<ul class="myui-vodlist__media active col-pd clearfix">
|
||||
{video:ranklist count="1"
|
||||
sort_type="$key"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
<li>
|
||||
<div class="thumb">
|
||||
<a class="myui-vodlist__thumb img-xs-70"
|
||||
style="background: url({$Video.v_pic});"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
|
||||
title="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
data-original="{$Video.v_pic}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="detail detail-side">
|
||||
<h6 class="title">
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}' >
|
||||
<i class="fa fa-angle-right text-muted pull-right"></i>
|
||||
{$Video.v_name}
|
||||
</a>
|
||||
</h6>
|
||||
<p class="font-12"><span class="text-muted">类型:</span>{$Video.v_parent_category}</p>
|
||||
<p class="font-12"><span class="text-muted">地区:</span>
|
||||
{volist name='$Video.v_area' id='vo' key='index'}
|
||||
{$vo}
|
||||
{/volist}
|
||||
</p>
|
||||
<p class="font-12 margin-0"><span class="text-muted">主演:</span>
|
||||
{volist name='$Video.v_actor' id='vo' key='index'}
|
||||
{$vo}
|
||||
|
||||
{/volist}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
<ul class="myui-vodlist__text col-pd clearfix">
|
||||
{video:ranklist count="10"
|
||||
sort_type="$key"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
{if $key >0}
|
||||
{include file="public/video-list-phb" start="($intRankSortKey * 10)"/}
|
||||
{/if}
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/video:ranksort}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{/block}
|
||||
{block name="customize"}
|
||||
|
||||
{/block}
|
||||
204
code/app/home/view/videoBoKu/video/getRankList.html
Normal file
204
code/app/home/view/videoBoKu/video/getRankList.html
Normal file
@@ -0,0 +1,204 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{video:ranklistexp page="1" limit="50"
|
||||
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" 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@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@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="video.movie" />
|
||||
|
||||
|
||||
<!-- 结构化数据 -->
|
||||
<script type="application/ld+json">
|
||||
[
|
||||
{
|
||||
"@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 < 10 }
|
||||
{
|
||||
"@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}"
|
||||
},
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 3,
|
||||
"name": "{site:getval code="strVideoParentCategoryName" /}{site:getval code="strVideoCategoryName" /}{site:getval code="strOrderName" /}排行榜",
|
||||
"item": "https://{$DomainModel->d_domain}{site:vrlurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" sort_type="$Request.route.strSortType" page="1"/}"
|
||||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="head-css"}
|
||||
{/block}
|
||||
{block name="head-js"}
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="main"}
|
||||
|
||||
<div class="bac3b3 container" style="margin-top:10px;">
|
||||
|
||||
<h1 class="view-title">
|
||||
{site:replace code="VIDEO@GETVIDEORANKLIST@H1"}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEORANKLIST@TEXT"}</h4>
|
||||
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{$strRankUrlTemp}' itemprop="item">
|
||||
<span itemprop="name">排行榜</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vrlurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" sort_type="$Request.route.strSortType" page="1"/}'
|
||||
itemprop="item">
|
||||
<span itemprop="name">{site:getval code="strVideoParentCategoryName" /}{site:getval
|
||||
code="strVideoCategoryName" /}{site:getval code="strOrderName" /}排行榜</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class=" row">
|
||||
<div class="myui-panel myui-panel-bg2 clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h2 class="title"> {site:getval code="strVideoParentCategoryName" /}排行榜</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<div class="slideDown-box">
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="text-muted btn">类型</a></li>
|
||||
{video:categorytype category_type="ONE" d_key="key" d_val="val"}
|
||||
<li>
|
||||
<a href='{site:vrlurl parent_category="$val.v_category_en" category="all" sort_type="daily" page="1"/}'
|
||||
class="btn {if $Request.route.strParentCategory == $val.v_category_en}btn-warm{/if}">
|
||||
{$val.v_category}
|
||||
</a>
|
||||
</li>
|
||||
{/video:categorytype}
|
||||
</ul>
|
||||
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="btn text-muted">剧情</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>
|
||||
<a class="btn {if $Request.route.strCategory == $arrChildrenCategory.v_category_en}btn-warm{/if}"
|
||||
href='{site:vrlurl parent_category="$Request.route.strParentCategory" category="$arrChildrenCategory.v_category_en" sort_type="$Request.route.strSortType" page="1"/}'>{$arrChildrenCategory.v_category}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/video:categorytype}
|
||||
</ul>
|
||||
|
||||
<ul class="myui-screen__list nav-slide clearfix" data-align="left">
|
||||
<li><a class="text-muted btn">排序</a></li>
|
||||
{video:ranksort d_key="key" d_val="val"}
|
||||
<li>
|
||||
<a href='{site:vrlurl parent_category="$Request.route.strParentCategory" category="$Request.route.strCategory" sort_type="$key" page="1"/}'
|
||||
class="btn {if $Request.route.strSortType == $key}btn-warm{/if}">
|
||||
{$val}排行榜
|
||||
</a>
|
||||
</li>
|
||||
{/video:ranksort}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist clearfix">
|
||||
{foreach $arrVideoRankList as $key=>$Video}
|
||||
{include file="public/video-list-shu" start="0" col-lg="9"/}
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{/block}
|
||||
{block name="customize"}
|
||||
|
||||
{/block}
|
||||
231
code/app/home/view/videoBoKu/video/getSearchVideo.html
Normal file
231
code/app/home/view/videoBoKu/video/getSearchVideo.html
Normal file
@@ -0,0 +1,231 @@
|
||||
{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="86400" func="generateSearchPager" export_name="resData" /}
|
||||
{site:grm page_code="h5_video_search" diff="$Request.url" 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="head"}
|
||||
<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='{$DomainModel->d_name}'>
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
[
|
||||
{
|
||||
"@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>
|
||||
{/block}
|
||||
|
||||
|
||||
{block name="head-css"}
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="head-js"}
|
||||
|
||||
{/block}
|
||||
|
||||
{block name="main"}
|
||||
|
||||
<div class="wrap">
|
||||
<div class="container min">
|
||||
|
||||
<h1 class="view-title">
|
||||
{site:replace code="VIDEO@GETSEARCHVIDEO@H1"}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETSEARCHVIDEO@TEXT"}</h4>
|
||||
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vsurl key="$Request.get.keyword" p="1"/}' itemprop="item">
|
||||
<span itemprop="name">搜索:{$Request.get.keyword}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="row">
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h2 class="a1100b title"> 搜索<span style="color:red">“{$Request.get.keyword}”</span>相关结果共有 <span style="color:red">{$resData.p_data.total}</span> 部视频 </h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd col-pd clearfix">
|
||||
<ul class="myui-vodlist__media clearfix" id="searchList">
|
||||
{foreach $resData.data as $key=>$Video}
|
||||
|
||||
<li class="active clearfix">
|
||||
<div class="thumb">
|
||||
<a class="myui-vodlist__thumb img-lg-150 img-xs-100 lazyload"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
|
||||
title="{$Video.v_name}"
|
||||
data-original="{$Video.v_pic}"
|
||||
style="background-image: url("{$Video.v_pic}");">
|
||||
<span class="play hidden-xs"></span>
|
||||
<span class="pic-tag pic-tag-top" style="background-color: #5bb7fe;">{$Video.v_score}分</span>
|
||||
<span class="pic-text text-right">{$Video.v_remarks}</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<h4 class="title">
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'>
|
||||
{$Video.v_name}
|
||||
</a>
|
||||
</h4>
|
||||
<p><span class="text-muted">导演:</span>内详</p>
|
||||
<p><span class="text-muted">主演:</span>内详</p>
|
||||
<p><span class="text-muted">分类:</span>
|
||||
{$Video.v_parent_category}
|
||||
<span class="split-line"></span>
|
||||
<span class="text-muted hidden-xs">地区:</span>
|
||||
内详
|
||||
<span class="split-line"></span>
|
||||
<span class="text-muted hidden-xs">年份:</span>
|
||||
{$Video.v_year}
|
||||
</p>
|
||||
<p class="hidden-xs">
|
||||
<span class="text-muted">简介:</span>
|
||||
...
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'>详情 ></a>
|
||||
</p>
|
||||
<p class="margin-0">
|
||||
<a class="btn btn-sm btn-warm"
|
||||
href='{site:vpurl v_id="$Video.v_id" v_py="$Video.v_name_en" play_type="default" play_index="1" /}'>
|
||||
<i class="fa fa-play"></i>
|
||||
立即播放
|
||||
</a>
|
||||
|
||||
<a class="btn btn-sm btn-default hidden-xs"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'>
|
||||
查看详情
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
{/foreach}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="myui-page text-center clearfix">
|
||||
{volist name="resData.p_data.pager" id="vo" key="k"}
|
||||
{switch $vo.label}
|
||||
{case value="上一页"}
|
||||
{if $resData.p_data.page == 1}
|
||||
<li class="disabled"><span>上一页</span></li>
|
||||
{else}
|
||||
<li><a href="{$vo.url}">1</a></li>
|
||||
{/if}
|
||||
{/case}
|
||||
{case value="下一页"}
|
||||
{if $resData.p_data.page >= $resData.p_data.total}
|
||||
<li class="disabled"><span>下一页</span></li>
|
||||
{else}
|
||||
<li><a href="{$vo.url}">下一页</a></li>
|
||||
{/if}
|
||||
{/case}
|
||||
{default /}
|
||||
{if preg_match('/^\d+$/', $vo.label)}
|
||||
<li >
|
||||
<a href="{$vo.url}" class='cc4f99 btn {eq name="vo.label" value="$Request.route.intPage"}btn-warm {/eq} btn-default '>{$vo.label}</a>
|
||||
</li>
|
||||
{/if}
|
||||
{/switch}
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <script
|
||||
type="text/javascript">
|
||||
var wdkey = /哪吒/g; var wd = $('#searchList'); wd[0].innerHTML = wd[0].innerHTML.replace(wdkey, "<font color=red>哪吒</font>");
|
||||
</script> -->
|
||||
|
||||
|
||||
{/block}
|
||||
{block name="customize"}
|
||||
|
||||
{/block}
|
||||
499
code/app/home/view/videoBoKu/video/getVideoInfo.html
Normal file
499
code/app/home/view/videoBoKu/video/getVideoInfo.html
Normal file
@@ -0,0 +1,499 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{if $Request.route.intVId}
|
||||
{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" /}
|
||||
{/if}
|
||||
{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}
|
||||
{/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}
|
||||
{/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}
|
||||
{/block}
|
||||
|
||||
|
||||
{block name="head"}
|
||||
|
||||
{// 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": "{$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"/}',
|
||||
"genre": ["动作", "科幻"],
|
||||
"keywords": '{site:replace code="VIDEO@GETVIDEOINFO@KEYWORDS"}',
|
||||
"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>
|
||||
{/block}
|
||||
|
||||
{block name='body-class'}video-info-page{/block}
|
||||
|
||||
{block name="main"}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<h1 class="view-title">
|
||||
{site:replace code="VIDEO@GETVIDEOINFO@H1" diff="$arrVideo.v_id"}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEOINFO@TEXT" diff="$arrVideo.v_id"}</h4>
|
||||
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li style="margin-right:10px"><label><i class="baf725 fa fa-map-marker"></i></label></li>
|
||||
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vciurl parent_category="$arrVideo.v_parent_category_en" /}' itemprop="item">
|
||||
<span itemprop="name">{$arrVideo.v_parent_category}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vclurl parent_category="$arrVideo.v_parent_category_en" category="$arrVideo.v_parent_category_en" area="all" lang="all" year="all" order="all" page="1"/}'
|
||||
itemprop="item">
|
||||
<span itemprop="name">{$arrVideo.v_category}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="3" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}'
|
||||
itemprop="item">
|
||||
<span itemprop="name">{$arrVideo.v_name}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="4" />
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-wide-7 col-xs-1 padding-0">
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="col-xs-1">
|
||||
<div class="myui-content__thumb">
|
||||
<a class="myui-vodlist__thumb picture"
|
||||
href="#" title="{$arrVideo.v_name}">
|
||||
<img class="lazyload"
|
||||
src="{$arrVideo.v_pic}"
|
||||
data-original="{$arrVideo.v_pic}">
|
||||
<span class="play hidden-xs"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="myui-content__detail">
|
||||
|
||||
<h1 class="title">{$arrVideo.v_name}</h1>
|
||||
<div id="rating" class="score" data-mid="1" data-id="71202" data-score="{$arrVideo.v_score}">
|
||||
<span class="left text-muted">评分:</span>
|
||||
<span class="branch">{$arrVideo.v_score}</span>
|
||||
</div>
|
||||
<p class="data">
|
||||
<span class="text-muted">分类:</span>
|
||||
<a href='{site:vsurl key="$arrVideo.v_parent_category" p="1"/}'>{$arrVideo.v_parent_category}</a>
|
||||
<span class="split-line"></span>
|
||||
<span class="text-muted hidden-xs">地区:</span>
|
||||
{volist name='$arrVideo.v_area' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
<span class="split-line"></span>
|
||||
<span class="text-muted hidden-xs">年份:</span>
|
||||
<a href='{site:vsurl key="$arrVideo.v_year" p="1"/}'>{$arrVideo.v_year}</a>
|
||||
</p>
|
||||
<p class="data">
|
||||
<span class="text-muted">更新:</span>
|
||||
<span class="text-red">{$arrVideo.v_publish_date}</span>
|
||||
</p>
|
||||
<p class="data">
|
||||
<span class="text-muted">主演:</span>
|
||||
{volist name='$arrVideo.v_actor' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
</p>
|
||||
<p class="data"><span class="text-muted">导演:</span>
|
||||
{volist name='$arrVideo.v_director' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
</p>
|
||||
<p class="data hidden-xs">
|
||||
<span class="text-muted">简介:</span>
|
||||
{$arrVideo.v_description|raw|mb_substr=0,30}
|
||||
<a class="text-link" href="#desc">
|
||||
详情
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="myui-content__operate">
|
||||
<a class="btn btn-warm" href='{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="default" play_index="1" /}'>
|
||||
<i class="fa fa-play"></i>
|
||||
立即播放
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <script type="text/javascript">Myui.Score();</script> -->
|
||||
<div class="myui-panel myui-panel-bg clearfix" id="desc">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h3 class="title">
|
||||
<img src="/template/videoboku/images/juqing.png">剧情简介</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<div class="col-pd text-collapse content">
|
||||
<!-- <p class="myui-content__tag">关键词
|
||||
<a href="">
|
||||
{$arrVideo.v_name}
|
||||
</a>
|
||||
|
||||
</p> -->
|
||||
<span class="sketch content">
|
||||
《{$arrVideo.v_name}》是一部在
|
||||
{volist name='$arrVideo.v_area' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
上映的导演的日韩动漫影视作品,影片的导演是
|
||||
{volist name='$arrVideo.v_director' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
{$arrVideo.v_description|raw}
|
||||
想要看更多的
|
||||
<a href="#" title="{$DomainModel->d_name}_{$arrVideo.v_name}" >《{$arrVideo.v_name}》</a>
|
||||
相关影视作品,请关注
|
||||
<a href="/" title="{$DomainModel->d_name}" >{$DomainModel->d_domain}</a>!
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix"><a
|
||||
class="more sort-button pull-right" href="javascript:;"><i
|
||||
class="fa fa-sort-amount-asc"></i>排序</a>
|
||||
<h3 class="title"><img src="/template/videoboku/images/bf.png">播放线路</h3>
|
||||
<ul class="nav nav-tabs active">
|
||||
<?php $keyLineGroup = 0;?>
|
||||
{foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType }
|
||||
<?php $keyLineGroup ++ ;?>
|
||||
<li class='{eq name="$keyLineGroup" value="1"}active {/eq}' id="line_head_{$strPlayGroupName}" onclick="checkLine('{$strPlayGroupName}')">
|
||||
<a href="javascript:;" data-toggle="tab">
|
||||
{$strPlayGroupName}
|
||||
</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-content myui-panel_bd">
|
||||
<?php $keyLine = 0;?>
|
||||
{foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType }
|
||||
<?php $keyLine ++ ;?>
|
||||
<div id="playlist_{$strPlayGroupName}" class='tab-pane fade in clearfix {eq name="$keyLine" value="1"}active {/eq}'>
|
||||
<ul class="myui-content__list sort-list clearfix"
|
||||
style="max-height: 300px; overflow: auto;">
|
||||
{volist name='$arrPlayUrlType' id='arrPlayUrl'}
|
||||
<li class="col-lg-10 col-md-8 col-sm-6 col-xs-4">
|
||||
<a class="btn btn-default"
|
||||
href='{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="$strPlayGroupName" play_index="$i" /}'>
|
||||
{$arrPlayUrl.name}
|
||||
</a>
|
||||
</li>
|
||||
{/volist}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
{/foreach}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title"><img src="/template/videoboku/images/zb.png">猜你喜欢</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist__bd clearfix">
|
||||
{video:list count="12"
|
||||
v_category_en="$arrVideo.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" start="0" col-lg="6"/}
|
||||
{/video:list}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title"><img src="/template/videoboku/images/see.png">大家正在看</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist__bd clearfix">
|
||||
{video:list count="12"
|
||||
v_category_en="$arrVideo.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" start="13" col-lg="6"/}
|
||||
{/video:list}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-wide-3 col-xs-1 myui-sidebar hidden-sm hidden-xs">
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title">热播榜</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist__media active col-pd clearfix">
|
||||
{video:ranklist count="1"
|
||||
v_parent_category_en="$arrVideo.v_parent_category_en"
|
||||
v_category_en="$arrVideo.v_category_en"
|
||||
sort_type="total"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
<li>
|
||||
<div class="thumb">
|
||||
<a class="myui-vodlist__thumb img-xs-70"
|
||||
style="background: url({$Video.v_pic});"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
|
||||
title="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
data-original="{$Video.v_pic}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="detail detail-side">
|
||||
<h6 class="title">
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}' >
|
||||
<i class="fa fa-angle-right text-muted pull-right"></i>
|
||||
{$Video.v_name}
|
||||
</a>
|
||||
</h6>
|
||||
<p class="font-12"><span class="text-muted">类型:</span>{$Video.v_parent_category}</p>
|
||||
<p class="font-12"><span class="text-muted">地区:</span>
|
||||
{volist name='$Video.v_area' id='vo' key='index'}
|
||||
{$vo}
|
||||
{/volist}
|
||||
</p>
|
||||
<p class="font-12 margin-0"><span class="text-muted">主演:</span>
|
||||
{volist name='$Video.v_actor' id='vo' key='index'}
|
||||
{$vo}
|
||||
|
||||
{/volist}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
<ul class="myui-vodlist__text col-pd clearfix">
|
||||
{video:ranklist count="30"
|
||||
v_parent_category_en="$arrVideo.v_parent_category_en"
|
||||
v_category_en="$arrVideo.v_category_en"
|
||||
sort_type="total"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
{if $key >0}
|
||||
{include file="public/video-list-phb" start="25"/}
|
||||
{/if}
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
function checkLine(val){
|
||||
|
||||
//点击 通过传递过来的 当前元素id ,组建2个 id ,一个是 head id 一个是列表id
|
||||
// 1.给当前元素 添加类名 activ ,其它兄弟元素 删除 activee
|
||||
|
||||
|
||||
// 构造 ID(去掉 # 前缀)
|
||||
let strLineHeadId = `line_head_${val}`;
|
||||
let strLineListId = `playlist_${val}`;
|
||||
|
||||
// 获取 DOM 元素
|
||||
let headElement = document.getElementById(strLineHeadId);
|
||||
let listElement = document.getElementById(strLineListId);
|
||||
|
||||
// 1. 处理头部导航的 active 类
|
||||
let navItems = document.querySelectorAll('.nav-tabs li');
|
||||
navItems.forEach(item => {
|
||||
if (item.id === strLineHeadId) {
|
||||
item.classList.add('active');
|
||||
} else {
|
||||
item.classList.remove('active');
|
||||
}
|
||||
});
|
||||
|
||||
// 2. 处理播放列表的 active 类
|
||||
let tabPanes = document.querySelectorAll('.tab-content .tab-pane');
|
||||
tabPanes.forEach(pane => {
|
||||
if (pane.id === strLineListId) {
|
||||
pane.classList.add('active');
|
||||
} else {
|
||||
pane.classList.remove('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
|
||||
const strVideoId = `{$arrVideo.v_id}`;
|
||||
const arrVideo = {
|
||||
'v_id': `{$arrVideo['v_id']}`,
|
||||
'v_name_en': `{$arrVideo['v_name_en']}`,
|
||||
'v_pic': `{$arrVideo['v_pic']}`,
|
||||
'v_name': `{$arrVideo['v_name']}`,
|
||||
'v_description': `{$arrVideo['v_description']}`,
|
||||
'v_publish_date': `{$arrVideo['v_publish_date']}`,
|
||||
'v_remarks': `{$arrVideo['v_remarks']}`,
|
||||
'v_category': `{$arrVideo['v_category']}`,
|
||||
'v_parent_category': `{$arrVideo['v_parent_category']}`,
|
||||
'v_year': `{$arrVideo['v_year']}`,
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
{block name="customize"} {/block}
|
||||
556
code/app/home/view/videoBoKu/video/getVideoPlayUrl.html
Normal file
556
code/app/home/view/videoBoKu/video/getVideoPlayUrl.html
Normal file
@@ -0,0 +1,556 @@
|
||||
{extend name="base" /}
|
||||
|
||||
{block name="get-data"}
|
||||
|
||||
{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"}
|
||||
{site:replace code="VIDEO@GETVIDEOPLAY@TITLE" diff="$Request.route.intVId" /}
|
||||
{/block}
|
||||
|
||||
{block name="keywords"}
|
||||
{site:replace code="VIDEO@GETVIDEOPLAY@KEYWORDS" diff="$Request.route.intVId"}
|
||||
{/block}
|
||||
|
||||
{block name="description"}
|
||||
{site:replace code="VIDEO@GETVIDEOPLAY@DESCRIPTION" diff="$Request.route.intVId"}
|
||||
{/block}
|
||||
|
||||
{block name="head"}
|
||||
|
||||
{// 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": "{$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>
|
||||
{/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">
|
||||
|
||||
</style>
|
||||
{/block}
|
||||
|
||||
|
||||
{block name='body-class'}video-play-page active{/block}
|
||||
|
||||
{block name="main"}
|
||||
|
||||
|
||||
<div class="myui-player clearfix" style="background-color: #27272f;">
|
||||
<div class="container">
|
||||
<h1 class="view-title">
|
||||
{site:replace code="VIDEO@GETVIDEOPLAY@H1"}
|
||||
</h1>
|
||||
<h4 class="view-description">{site:replace code="VIDEO@GETVIDEOPLAY@TEXT"}</h4>
|
||||
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li style="margin-right:10px"><label><i class="baf725 fa fa-map-marker"></i></label></li>
|
||||
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vciurl parent_category="$arrVideo.v_parent_category_en" /}' itemprop="item">
|
||||
<span itemprop="name">{$arrVideo.v_parent_category}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vclurl parent_category="$arrVideo.v_parent_category_en" category="$arrVideo.v_parent_category_en" area="all" lang="all" year="all" order="all" page="1"/}'
|
||||
itemprop="item">
|
||||
<span itemprop="name">{$arrVideo.v_category}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="3" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href='{site:vurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en"/}'
|
||||
itemprop="item">
|
||||
<span itemprop="name">{$arrVideo.v_name}</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="4" />
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="row">
|
||||
<div class="myui-player__item clearfix" style="background-color: #1f1f1f;">
|
||||
<div class="col-lg-wide-8 col-md-wide-8 clearfix padding-0 relative" id="player-left">
|
||||
<div class="myui-player__box player-fixed">
|
||||
<div id="tips" class="tips close-box" style="background-color:#181515;">
|
||||
<a
|
||||
class="tips-close-btn pull-right" onclick="closeTips()"><i
|
||||
class="fa fa-close"></i>
|
||||
</a>
|
||||
<ul>
|
||||
<li id="Marquee" style="height: 38px">
|
||||
<div>正在播放:{$arrVideo.v_name}-第{$Request.route.intPlayIndex}集</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<a class="player-fixed-off" href="javascript:;" style="display: none;">
|
||||
<i class="fa fa-close"></i>
|
||||
</a>
|
||||
<div class="dplayer-prent">
|
||||
<div id="dplayer" class="dplayer" muted=“muted” style="margin-top: 5px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="myui-player__operate" style="background-color: #1b1a25;">
|
||||
|
||||
<li><a href="javascript:;" onclick="window.location.reload()"><i
|
||||
class="fa fa-spinner"></i>刷新</a></li>
|
||||
|
||||
<li>
|
||||
<a class="digg_link" data-mid="1" data-type="up" href="javascript:;">
|
||||
<i class="fa fa-thumbs-up"></i>
|
||||
<span class="digg_num">{$arrVideo.v_score}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="digg_link" data-mid="1" data-type="down"
|
||||
href="javascript:;">
|
||||
<i class="fa fa-thumbs-down"></i>
|
||||
<span class="digg_num">{$arrVideo.vc_clicks ?? 0}</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-lg-wide-2 col-md-wide-2 " id="player-sidebar"
|
||||
style="max-height: 549.594px; overflow: auto;">
|
||||
<div class="myui-panel margin-0 clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="tips close-box"
|
||||
style="background-color:#0090CE;border-radius: 5px;margin-bottom: 10px;text-shadow: #1f1f1f 2px 2px 2px;font-size:15px;">
|
||||
<span class="tips-close-btn pull-right"><span
|
||||
style="font-weight: bold;">播放卡顿请点下方切换线路</span> <i
|
||||
style="font-size:20px" class="fa fa-hand-o-down"></i></span></div>
|
||||
<div class="myui-panel__head active clearfix">
|
||||
<h2 class="title text-fff">{$arrVideo.v_name}</h2>
|
||||
</div>
|
||||
<div class="text-muted">
|
||||
<ul class="nav nav-tabs pull-right">
|
||||
|
||||
<?php $keyLineGroup = 0;?>
|
||||
{foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType }
|
||||
<?php $keyLineGroup ++ ;?>
|
||||
<li class='dropdown pb10 margin-0 {eq name="$keyLineGroup" value="1"}active {/eq}'
|
||||
id="line_head_{$strPlayGroupName}"
|
||||
onclick="checkLine('{$strPlayGroupName}')">
|
||||
<a href='javascript:;' >
|
||||
{$strPlayGroupName}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{/foreach}
|
||||
</ul>
|
||||
换线路:
|
||||
</div>
|
||||
<div class="tab-content mb10">
|
||||
<?php $keyLine = 0;?>
|
||||
{foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType }
|
||||
<?php $keyLine ++ ;?>
|
||||
<div id="playlist_{$strPlayGroupName}" class='tab-pane fade in clearfix {eq name="$keyLine" value="1"}active {/eq}'>
|
||||
<ul class="myui-content__list playlist clearfix" id="playlist">
|
||||
{volist name='$arrPlayUrlType' id='arrPlayUrl'}
|
||||
<li class="col-lg-3 col-md-2 col-sm-5 col-xs-4 active">
|
||||
<a class="btn btn-default btn-warm"
|
||||
href='{site:vpurl v_id="$arrVideo.v_id" v_py="$arrVideo.v_name_en" play_type="$strPlayGroupName" play_index="$i" /}'>
|
||||
{$arrPlayUrl.name}
|
||||
</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="myui-player__data hidden-xs clearfix">
|
||||
<h3>
|
||||
<a class="text-fff" href="/voddetail/71202.html">{$arrVideo.v_name}</a>
|
||||
<small class="text-muted">第{$Request.route.intPlayIndex}集</small>
|
||||
</h3>
|
||||
<p class="text-muted margin-0">
|
||||
{$arrVideo.v_publish_date}更新
|
||||
/
|
||||
<span class="text-red">{$arrVideo.v_score}分</span>
|
||||
/
|
||||
<a class="text-muted">{$arrVideo.v_parent_category}</a>
|
||||
/<a class="text-muted">
|
||||
{$arrVideo.v_category} /
|
||||
{volist name='$arrVideo.v_area' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist} </a>
|
||||
/
|
||||
<a class="text-muted">{$arrVideo.v_year}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col-lg-wide-75 col-xs-1 padding-0">
|
||||
<div class="myui-panel myui-panel-bg clearfix" id="desc">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head active bottom-line clearfix">
|
||||
<h3 class="title"><img src="/template/videoboku/images/juqing.png">剧情简介</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<div class="col-pd text-collapse content">
|
||||
<p>
|
||||
<span class="text-muted">导演:</span>
|
||||
{volist name='$arrVideo.v_director' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
</p>
|
||||
<p class="myui-content__tag">关键词:
|
||||
</p>
|
||||
<span
|
||||
《{$arrVideo.v_name}》是一部在
|
||||
{volist name='$arrVideo.v_area' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
上映的导演的日韩动漫影视作品,影片的导演是
|
||||
{volist name='$arrVideo.v_director' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
{$arrVideo.v_description|raw}
|
||||
想要看更多的
|
||||
<a href="#" title="{$DomainModel->d_name}_{$arrVideo.v_name}" >《{$arrVideo.v_name}》</a>
|
||||
相关影视作品,请关注
|
||||
<a href="/" title="{$DomainModel->d_name}" >{$DomainModel->d_domain}</a>!
|
||||
</span>
|
||||
<span class="data"
|
||||
style="display: none;">
|
||||
《{$arrVideo.v_name}》是一部在
|
||||
{volist name='$arrVideo.v_area' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
上映的导演的日韩动漫影视作品,影片的导演是
|
||||
{volist name='$arrVideo.v_director' id='vo' key='index'}
|
||||
<a href='{site:vsurl key="$vo" p="1"/}'>{$vo}</a>
|
||||
|
||||
{/volist}
|
||||
{$arrVideo.v_description|raw}
|
||||
想要看更多的
|
||||
<a href="#" title="{$DomainModel->d_name}_{$arrVideo.v_name}" >《{$arrVideo.v_name}》</a>
|
||||
相关影视作品,请关注
|
||||
<a href="/" title="{$DomainModel->d_name}" >{$DomainModel->d_domain}</a>!
|
||||
</span>
|
||||
<a
|
||||
class="details text-link" href="javascript:;">
|
||||
详情
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_bd">
|
||||
<div class="myui-panel_hd">
|
||||
<div id="pl" class="myui-panel__head clearfix">
|
||||
<h3 class="title">影片评论</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title"><img src="/template/videoboku/images/zb.png">猜你喜欢</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist__bd clearfix">
|
||||
{video:list count="12"
|
||||
v_category_en="$arrVideo.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" start="0" col-lg="6"/}
|
||||
{/video:list}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title"><img src="/template/videoboku/images/see.png">大家正在看</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist__bd clearfix">
|
||||
{video:list count="12"
|
||||
v_category_en="$arrVideo.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" start="13" col-lg="6"/}
|
||||
{/video:list}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-wide-25 col-xs-1 myui-sidebar">
|
||||
<div class="visible-inline-lg">
|
||||
<div class="myui-panel myui-panel-bg clearfix">
|
||||
<div class="myui-panel-box clearfix">
|
||||
<div class="myui-panel_hd">
|
||||
<div class="myui-panel__head clearfix">
|
||||
<h3 class="title">热播榜</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="myui-panel_bd">
|
||||
<ul class="myui-vodlist__media active col-pd clearfix">
|
||||
{video:ranklist count="1"
|
||||
v_parent_category_en="$arrVideo.v_parent_category_en"
|
||||
v_category_en="$arrVideo.v_category_en"
|
||||
sort_type="total"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
<li>
|
||||
<div class="thumb">
|
||||
<a class="myui-vodlist__thumb img-xs-70"
|
||||
style="background: url({$Video.v_pic});"
|
||||
href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}'
|
||||
title="{$Video.v_name ?? ''} - {$Video.v_parent_category ?? ''}{$Video.v_category ?? ''}免费高清电影在线观看"
|
||||
data-original="{$Video.v_pic}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="detail detail-side">
|
||||
<h6 class="title">
|
||||
<a href='{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}' >
|
||||
<i class="fa fa-angle-right text-muted pull-right"></i>
|
||||
{$Video.v_name}
|
||||
</a>
|
||||
</h6>
|
||||
<p class="font-12"><span class="text-muted">类型:</span>{$Video.v_parent_category}</p>
|
||||
<p class="font-12"><span class="text-muted">地区:</span>
|
||||
{volist name='$Video.v_area' id='vo' key='index'}
|
||||
{$vo}
|
||||
{/volist}
|
||||
</p>
|
||||
<p class="font-12 margin-0"><span class="text-muted">主演:</span>
|
||||
{volist name='$Video.v_actor' id='vo' key='index'}
|
||||
{$vo}
|
||||
|
||||
{/volist}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
<ul class="myui-vodlist__text col-pd clearfix">
|
||||
{video:ranklist count="30"
|
||||
v_parent_category_en="$arrVideo.v_parent_category_en"
|
||||
v_category_en="$arrVideo.v_category_en"
|
||||
sort_type="total"
|
||||
d_key="key" d_val="Video" cache_life="86400"}
|
||||
{if $key >0}
|
||||
{include file="public/video-list-phb" start="25"/}
|
||||
{/if}
|
||||
{/video:ranklist}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
function checkLine(val){
|
||||
|
||||
//点击 通过传递过来的 当前元素id ,组建2个 id ,一个是 head id 一个是列表id
|
||||
// 1.给当前元素 添加类名 activ ,其它兄弟元素 删除 activee
|
||||
|
||||
|
||||
// 构造 ID(去掉 # 前缀)
|
||||
let strLineHeadId = `line_head_${val}`;
|
||||
let strLineListId = `playlist_${val}`;
|
||||
|
||||
// 获取 DOM 元素
|
||||
let headElement = document.getElementById(strLineHeadId);
|
||||
let listElement = document.getElementById(strLineListId);
|
||||
|
||||
// 1. 处理头部导航的 active 类
|
||||
let navItems = document.querySelectorAll('.nav-tabs li');
|
||||
navItems.forEach(item => {
|
||||
if (item.id === strLineHeadId) {
|
||||
item.classList.add('active');
|
||||
} else {
|
||||
item.classList.remove('active');
|
||||
}
|
||||
});
|
||||
|
||||
// 2. 处理播放列表的 active 类
|
||||
let tabPanes = document.querySelectorAll('.tab-content .tab-pane');
|
||||
tabPanes.forEach(pane => {
|
||||
if (pane.id === strLineListId) {
|
||||
pane.classList.add('active');
|
||||
} else {
|
||||
pane.classList.remove('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
const strVideoId = `{$arrVideo.v_id}`;
|
||||
const arrVideo = {
|
||||
'v_id': `{$arrVideo['v_id']}`,
|
||||
'v_name_en': `{$arrVideo['v_name_en']}`,
|
||||
'v_pic': `{$arrVideo['v_pic']}`,
|
||||
'v_name': `{$arrVideo['v_name']}`,
|
||||
'v_description': `{$arrVideo['v_description']}`,
|
||||
'v_publish_date': `{$arrVideo['v_publish_date']}`,
|
||||
'v_remarks': `{$arrVideo['v_remarks']}`,
|
||||
'v_category': `{$arrVideo['v_category']}`,
|
||||
'v_parent_category': `{$arrVideo['v_parent_category']}`,
|
||||
'v_year': `{$arrVideo['v_year']}`,
|
||||
};
|
||||
var intPlayUrlIndex = '{$Request.route.intPlayIndex}'
|
||||
var strPlayType = '{$Request.route.strPlayType}'
|
||||
var intJumpTimeFirst = 1;
|
||||
var intJumpTimeTwoStart = 1;
|
||||
var intJumpTimeTwoEnd = 1;
|
||||
var arrPlayUrl = {$arrVideo.v_play_url | json_encode | raw};
|
||||
var strPlayUrl = ""
|
||||
</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}
|
||||
292
code/app/home/view/videoBoKu/推广优化记录/首页/上先前ai排查.md
Normal file
292
code/app/home/view/videoBoKu/推广优化记录/首页/上先前ai排查.md
Normal file
@@ -0,0 +1,292 @@
|
||||
以下是对提供的视频站点首页(`video2.com`)SEO优化的分析和建议,重点针对中国大陆的浏览搜索排名(如百度),结合同行影视站点的常见优化策略,确保排名提升至首页。分析涵盖现有代码的优点、不足,并提供具体改进建议。
|
||||
|
||||
---
|
||||
|
||||
### 现有SEO优点
|
||||
1. **TKD(Title, Keywords, Description)设置**:
|
||||
- 标题包含核心关键词(如“大地资源网在线观看免费官网”“2024大地影院免费高清电视剧大全”),长度适中(约60字符),符合百度要求。
|
||||
- 关键词和描述包含热门搜索词(如“免费视频”“高清电视剧”),与影视站点用户搜索习惯高度相关。
|
||||
- 使用`{{{video_type}}}`占位符,动态插入内容(如“动作片”),提升页面相关性。
|
||||
|
||||
2. **结构化数据**:
|
||||
- 包含`WebSite`、`VideoObject`和`CollectionPage`的JSON-LD结构化数据,增强百度富媒体展示(如视频缩略图、评分)。
|
||||
- `ItemList`列出具体影片,包含名称、描述、演员、图片等,利于搜索引擎理解内容。
|
||||
|
||||
3. **站内链接**:
|
||||
- 导航链接(如`/vodtype/dian-ying`)和内容链接(如`/voddetail/wu-ren-guo-jing-140361`)结构清晰,URL规范化,利于爬虫抓取。
|
||||
- 提供“更多”链接(如`/vodtype-dian-ying/all-all-all-all/all-page1`),引导用户深入浏览,增加页面权重。
|
||||
|
||||
4. **Sitemap和Robots**:
|
||||
- 提供多种地图链接(XML、RSS、百度Sitemap等),便于搜索引擎快速收录。
|
||||
- `robots.txt`支持,明确爬虫规则。
|
||||
|
||||
5. **响应式设计**:
|
||||
- 使用`meta viewport`和响应式网格(如`col-lg-4 col-md-4`),适配PC和移动端,提升用户体验和移动端排名。
|
||||
|
||||
6. **社交媒体标签**:
|
||||
- `og:title`、`og:description`等Open Graph标签支持社交媒体分享,增加外部流量来源。
|
||||
|
||||
---
|
||||
|
||||
### SEO不足及优化建议
|
||||
以下是首页SEO的不足之处及具体改进建议,针对中国大陆影视站点特点(如百度算法偏好)优化。
|
||||
|
||||
#### 1. **标题(Title)优化**
|
||||
**问题**:
|
||||
- 标题过长(约70字符,含“https://video1.com-大地”),可能被截断,影响展示效果。
|
||||
- 包含重复关键词(如“大地”出现多次),降低关键词密度效率。
|
||||
- 包含无关域名(`https://video1.com`),与实际域名(`video2.com`)不一致,易引起搜索引擎混淆。
|
||||
|
||||
**建议**:
|
||||
- 精简标题,控制在60字符以内,突出核心关键词,避免重复。
|
||||
- 移除无关域名,使用实际域名(`video2.com`)增强品牌一致性。
|
||||
- 示例优化标题:
|
||||
```html
|
||||
<title>大地影视-2024免费高清电影电视剧在线观看-video2.com</title>
|
||||
```
|
||||
|
||||
#### 2. **关键词(Keywords)优化**
|
||||
**问题**:
|
||||
- 关键词列表较长,部分词(如“短视频”“预告片”)与主站内容(电影、电视剧)相关性较低。
|
||||
- 关键词堆砌(如“大地影院大全在线观看”“大地”),可能被百度视为过度优化。
|
||||
- 未包含长尾关键词(如“免费电影在线观看”“2024最新电视剧”),错失精准流量。
|
||||
|
||||
**建议**:
|
||||
- 精选5-8个高相关性关键词,包含品牌词(如“大地影视”)和长尾词。
|
||||
- 避免重复和无关词,突出用户搜索意图。
|
||||
- 示例优化关键词:
|
||||
```html
|
||||
<meta name="keywords" content="大地影视,免费电影,2024最新电视剧,高清综艺,动漫在线观看,短剧大全,video2.com">
|
||||
```
|
||||
|
||||
#### 3. **描述(Description)优化**
|
||||
**问题**:
|
||||
- 描述过长(约180字符),可能被截断,影响点击率。
|
||||
- 包含无效URL(`www.https://video1.com`),格式错误,降低可信度。
|
||||
- 关键词堆砌(如“大地影视”重复出现),未突出独特卖点(如“无广告”)。
|
||||
- `{{{video_type}}}`占位符在首页可能未正确替换,导致描述不完整。
|
||||
|
||||
**建议**:
|
||||
- 控制描述在120-160字符,简洁突出免费、高清、无广告等卖点。
|
||||
- 修正URL为`video2.com`,确保一致性。
|
||||
- 确保`{{{video_type}}}`在首页有默认值(如“电影”)或移除。
|
||||
- 示例优化描述:
|
||||
```html
|
||||
<meta name="description" content="大地影视(video2.com)提供2024最新免费高清电影、电视剧、综艺、动漫和短剧,无广告在线观看,每日更新,畅享极致影视体验!">
|
||||
```
|
||||
|
||||
#### 4. **URL规范化**
|
||||
**问题**:
|
||||
- 页面URL(`https://video2.com`)与描述中的`https://video1.com`不一致,可能导致权重分散。
|
||||
- 部分链接(如`/news/52050.html`)指向非视频内容,降低页面主题相关性。
|
||||
- 热门搜索链接(如`/news/52050.html`)重复指向同一页面,浪费爬虫资源。
|
||||
|
||||
**建议**:
|
||||
- 统一使用`https://video2.com`作为规范URL,添加`rel="canonical"`标签:
|
||||
```html
|
||||
<link rel="canonical" href="https://video2.com">
|
||||
```
|
||||
- 将热门搜索链接改为视频详情页(如`/voddetail/gu-mu-li-ying-guo-yu-140357`),提高相关性。
|
||||
- 检查站内链接,确保无404或重定向错误。
|
||||
|
||||
#### 5. **结构化数据改进**
|
||||
**问题**:
|
||||
- `VideoObject`的`thumbnailUrl`指向详情页URL而非图片URL,格式错误。
|
||||
- `uploadDate`格式为`25-05-08`,不符ISO 8601标准(如`2025-05-08`)。
|
||||
- 部分影片描述为空(如“铁鹰战士4”),影响富媒体展示效果。
|
||||
- `aggregateRating`的`ratingValue`多为`0.0`,缺乏真实评分数据。
|
||||
|
||||
**建议**:
|
||||
- 修正`thumbnailUrl`为实际图片URL(如`/img/video/2025/01/27/22/wu-ren-guo-jing.webp`)。
|
||||
- 规范化`uploadDate`为`YYYY-MM-DD`格式。
|
||||
- 为每部影片补充简短描述(50-100字),提高信息完整性。
|
||||
- 若无真实评分,移除`aggregateRating`或用默认值(如`5.0`)。
|
||||
- 示例优化片段:
|
||||
```json
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "VideoObject",
|
||||
"name": "大地影视热门推荐预告片",
|
||||
"description": "观看大地影视最新电影和电视剧的精彩预告片!",
|
||||
"thumbnailUrl": "https://video2.com/img/video/2025/01/27/22/wu-ren-guo-jing.webp",
|
||||
"uploadDate": "2025-05-08",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "大地影视"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 6. **内容优化**
|
||||
**问题**:
|
||||
- 首页内容偏少,部分模块(如“最新电视剧”“最新综艺”)的`<ul>`为空,降低页面信息量。
|
||||
- 影片简介过长(如“无人过境”超300字),可能影响加载速度和用户体验。
|
||||
- 缺少关键词密度优化,核心词(如“免费观看”“高清影视”)出现频率低。
|
||||
|
||||
**建议**:
|
||||
- 填充空模块,至少展示3-5条内容,增加页面信息量。
|
||||
- 简介控制在100-150字,超出部分移至详情页,首页仅展示摘要。
|
||||
- 在`<h2>`、`<p>`中适度插入关键词(如“免费高清电影”),但避免堆砌。
|
||||
- 示例优化影片项:
|
||||
```html
|
||||
<div class="dbbcf6 lvshicms-vodlist__detail">
|
||||
<h2 class="c9c8c4 title text-overflow">
|
||||
<a href="/voddetail/wu-ren-guo-jing-140361" title="无人过境免费观看">无人过境</a>
|
||||
</h2>
|
||||
<p class="ed925a text text-overflow text-muted hidden-xs">
|
||||
简介: 西北小镇混混老姜欲雇凶杀人,高启义为筹医药费假冒杀手,引发连环追杀。免费高清在线观看,精彩公路冒险!
|
||||
</p>
|
||||
</div>
|
||||
```
|
||||
|
||||
#### 7. **导航优化**
|
||||
**问题**:
|
||||
- 导航下拉菜单(如“电影”“电视剧”)的子项链接(如`/vodtype-all/dong-zuo-pian-all-all-all/all-page1`)层级过深,增加爬虫抓取难度。
|
||||
- 热门搜索模块的链接指向`/news`而非视频详情页,降低转化率。
|
||||
- 导航未使用面包屑导航,影响用户体验和SEO权重传递。
|
||||
|
||||
**建议**:
|
||||
- 简化URL层级,如将`/vodtype-all/dong-zuo-pian-all-all-all/all-page1`改为`/movie/action/page1`。
|
||||
- 将热门搜索链接指向视频详情页(如`/voddetail/gu-mu-li-ying-guo-yu-140357`)。
|
||||
- 添加面包屑导航:
|
||||
```html
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/">首页</a></li>
|
||||
<li class="breadcrumb-item"><a href="/vodtype/dian-ying">电影</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">动作片</li>
|
||||
</ol>
|
||||
</nav>
|
||||
```
|
||||
|
||||
#### 8. **图片优化**
|
||||
**问题**:
|
||||
- 图片未使用`alt`属性(如`<img>`或背景图),错失关键词优化机会。
|
||||
- 图片URL(如`/img/video/2025/01/27/22/wu-ren-guo-jing.webp`)未压缩,增加加载时间。
|
||||
- 懒加载属性(`data-src`)未全面覆盖,可能影响首屏加载。
|
||||
|
||||
**建议**:
|
||||
- 为所有图片添加`alt`属性,包含关键词:
|
||||
```html
|
||||
<a class="d0ff14 lvshicms-vodlist__thumb lazyload" ...>
|
||||
<img src="/img/video/2025/01/27/22/wu-ren-guo-jing.webp" alt="无人过境免费高清电影海报" style="display:none;">
|
||||
</a>
|
||||
```
|
||||
- 使用工具(如TinyPNG)压缩图片,减少文件大小。
|
||||
- 确保所有图片使用`data-src`和`data-original`,并验证懒加载脚本有效。
|
||||
|
||||
#### 9. **加载速度优化**
|
||||
**问题**:
|
||||
- 加载多个CSS文件(`plugins.css`、`global.css`等),增加HTTP请求。
|
||||
- JS文件(如`jquery-3.7.1.min.js`)未使用defer或async,阻塞渲染。
|
||||
- 百度推送脚本重复加载(`<head>`和`<body>`各一次)。
|
||||
|
||||
**建议**:
|
||||
- 合并CSS文件为单一文件,减少请求:
|
||||
```html
|
||||
<link rel="stylesheet" href="/template/videodingzhu/css/combined.css" type="text/css">
|
||||
```
|
||||
- 为非关键JS添加`defer`或`async`:
|
||||
```html
|
||||
<script src="/public/jquery/jquery-3.7.1.min.js" defer></script>
|
||||
```
|
||||
- 删除重复的百度推送脚本,仅保留`<head>`中的:
|
||||
```html
|
||||
<script src="http://push.zhanzhang.baidu.com/push.js"></script>
|
||||
```
|
||||
|
||||
#### 10. **移动端体验**
|
||||
**问题**:
|
||||
- 移动端搜索表单的占位符(“输入主演名或影片名”)未突出免费观看优势。
|
||||
- 部分模块(如“好莱坞榜单”)在移动端隐藏(`hidden-xs`),减少信息量。
|
||||
- 未启用AMP(加速移动页面)或PWA(渐进式Web应用)。
|
||||
|
||||
**建议**:
|
||||
- 修改搜索占位符,突出卖点:
|
||||
```html
|
||||
<input class="d1f534 mobile-search-input" name="keyword" placeholder="搜索免费高清电影或主演">
|
||||
```
|
||||
- 在移动端显示简版榜单(如前3项),增加内容:
|
||||
```html
|
||||
<div class="a51b92 col-md-wide-25 hidden-md hidden-lg">
|
||||
<!-- 简版榜单 -->
|
||||
</div>
|
||||
```
|
||||
- 考虑引入AMP版本(如`/amp/index.html`)或PWA,提升移动端加载速度和用户留存。
|
||||
|
||||
#### 11. **外部链接与友链**
|
||||
**问题**:
|
||||
- 友情链接模块(`<ul class="a085fb lvshicms-link__text">`)为空,错失权重传递机会。
|
||||
- 未利用站外链接(如知乎、微博)引导流量。
|
||||
|
||||
**建议**:
|
||||
- 添加5-10个高质量友情链接,优先选择影视相关站点:
|
||||
```html
|
||||
<ul class="a085fb lvshicms-link__text clearfix">
|
||||
<li><a href="https://example.com" target="_blank">影视资源站</a></li>
|
||||
</ul>
|
||||
```
|
||||
- 在社交媒体(如微博)创建官方账号,发布视频预告,添加`video2.com`链接。
|
||||
|
||||
#### 12. **其他细节**
|
||||
**问题**:
|
||||
- `<html lang="zh">`未指定具体语言(如`zh-CN`),可能影响区域化SEO。
|
||||
- 部分影片评分(`ratingValue: 0.0`)不可信,降低用户信任。
|
||||
- 未设置HSTS(HTTP严格传输安全),影响安全性评分。
|
||||
|
||||
**建议**:
|
||||
- 修改语言为`zh-CN`:
|
||||
```html
|
||||
<html lang="zh-CN">
|
||||
```
|
||||
- 为热门影片添加真实评分(如基于豆瓣或用户评分)。
|
||||
- 启用HSTS:
|
||||
```html
|
||||
<meta http-equiv="Strict-Transport-Security" content="max-age=31536000; includeSubDomains">
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 综合优化后的首页TKD示例
|
||||
```html
|
||||
<title>大地影视-2024免费高清电影电视剧在线观看-video2.com</title>
|
||||
<meta name="keywords" content="大地影视,免费电影,2024最新电视剧,高清综艺,动漫在线观看,短剧大全,video2.com">
|
||||
<meta name="description" content="大地影视(video2.com)提供2024最新免费高清电影、电视剧、综艺、动漫和短剧,无广告在线观看,每日更新,畅享极致影视体验!">
|
||||
<link rel="canonical" href="https://video2.com">
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 实施优先级
|
||||
1. **高优先级**(立即修复,影响排名):
|
||||
- 修正标题、关键词、描述(精简、统一域名)。
|
||||
- 规范化URL,添加`rel="canonical"`。
|
||||
- 填充空模块,优化简介长度。
|
||||
|
||||
2. **中优先级**(1-2周内优化):
|
||||
- 改进结构化数据(修正`thumbnailUrl`、`uploadDate`)。
|
||||
- 压缩图片,合并CSS/JS。
|
||||
- 添加面包屑导航和友情链接。
|
||||
|
||||
3. **低优先级**(长期优化):
|
||||
- 引入AMP/PWA。
|
||||
- 建立社交媒体账号。
|
||||
- 启用HSTS。
|
||||
|
||||
---
|
||||
|
||||
### 同行对比分析
|
||||
通过分析中国大陆影视站点(如爱奇艺、腾讯视频、免费影视站),常见SEO策略包括:
|
||||
- **关键词聚焦**:突出“免费”“高清”“在线观看”,长尾词覆盖广泛(如“2024最新动作片免费观看”)。
|
||||
- **内容丰富**:首页展示多类型内容(电影、电视剧、综艺等),每日更新。
|
||||
- **技术优化**:CDN加速、图片压缩、懒加载全面应用。
|
||||
- **外部引流**:通过微博、抖音、贴吧发布短视频或预告,引导流量。
|
||||
|
||||
**建议**:参考爱奇艺的动态TKD和内容密度,结合免费站点的关键词策略(如“无广告”),在首页增加短视频预告模块,吸引用户停留。
|
||||
|
||||
---
|
||||
|
||||
### 总结
|
||||
当前首页SEO基础良好,但存在标题冗长、URL不统一、内容空缺等问题。通过精简TKD、规范化URL、填充内容、优化图片和加载速度,可显著提升百度排名。建议优先实施高优先级优化,并结合社交媒体引流,1-2个月内有望进入首页。
|
||||
|
||||
若需具体代码调整(如某个模块的实现)或进一步分析(如竞争对手关键词),请提供更多细节!
|
||||
Reference in New Issue
Block a user