Merge branch 'dev' of ssh://git.bgbg.live:18150/root/SEONexus into dev
This commit is contained in:
@@ -32,21 +32,29 @@ button_num="5" cache_life="86400" func="generateCategoryPager" export_name="resD
|
|||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}'
|
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{else}
|
{else}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -69,7 +77,7 @@ button_num="5" cache_life="86400" func="generateCategoryPager" export_name="resD
|
|||||||
{block name="main"}
|
{block name="main"}
|
||||||
|
|
||||||
|
|
||||||
<p class="site-description">{$strDescription??''}</p>
|
<h2 class="site-description">{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}</h2>
|
||||||
|
|
||||||
<div class="navpf">
|
<div class="navpf">
|
||||||
<nav class="sortChannel_nav">
|
<nav class="sortChannel_nav">
|
||||||
|
|||||||
@@ -31,21 +31,29 @@ button_num="10" cache_life="86400" func="generateCategoryPager" export_name="res
|
|||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}'
|
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{else}
|
{else}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -31,21 +31,29 @@ button_num="10" cache_life="86400" func="generateCategoryPager" export_name="res
|
|||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{else}
|
{else}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": 'https://{$DomainModel->d_domain}{site:nflurl gender="$Request.route.strGender" category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -32,21 +32,29 @@ button_num="10" cache_life="86400" func="generateCategoryPager" export_name="res
|
|||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{else}
|
{else}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": 'https://{$DomainModel->d_domain}{site:nflurl gender="$Request.route.strGender" category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -2,28 +2,21 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh">
|
<html lang="zh">
|
||||||
<head>
|
<head>
|
||||||
{block name="get-data"}
|
{block name="get-data"}{/block}
|
||||||
{/block}
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
|
<meta name="theme-color" content="#000">
|
||||||
|
<meta name="robots" content="index, follow">
|
||||||
|
|
||||||
<title>{block name="title"}{/block}</title>
|
<title>{block name="title"}{/block}</title>
|
||||||
<meta name="keywords" content='{block name="keywords"}{/block}'>
|
<meta name="keywords" content='{block name="keywords"}{/block}'>
|
||||||
<meta name="description" content='{block name="description"}{/block}'>
|
<meta name="description" content='{block name="description"}{/block}'>
|
||||||
|
|
||||||
<meta charset="UTF-8">
|
<link rel="shortcut icon" href="/template/shikong/img/favicon.ico" type="image/x-icon">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="theme-color" content="#000">
|
|
||||||
<meta name="viewport"
|
|
||||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
||||||
<meta http-equiv="Cache-Control" content="no-transform">
|
|
||||||
<meta http-equiv="Cache-Control" content="no-siteapp">
|
|
||||||
<meta name="applicable-device" content="mobile">
|
|
||||||
<meta name="c" c="0">
|
|
||||||
<meta name="my" k="aporn">
|
|
||||||
<!-- <base target="_blank"> -->
|
<!-- <base target="_blank"> -->
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" href="/favicon.ico" type="image/x-icon">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/template/shikong/css/bootstrap.px.min.css">
|
<link rel="stylesheet" type="text/css" href="/template/shikong/css/bootstrap.px.min.css">
|
||||||
<link rel="stylesheet" type="text/css" href="/template/shikong/css/bootstrap-icons.css">
|
<link rel="stylesheet" type="text/css" href="/template/shikong/css/bootstrap-icons.css">
|
||||||
<link href="/template/shikong/huiyuan/js/plugin/layer/need/layer.css" rel="stylesheet">
|
<link href="/template/shikong/huiyuan/js/plugin/layer/need/layer.css" rel="stylesheet">
|
||||||
@@ -37,62 +30,35 @@
|
|||||||
{block name="head-css"}{/block}
|
{block name="head-css"}{/block}
|
||||||
|
|
||||||
<script type="text/javascript" src="/template/shikong/js/jquery-2.2.4.min.js"></script>
|
<script type="text/javascript" src="/template/shikong/js/jquery-2.2.4.min.js"></script>
|
||||||
<script type="application/javascript"
|
|
||||||
src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/Swiper/8.0.6/swiper-bundle.min.js" defer></script>
|
|
||||||
<script type="text/javascript" src="/template/shikong/js/lozad.min.js"></script>
|
<script type="text/javascript" src="/template/shikong/js/lozad.min.js"></script>
|
||||||
<script src="/template/shikong/vendor/layer/layer.js" type="module" charset="utf-8"></script>
|
<script src="/template/shikong/vendor/layer/layer.js" type="module" charset="utf-8"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
|
<script type="text/javascript" src='/template/shikong/js/index.js'></script>
|
||||||
<script type="text/javascript" src="/template/shikong/js/qrcode.min.js"></script>
|
|
||||||
<script type="text/javascript" src="/template/shikong/js/enc/public.min.js"></script>
|
|
||||||
<!-- <script type="text/javascript" src='/template/shikong/js/enc/qd.min.js?version={site:cfg code="STATIC_FILE_VERSION" encode="false"/}'></script> -->
|
|
||||||
<script type="text/javascript" src='/template/shikong/js/index-247463.js'></script>
|
|
||||||
|
|
||||||
{block name="head-js"}{/block}
|
{block name="head-js"}{/block}
|
||||||
|
|
||||||
|
{block name="head"}{/block}
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body style="font-size: 14px;" class='{block name="body-class"}{/block}' >
|
<body style="font-size: 14px;" class='{block name="body-class"}{/block}' >
|
||||||
<div class="v-s-nav-box-h">
|
<div class="v-s-nav-box-h">
|
||||||
<div class="s-main-box">
|
<div class="s-main-box">
|
||||||
|
|
||||||
<div class="s-logo">
|
<div class="s-logo">
|
||||||
<a href="/">
|
{block name="logo-html"}
|
||||||
<h1 >—{$DomainModel->d_name}—</h1>
|
|
||||||
<p>{$DomainModel->d_domain}</p>
|
{/block}
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="v-s-nav-search-box3">
|
<div class="v-s-nav-search-box3">
|
||||||
<a href="/searchhome/0.html">
|
<a href="/searchhome/0.html">
|
||||||
<div class="s-search">
|
<div class="s-search">
|
||||||
<i class="s-icon-search"></i>
|
<i class="s-icon-search"></i>
|
||||||
<span class="s-tips">点击搜索</span>
|
<span class="s-tips">点击搜索</span>
|
||||||
<div class="s-tags">
|
|
||||||
<span class="s-link-tag"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- <div class="s-main-box-middle" style="max-height:1rem">
|
|
||||||
<div
|
|
||||||
class="swiper swiper-top-zxcv swiper-initialized swiper-horizontal swiper-pointer-events swiper-ios swiper-backface-hidden">
|
|
||||||
<div class="swiper-wrapper">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="swiper-slide" style="max-height:1rem">
|
|
||||||
<a href="{gg_tiao_zhuan_di_zhi}" target="_blank">
|
|
||||||
<img src="{gg_tu_pian}" style="display: block;width:100%;max-height:1rem" alt="">
|
|
||||||
<div class="content">{gg_wen_zi|customEntities|raw}</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="swiper-pagination"></div>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
let pageId = "#{block name='nav-active-class'}{/block}" +"-page"
|
let pageId = "#{block name='nav-active-class'}{/block}" +"-page"
|
||||||
@@ -129,58 +95,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="content-box">
|
<div class="content-box">
|
||||||
|
|
||||||
<!-- <div style="margin-top:0px;width:100%;">
|
|
||||||
<div class="main-box">
|
|
||||||
<div class="alert alert-primary" style="padding: 5px 10px;margin-bottom:0;border-radius:0px;"><strong><i
|
|
||||||
class="bi bi-bell-fill"></i></strong>
|
|
||||||
<div id="scroll-outer" class="scroll__outer">
|
|
||||||
<div id="scroll-inner" class="scroll__inner"
|
|
||||||
style="transform: translate3d(-180.5px, 0px, 0px);">
|
|
||||||
<div class="scroll__text">
|
|
||||||
{site:wz wz="本站永久域名" /}:{$DomainModel->d_domain},{site:wz wz="请收藏!发送任意邮件至" /}{site:site valcode='site_email' encode='false'/} {site:wz wz="也可秒得最新地址!" /}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="scroll__text" id="last-text">
|
|
||||||
{site:wz wz="本站永久域名" /}:{$DomainModel->d_domain},{site:wz wz="请收藏!发送任意邮件至" /}{site:site valcode='site_email' encode='false'/} {site:wz wz="也可秒得最新地址!" /}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="item-box" style="margin-top:0;">
|
<div class="item-box" style="margin-top:0;">
|
||||||
<div class="main-box">
|
<div class="main-box">
|
||||||
<!-- <div class="index-items-wrap">
|
|
||||||
<div class="grid-box-s2">
|
|
||||||
<div>
|
|
||||||
<img class="pre-img lozad"
|
|
||||||
data-src="{gg_tu_pian}?v={site:cfg code='STATIC_FILE_VERSION' encode='false'/}"
|
|
||||||
src="/template/shikong/images/loading_img_bg_default.jpg?v={site:cfg code='STATIC_FILE_VERSION' encode='false'/}">
|
|
||||||
<a href="{gg_tiao_zhuan_di_zhi}" rel="external nofollow" target="_blank" alt="12">
|
|
||||||
<div class="name">{gg_wen_zi|customEntities|raw}</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<!-- <div class="p-card-box">
|
|
||||||
<dl>
|
|
||||||
|
|
||||||
<dt>
|
|
||||||
<div class="item">
|
|
||||||
<a href="{gg_tiao_zhuan_di_zhi}" alt="19"
|
|
||||||
target="_blank">
|
|
||||||
<b>{gg_wen_zi|customEntities|raw}</b>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</dt>
|
|
||||||
|
|
||||||
</dl>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,110 +0,0 @@
|
|||||||
<html lang="zh">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
|
||||||
<meta name="renderer" content="webkit">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
||||||
<meta http-equiv="Cache-Control" content="no-cache,must-revalidate">
|
|
||||||
<meta http-equiv="Cache-Control" content="no-siteapp">
|
|
||||||
<meta http-equiv="Cache-Control" content="no-transform">
|
|
||||||
<meta name="robots" content="index, follow" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<title>{block name="title"}{/block}</title>
|
|
||||||
<meta name="keywords" content='{block name="keywords"}{/block}'>
|
|
||||||
<meta name="description" content='{block name="description"}{/block}'>
|
|
||||||
<meta http-equiv="mobile-agent" content="format=html5; url={$DomainModel->d_domain}">
|
|
||||||
<meta name="shenma-site-verification" content="941546c24f6fa26aab1a1c67341a9e07_1653579597">
|
|
||||||
<link rel="alternate" type="application/vnd.wap.xhtml+xml" media="handheld"
|
|
||||||
href="{$DomainModel->d_domain}">
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="/template/default/img/favicon.ico" type="image/x-icon">
|
|
||||||
<link href="/public/layer/need/layer.css" rel="stylesheet">
|
|
||||||
<link href="/template/default/pc/css/style.css" rel="stylesheet" type="text/css">
|
|
||||||
{block name="meta-other"}{/block}
|
|
||||||
{block name="head"}{/block}
|
|
||||||
{block name="head-css"}{/block}
|
|
||||||
{block name="head-js"}{/block}
|
|
||||||
<script>
|
|
||||||
const strPcPath = `{$strPcPath}`;
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="novel_home {block name='body-class'}{/block}" id="{block name='body-id'}{/block}">
|
|
||||||
<div class="topbar">
|
|
||||||
<div class="topbar-con">
|
|
||||||
<div class="topbar-sethome"><a href="javascript:winSetHP();">将本站设为首页</a></div>
|
|
||||||
<div class="topbar-addfavorite"><a href="javascript:winAddFav()">收藏{$DomainModel->d_name}</a></div>
|
|
||||||
<div class="topbar-right" id="qs_login"><a href="{$strPcPath}{$strBookShelfUrlTemp}">我的书架</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="header">
|
|
||||||
<h1 class="logo"><a href="{$strPcPath}"><span>{$DomainModel->d_name}</span></a></h1>
|
|
||||||
<form id="novel_search" class="search-form" method="get" action="{$strPcPath}{$strSearchIndexUrlTemp}"><input type="text"
|
|
||||||
class="input-text input-key" name="keyword" placeholder="输入书名/作者进行搜索"><button type="submit"
|
|
||||||
class="btn-tosearch" form="novel_search" value="submit">搜索</button></form>
|
|
||||||
</div>
|
|
||||||
<ul class="nav">
|
|
||||||
{if $DomainModel->info_id > 0}
|
|
||||||
<li><a href="{$strPcPath}/">首 页</a></li>
|
|
||||||
<li><a href="{$strPcPath}/nindex/">小说首页</a></li>
|
|
||||||
{else}
|
|
||||||
<li><a href="{$strPcPath}/">首 页</a></li>
|
|
||||||
{/if}
|
|
||||||
<!-- <li><a href="/">首 页</a></li>
|
|
||||||
<li><a href="/nindex">小说首页</a></li> -->
|
|
||||||
<!-- <li><a href="{$strPcPath}/">首 页</a></li> -->
|
|
||||||
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
|
|
||||||
<li><a href='{$strPcPath}{site:nflurl category="$strCategoryPinyin" status="all" order="all" page="1"/}'>{$strCategoryName}</a></li>
|
|
||||||
{/novel:category}
|
|
||||||
<li><a href="{$strPcPath}{$strHistoryUrlTemp}">阅读记录</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout layout3 layout-col3">
|
|
||||||
<h2 class="layout-tit">最新标签</h2>
|
|
||||||
<ul class="txt-list txt-list-row5 tag_news">
|
|
||||||
{site:forgelist count="50" d_key="d_key" d_val="ForgeNovel" cache_life="86400"}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nnurl n_id="$ForgeNovel.n_id" n_py="$ForgeNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>
|
|
||||||
{$ForgeNovel.n_forge_title}
|
|
||||||
</a>
|
|
||||||
{/site:forgelist}
|
|
||||||
<a href="/sitemap_index.xml">XML地图</a>
|
|
||||||
<a href="/site.txt">网站地图</a>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="footer" id="footer">
|
|
||||||
<div class="pc-footer">
|
|
||||||
<p>本站所有内容来源于互联网公开且无需登录即可获取的网页内容,本站爬虫遵循robots协议,若您的网站不希望被本站爬虫抓取,可通过屏蔽novelspider字段实现。<br>本站仅对抓取到的内容由程序自动进行排版处理再展现,不涉及更改内容,不针对任何内容表述任何立场。<br>同时您可手动提交相关目标站点网址给我们(站点内容必须允许游客访问,本站爬虫不会抓取需要登录后才展现内容的站点),爬虫程序会依据负载状态自动爬取相关页面。<br>如内容有违规,请通过本站反馈邮箱提交给我们进行删除处理。
|
|
||||||
</p>
|
|
||||||
<p> 反馈邮箱:
|
|
||||||
{site:cfg code="YOU_XIANG" encode="false"/} Inc. All Rights Reserved. </p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="shuqian"></div>
|
|
||||||
<script>
|
|
||||||
const strPushApi = `{site:cfg code="PUSH_API_DOMAIN" encode="false"/}`;
|
|
||||||
</script>
|
|
||||||
<script src="/template/default/pc/js/jquery.min.js"></script>
|
|
||||||
<script src="/public/layer/layer.js" type="module" charset="utf-8"></script>
|
|
||||||
<script src="/template/default/pc/js/common.js"></script>
|
|
||||||
<script src="/template/default/js/common.js"></script>
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
<!-- 全局统计 -->
|
|
||||||
{site:cfg code="PUBLIC_TONGJI_CODE" encode="false"/}
|
|
||||||
|
|
||||||
<!-- 站点统计 -->
|
|
||||||
{$DomainModel->d_statis|raw}
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -34,12 +34,13 @@
|
|||||||
{block name="head-js"}{/block}
|
{block name="head-js"}{/block}
|
||||||
|
|
||||||
{block name="logo-html"}
|
{block name="logo-html"}
|
||||||
<h1 class="bookname">
|
<a href="/">
|
||||||
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>-免费在线阅读热门小说
|
<h1 >-{$DomainModel->d_name}-<p>{$DomainModel->d_text_logo}</p></h1>
|
||||||
</h1>
|
</a>
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
|
<h2 class="site-description">{$DomainModel->d_index_description}</h2>
|
||||||
<div class="layout-root">
|
<div class="layout-root">
|
||||||
<div class="work-content">
|
<div class="work-content">
|
||||||
<div class="entry-point">
|
<div class="entry-point">
|
||||||
@@ -178,9 +179,9 @@
|
|||||||
<div class="">
|
<div class="">
|
||||||
<div class="novel-list mei_ri_gen_xin_list">
|
<div class="novel-list mei_ri_gen_xin_list">
|
||||||
{novel:list count="20" sort_type="update" d_key="key" d_val="Novel" cache_life="86400"}
|
{novel:list count="20" sort_type="update" d_key="key" d_val="Novel" cache_life="86400"}
|
||||||
<a href="" class="list-header">
|
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' class="list-header">
|
||||||
<div class="block_txt ">
|
<div class="block_txt ">
|
||||||
<h2>{$Novel.n_name}</h2>
|
<h3>{$Novel.n_name}</h3>
|
||||||
<p class="xiaoshuo_info">
|
<p class="xiaoshuo_info">
|
||||||
<span>{$Novel.n_category}/ <span>{$Novel.n_author} </span></span>
|
<span>{$Novel.n_category}/ <span>{$Novel.n_author} </span></span>
|
||||||
<span>{:date('m-d')}</span></p>
|
<span>{:date('m-d')}</span></p>
|
||||||
|
|||||||
@@ -1,5 +1,18 @@
|
|||||||
{extend name="baseH5" /}
|
{extend name="baseH5" /}
|
||||||
|
|
||||||
|
{block name="get-data"}
|
||||||
|
|
||||||
|
{novel:pagerexp page="$Request.get.page" limit="30"
|
||||||
|
n_category="$Request.route.strCategory"
|
||||||
|
sort_type="$Request.route.strOrder"
|
||||||
|
n_status="$Request.route.strStatus"
|
||||||
|
d_key="d_key"
|
||||||
|
d_val="Novel"
|
||||||
|
button_num="8" cache_life="86400" func="generateCategoryPager" export_name="resData" /}
|
||||||
|
|
||||||
|
{site:grm page_code="h5_novel_library" diff="$resData.p_data.page" num="40" g_key="arrGrm" /}
|
||||||
|
{/block}
|
||||||
|
|
||||||
{block name="title"}{site:replace code="NOVEL@GETLIBRARY@TITLE"}{/block}
|
{block name="title"}{site:replace code="NOVEL@GETLIBRARY@TITLE"}{/block}
|
||||||
{block name="keywords"}{site:replace code="NOVEL@GETLIBRARY@KEYWORDS"}{/block}
|
{block name="keywords"}{site:replace code="NOVEL@GETLIBRARY@KEYWORDS"}{/block}
|
||||||
{block name="description"}{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}{/block}
|
{block name="description"}{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}{/block}
|
||||||
@@ -16,25 +29,52 @@
|
|||||||
content='https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}' />
|
content='https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}' />
|
||||||
{/if}
|
{/if}
|
||||||
<meta property="og:type" content="book" />
|
<meta property="og:type" content="book" />
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="twitter:title" content='{site:replace code="NOVEL@GETLIBRARY@TITLE"}'>
|
||||||
|
<meta name="twitter:description" content='{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}'>
|
||||||
|
|
||||||
<!-- 结构化数据 -->
|
<!-- 结构化数据 -->
|
||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}'
|
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{else}
|
{else}
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
"@context": "https://schema.org",
|
||||||
"@type": "book",
|
"@type": "CollectionPage",
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "{$DomainModel->d_name}",
|
||||||
|
} ,
|
||||||
|
"itemListElement": [
|
||||||
|
{
|
||||||
|
"@type": "ListItem",
|
||||||
|
"position": 1,
|
||||||
|
"name": "首页",
|
||||||
|
"item": "https://{$DomainModel->d_domain}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"@type": "ListItem",
|
||||||
|
"position": 2,
|
||||||
|
"name": "{site:getval code="strNovelCategoryName" /}",
|
||||||
|
"item": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}'
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -45,28 +85,32 @@
|
|||||||
{block name='nav-active-class'}home{/block}
|
{block name='nav-active-class'}home{/block}
|
||||||
{block name="body-class"}novel_home{/block}
|
{block name="body-class"}novel_home{/block}
|
||||||
|
|
||||||
{block name="logo-html"}
|
|
||||||
<h1 class="bookname">
|
|
||||||
<a href="/"
|
|
||||||
style="color:#ffffff">{$DomainModel->d_name}</a>-{$Request.route.strCategory}{$Request.route.strOrder}{$Request.route.strStatus}免费阅读
|
|
||||||
</h1>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="nav-html"}{/block}
|
{block name="nav-html"}{/block}
|
||||||
|
|
||||||
|
{block name="logo-html"}
|
||||||
|
<a href="/">
|
||||||
|
<h2 >-{$DomainModel->d_name}-<span>{$DomainModel->d_text_logo}</span></h2>
|
||||||
|
</a>
|
||||||
|
{/block}
|
||||||
|
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
|
<h1 class="site-description">{site:getval code="strNovelCategoryName" /}{site:getval code="strNovelOrder" /}{site:getval code="strNovelStatus" /}小说 - 免费在线阅读</h1>
|
||||||
{novel:pagerexp page="$Request.get.page" limit="30"
|
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||||
n_category="$Request.route.strCategory"
|
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||||
sort_type="$Request.route.strOrder"
|
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||||
n_status="$Request.route.strStatus"
|
<a href="/" itemprop="item">
|
||||||
d_key="d_key"
|
<span itemprop="name">首页</span>
|
||||||
d_val="Novel"
|
</a>
|
||||||
button_num="8" cache_life="86400" func="generateCategoryPager" export_name="resData" /}
|
<meta itemprop="position" content="1" />
|
||||||
|
</li>
|
||||||
{site:grm page_code="h5_novel_library" diff="$resData.p_data.page" num="40" g_key="arrGrm" /}
|
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||||
|
<a href="{$strCategoryIndexUrlTemp}" itemprop="item">
|
||||||
<p class="site-description">{$strDescription??''}</p>
|
<span itemprop="name">分类</span>
|
||||||
|
</a>
|
||||||
|
<meta itemprop="position" content="2" />
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
<div class="layout-root">
|
<div class="layout-root">
|
||||||
<div id="classify">
|
<div id="classify">
|
||||||
<div class="w-category">
|
<div class="w-category">
|
||||||
@@ -74,13 +118,13 @@ button_num="8" cache_life="86400" func="generateCategoryPager" export_name="resD
|
|||||||
<div class="list">
|
<div class="list">
|
||||||
|
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<a href="" class="text " id="fenlei_0">{site:wz wz="全部" /}</a>
|
<a href="{$strCategoryIndexUrlTemp}" class="text " id="fenlei_0">{site:wz wz="全部" /}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
|
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<a href='{site:nflurl category="$strCategoryPinyin" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'
|
<a href='{site:nflurl category="$strCategoryPinyin" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'
|
||||||
id="fenlei_{$strCategoryPinyin}" class="text ">
|
id="fenlei_{$strCategoryPinyin}" class="text " title="{$strCategoryName}">
|
||||||
{$strCategoryName}</a>
|
{$strCategoryName}</a>
|
||||||
</div>
|
</div>
|
||||||
{/novel:category}
|
{/novel:category}
|
||||||
@@ -97,7 +141,7 @@ button_num="8" cache_life="86400" func="generateCategoryPager" export_name="resD
|
|||||||
{novel:sort d_key="key" d_val="strSortName"}
|
{novel:sort d_key="key" d_val="strSortName"}
|
||||||
<div class="item" id="paixu_{$key}">
|
<div class="item" id="paixu_{$key}">
|
||||||
<a href='{site:nflurl category="$Request.route.strCategory" order="$key" page="$Request.route.intPage"/}'
|
<a href='{site:nflurl category="$Request.route.strCategory" order="$key" page="$Request.route.intPage"/}'
|
||||||
class="text">{$strSortName}</a>
|
class="text" title="{$strSortName}">{$strSortName}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/novel:sort}
|
{/novel:sort}
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ $Novel.n_id{extend name="baseH5" /}
|
|||||||
|
|
||||||
<div class="detail-info">
|
<div class="detail-info">
|
||||||
<div class="detail-cover van-image" >
|
<div class="detail-cover van-image" >
|
||||||
<img class="van-image__img pre-img lazyload-img" style="object-fit: cover"
|
<img class="van-image__img pre-img lazyload-img lozad" style="object-fit: cover"
|
||||||
src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
|
src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
|
||||||
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节" >
|
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节" >
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -87,11 +87,12 @@
|
|||||||
{novel:list count="8" sort_type="tuijian" d_key="key" d_val="Novel" cache_life="86400"}
|
{novel:list count="8" sort_type="tuijian" d_key="key" d_val="Novel" cache_life="86400"}
|
||||||
|
|
||||||
<div class="search-tags">
|
<div class="search-tags">
|
||||||
<div class="title"><i class="bi {eq name="key" value="0"}bi-fire {else/} bi-heart-fill{/eq}"></i>
|
<a class="title" href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin"/}'><i class="bi {eq name="key" value="0"}bi-fire {else/} bi-heart-fill{/eq}"></i>
|
||||||
{$Novel.n_name}</div>
|
{$Novel.n_name}
|
||||||
<div class="tags tags-rect">
|
</a>
|
||||||
|
<a class="tags tags-rect" href='{site:souurl key="$Novel.n_author" p="1"/}'>
|
||||||
<span class="badge badge-light badge-light-click" data-keyword="{$Novel.n_name}">{$Novel.n_author}</span>
|
<span class="badge badge-light badge-light-click" data-keyword="{$Novel.n_name}">{$Novel.n_author}</span>
|
||||||
</div>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/novel:list}
|
{/novel:list}
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name='nav-active-class'}home{/block}
|
|
||||||
{block name="title"}{/block}
|
|
||||||
{block name="head-js"}{/block}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
<div>article.......</div>
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"} {/block}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name='nav-active-class'}home{/block}
|
|
||||||
{block name="title"}{/block}
|
|
||||||
{block name="head-js"}{/block}
|
|
||||||
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
<div class="content">
|
|
||||||
|
|
||||||
<!--选择搜索 开始-->
|
|
||||||
<div class="find">
|
|
||||||
<!-- <div class="fi_t">
|
|
||||||
<div class="boFi">
|
|
||||||
<span><s></s></span>
|
|
||||||
<input type="text" class="search-val" url="/search.html" name="search_keyword" value=""
|
|
||||||
placeholder="我要搜.. " maxlength="100" autocomplete="off">
|
|
||||||
<a href="javascript:;" btn="search_keyword">搜索</a>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
<div class="opt">
|
|
||||||
|
|
||||||
<div class="optCl" mod="search_channel">
|
|
||||||
<span class="optTit">所属分类</span>
|
|
||||||
<ul>
|
|
||||||
<li><a class="on" href="/pc/article/list.html" btn="search_category">全部</a></li>
|
|
||||||
<li><a href="/pc/article/list-1-1.html" btn="search_category">高考作文</a></li>
|
|
||||||
<li><a href="/pc/article/list-2-1.html" btn="search_category">小说解读</a></li>
|
|
||||||
<li><a href="/pc/article/list-3-1.html" btn="search_category">影视解说</a></li>
|
|
||||||
<li><a href="/pc/article/list-4-1.html" btn="search_category">王者荣耀</a></li>
|
|
||||||
<li><a href="/pc/article/list-5-1.html" btn="search_category">日常八卦</a></li>
|
|
||||||
<li><a href="/pc/article/list-6-1.html" btn="search_category">其它</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--选择搜索 结束-->
|
|
||||||
|
|
||||||
<div class="f4 area">
|
|
||||||
|
|
||||||
<div class="f4_L">
|
|
||||||
<div class="new_list">
|
|
||||||
<ol class="cur">
|
|
||||||
<li>
|
|
||||||
<ul class="list_h">
|
|
||||||
<li class="lb">分类</li>
|
|
||||||
<li class="sm">书名</li>
|
|
||||||
<li class="gx">描述</li>
|
|
||||||
<li class="zz">作者</li>
|
|
||||||
<li class="sj">更新时间</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
{foreach $arrNewsNovel as $key=>$Novel}
|
|
||||||
{include file="Pc/Public/articleList" /}
|
|
||||||
{/foreach}
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--搜索结果 开始-->
|
|
||||||
<div class="result" mod="search_data_list">
|
|
||||||
|
|
||||||
<!--页码切换 开始-->
|
|
||||||
<div class="changepage">
|
|
||||||
<ul class="pagination">
|
|
||||||
<li class="disabled"><span>«</span></li>
|
|
||||||
<li class="active"><span>1</span></li>
|
|
||||||
<li><a href="/pc/article/list--2.html">2</a></li>
|
|
||||||
<li><a href="/pc/article/list--3.html">3</a></li>
|
|
||||||
<li><a href="/pc/article/list--4.html">4</a></li>
|
|
||||||
<li><a href="/pc/article/list--5.html">5</a></li>
|
|
||||||
<li><a href="/pc/article/list--6.html">6</a></li>
|
|
||||||
<li><a href="/pc/article/list--7.html">7</a></li>
|
|
||||||
<li><a href="/pc/article/list--8.html">8</a></li>
|
|
||||||
<li class="disabled"><span>...</span></li>
|
|
||||||
<li><a href="/pc/article/list--33.html">33</a></li>
|
|
||||||
<li><a href="/pc/article/list--34.html">34</a></li>
|
|
||||||
<li><a href="/pc/article/list--2.html">»</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!--页码切换 结束-->
|
|
||||||
</div>
|
|
||||||
<!--选择结果 结束-->
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"} {/block}
|
|
||||||
@@ -1,204 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name="title"}{site:replace code="NOVEL@GETLIBRARY@TITLE"}{/block}
|
|
||||||
{block name="keywords"}{site:replace code="NOVEL@GETLIBRARY@KEYWORDS"}{/block}
|
|
||||||
{block name="description"}{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}{/block}
|
|
||||||
{block name="head"}
|
|
||||||
<!-- 社交媒体标签 -->
|
|
||||||
<meta property="og:title" content='{site:replace code="NOVEL@GETLIBRARY@TITLE"}' />
|
|
||||||
<meta property="og:description" content='{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}' />
|
|
||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
|
||||||
<meta property="og:url" content="https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}" />
|
|
||||||
{else}
|
|
||||||
|
|
||||||
<meta property="og:url"
|
|
||||||
content='https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}' />
|
|
||||||
{/if}
|
|
||||||
<meta property="og:type" content="book" />
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
|
|
||||||
"@type": "book",
|
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}'
|
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{else}
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
|
||||||
"@type": "book",
|
|
||||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
|
||||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
{block name="head-js"}{/block}
|
|
||||||
|
|
||||||
{block name="head-css"}
|
|
||||||
|
|
||||||
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
|
|
||||||
<link rel="canonical" href="https://{$DomainModel->d_domain}{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}">
|
|
||||||
{else}
|
|
||||||
<link rel="canonical"
|
|
||||||
href='https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}'>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name='nav-active-class'}home{/block}
|
|
||||||
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
{novel:pagerexp page="$Request.get.page" limit="30"
|
|
||||||
n_category="$Request.route.strCategory"
|
|
||||||
sort_type="$Request.route.strOrder"
|
|
||||||
n_status="$Request.route.strStatus" d_key="d_key"
|
|
||||||
d_key="d_key"
|
|
||||||
d_val="Novel" n_num="total"
|
|
||||||
button_num="10" cache_life="86400" func="generateCategoryPager" export_name="resData" /}
|
|
||||||
|
|
||||||
{site:grm page_code="pc_novel_library" diff="$resData.p_data.page" num="70" g_key="arrGrm" /}
|
|
||||||
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row row-section">
|
|
||||||
<div class="layout layout-col3">
|
|
||||||
{novel:list count="6" sort_type="tuijian" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
|
|
||||||
<div class="item">
|
|
||||||
<div class="image">
|
|
||||||
{$arrGrm[$d_key]|raw}
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
|
|
||||||
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
|
|
||||||
data-src="{$Novel.n_cover_path ?? ''}"
|
|
||||||
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<dl>
|
|
||||||
<dt>
|
|
||||||
<span>{$Novel.n_author}</span>
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a>
|
|
||||||
</dt>
|
|
||||||
<dd style="height:90px">
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
|
|
||||||
style="color: #555">{$Novel.n_description}</a>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
{/novel:list}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sort_nav">
|
|
||||||
<p>
|
|
||||||
<span>分类:</span>
|
|
||||||
<a class='{eq name="$Request.route.strCategory" value="all"}on {/eq} {eq name="$Request.route.strCategory" value=""}on on2 {/eq}'
|
|
||||||
href='{$strPcPath}{site:nflurl category="all" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'>不限</a>
|
|
||||||
|
|
||||||
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
|
|
||||||
<a class='{eq name="$Request.route.strCategory" value="$strCategoryPinyin"}on {/eq}'
|
|
||||||
href='{$strPcPath}{site:nflurl category="$strCategoryPinyin" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'>{$strCategoryName}</a>
|
|
||||||
|
|
||||||
{/novel:category}
|
|
||||||
|
|
||||||
|
|
||||||
</p>
|
|
||||||
<p><span>排序:</span>
|
|
||||||
{novel:sort d_key="key" d_val="strSortName"}
|
|
||||||
<a href='{$strPcPath}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" order="$key" page="$Request.route.intPage"/}'
|
|
||||||
class='{eq name="$Request.route.strOrder" value="$key"}on {/eq} {if $key == "all" && $Request.route.strOrder == ""}on on2 {/if}'>{$strSortName}</a>
|
|
||||||
{/novel:sort}
|
|
||||||
</p>
|
|
||||||
<p><span>状态:</span>
|
|
||||||
{novel:status d_key="key" d_val="strStatusName"}
|
|
||||||
<a href='{$strPcPath}{site:nflurl category="$Request.route.strCategory" status="$key" order="$Request.route.strOrder" page="$Request.route.intPage"/}'
|
|
||||||
class='{eq name="$Request.route.strStatus" value="$key"}on {/eq} {if $key == "all" && $Request.route.strStatus == ""}on on2 {/if}'
|
|
||||||
btn="search_category">{$strStatusName}</a>
|
|
||||||
{/novel:status}
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout layout2 layout-col1 fr">
|
|
||||||
<h2 class="layout-tit">最新入库小说</h2>
|
|
||||||
<ul class="txt-list txt-list-row3">
|
|
||||||
{novel:list count="30" sort_type="news" d_key="d_key" d_val="Novel" p_val="page_data"
|
|
||||||
cache_life="86400"}
|
|
||||||
<li>
|
|
||||||
<span class="s1">[{$Novel->n_category ?? ''}</span>
|
|
||||||
<span class="s2">
|
|
||||||
{$arrGrm[$d_key+6]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
|
|
||||||
<span class="s5"><a
|
|
||||||
href='{$strPcPath}{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></span>
|
|
||||||
</li>
|
|
||||||
{/novel:list}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="layout layout2 layout-col2 fl">
|
|
||||||
<h2 class="layout-tit">最近更新小说列表</h2>
|
|
||||||
<ul class="txt-list txt-list-row5">
|
|
||||||
{foreach $resData.data as $key=>$Novel}
|
|
||||||
<li>
|
|
||||||
<span class="s1">[{$Novel->n_category ?? ''}</span>
|
|
||||||
<span class="s2">
|
|
||||||
{$arrGrm[$key+36]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
|
|
||||||
<span class="s3"><a
|
|
||||||
href='{$strPcPath}{site:lcpurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin" /}'
|
|
||||||
title="{$Novel->n_latest_chapter_name ?? 'null'}">{$Novel->n_latest_chapter_name ??
|
|
||||||
'null'}</a></span>
|
|
||||||
<span class="s4">{$Novel.n_author}</span>
|
|
||||||
<span class="s5">{:date('m-d')}</span>
|
|
||||||
</li>
|
|
||||||
{/foreach}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 分页 -->
|
|
||||||
<div class="row sort_page_num">
|
|
||||||
{volist name="resData.p_data.pager" id="vo" key="k"}
|
|
||||||
{switch $vo.label}
|
|
||||||
{case value="上一页"}
|
|
||||||
{if $resData.p_data.page == 1}
|
|
||||||
<span>«</span>
|
|
||||||
{else}
|
|
||||||
<a href="{$strPcPath}{$vo.url}">«</a>
|
|
||||||
{/if}
|
|
||||||
{/case}
|
|
||||||
{case value="下一页"}
|
|
||||||
{if $resData.p_data.page >= $resData.p_data.total}
|
|
||||||
<span>»</span>
|
|
||||||
{else}
|
|
||||||
<a href="{$strPcPath}{$vo.url}">»</a>
|
|
||||||
{/if}
|
|
||||||
{/case}
|
|
||||||
{case value="..."}
|
|
||||||
<span>...</span>
|
|
||||||
{/case}
|
|
||||||
{default /}
|
|
||||||
{if preg_match('/^\d+$/', $vo.label)}
|
|
||||||
<a href="{$strPcPath}{$vo.url}">{$vo.label}</a>
|
|
||||||
{/if}
|
|
||||||
{/switch}
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
{/block}
|
|
||||||
@@ -1,236 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
|
|
||||||
{block name="title"}{site:replace code="NOVEL@GETNOVELCATALOG@TITLE"}{/block}
|
|
||||||
{block name="keywords"}{site:replace code="NOVEL@GETNOVELCATALOG@KEYWORDS"}{/block}
|
|
||||||
{block name="description"}{site:replace code="NOVEL@GETNOVELCATALOG@DESCRIPTION"}{/block}
|
|
||||||
|
|
||||||
{block name="head"}
|
|
||||||
|
|
||||||
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
|
|
||||||
{site:grm page_code="pc_novel_catalog" diff="$Request.url" num="120" g_key="arrGrm" /}
|
|
||||||
|
|
||||||
<!-- 社交媒体标签 -->
|
|
||||||
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
|
|
||||||
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELCATALOG@DESCRIPTION"}' />
|
|
||||||
<meta property="og:url"
|
|
||||||
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
|
|
||||||
<meta property="og:type" content="book" />
|
|
||||||
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
|
|
||||||
<meta property="og:site_name" content="{$DomainModel->d_name}" />
|
|
||||||
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
|
|
||||||
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
|
|
||||||
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
|
|
||||||
<meta property="og:novel:read_url"
|
|
||||||
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>
|
|
||||||
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
|
|
||||||
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
|
|
||||||
<meta property="og:novel:latest_chapter_name" content="{$arrNovel.n_latest_chapter_name ?? ''}">
|
|
||||||
<meta property="og:novel:latest_chapter_url"
|
|
||||||
content='https://{$DomainModel->d_domain}{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
<!-- 可选:支持 Twitter Card -->
|
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
|
||||||
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
|
|
||||||
<meta name="twitter:description" content='{site:replace code="NOVEL@GETNOVELCATALOG@DESCRIPTION"}' />
|
|
||||||
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Book",
|
|
||||||
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
|
|
||||||
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
|
|
||||||
"author": {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "{$arrNovel['n_author'] ??'佚名'}"
|
|
||||||
},
|
|
||||||
"publisher": {
|
|
||||||
"@type": "Organization",
|
|
||||||
"name": "{$DomainModel->d_name}",
|
|
||||||
"url": "https://{$DomainModel->d_domain}"
|
|
||||||
},
|
|
||||||
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
|
|
||||||
"image": "{$arrNovel.n_cover_path ?? ''}",
|
|
||||||
"url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}',
|
|
||||||
"genre": "{$arrNovel.n_category ??''}",
|
|
||||||
"inLanguage": "zh-CN",
|
|
||||||
"bookFormat": "https://{$DomainModel->d_domain}/EBook",
|
|
||||||
"aggregateRating": {
|
|
||||||
"@type": "AggregateRating",
|
|
||||||
"ratingValue": "4.5",
|
|
||||||
"reviewCount": "100",
|
|
||||||
},
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="head-css"}
|
|
||||||
<link rel="canonical" href='{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
{/block}
|
|
||||||
{block name="logo-html"}
|
|
||||||
<h2>
|
|
||||||
<a href="{$strPcPath}/">
|
|
||||||
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
|
|
||||||
</a>
|
|
||||||
</h2>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="head-js"}
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="body-class"}novel_info{/block}
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
{chapter:pagerexp page="$Request.route.intPage" limit="100" n_id="$Request.route.intNovelId" d_key="d_key" d_val="chapter"
|
|
||||||
cache_life="86400" button_num="3" sort_type="$Request.route.strOrder" func="generateChapterPager" export_name="resData" /}
|
|
||||||
|
|
||||||
<div class="container biqunaicc">
|
|
||||||
<div class="row row-detail">
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit xs-hidden">
|
|
||||||
<a href="{$strPcPath}/">{$DomainModel->d_name}</a>>
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
{$arrNovel['n_name']}
|
|
||||||
</a>
|
|
||||||
</h2>
|
|
||||||
<div class="detail-box">
|
|
||||||
<div class="imgbox">
|
|
||||||
<img data-src="{$arrNovel.n_cover_path ?? ''}"
|
|
||||||
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节"
|
|
||||||
class="lazyload_book_cover lazyload-img">
|
|
||||||
</div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="top">
|
|
||||||
<h1>{$arrNovel['n_name']}</h1>
|
|
||||||
<div class="fix">
|
|
||||||
<p>作 者:{$arrNovel.n_author ?? ''}</p>
|
|
||||||
<p class="xs-show">类 别:{$arrNovel.n_category ?? ''}</p>
|
|
||||||
<p class="xs-show">状 态:{$arrNovel.n_status ?? ''}</p>
|
|
||||||
<p class="opt">
|
|
||||||
<span class="xs-hidden">动 作:</span>
|
|
||||||
<a rel="nofollow" onclick="addBookshelfFun()">加入书架</a>
|
|
||||||
<i class="xs-hidden">、</i>
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
|
|
||||||
<i class="xs-hidden">、</i>
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>开始阅读</a>
|
|
||||||
</p>
|
|
||||||
<p>最后更新:{$arrNovel.n_update_time ?? ''} </p>
|
|
||||||
<p>最新章节:<a
|
|
||||||
href='{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
{$arrNovel.n_latest_chapter_name ?? ""}</a></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="desc xs-hidden">{$arrNovel.n_description ?? ''}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit">《{$arrNovel.n_name ?? ''}》{$arrNovel.n_name ?? '章节'}</h2>
|
|
||||||
<div class="first_txt">
|
|
||||||
{$arrNovel.strFocus ?? ""} 。看小说就来{$DomainModel->d_name} {$DomainModel->d_domain}...
|
|
||||||
|
|
||||||
<p>相邻推荐:
|
|
||||||
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
|
|
||||||
{if $key<20 } {$arrGrm[$key+20]|raw} {/if} <a
|
|
||||||
href='{$strPcPath}{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'
|
|
||||||
class="red">{$ForgeNovel.n_forge_title}</a>
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
{volist name='$arrNovel.arrRelateveNovel' id='Novel'}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row row-section">
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit">《{$arrNovel.n_name}》章节列表(第{$Request.route.intPage}页)切换倒序/正序:
|
|
||||||
{if $Request.route.strOrder == 'zheng'}
|
|
||||||
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="dao" page="1"/}'
|
|
||||||
class="habt y">点击切换倒序</a>
|
|
||||||
{else}
|
|
||||||
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'
|
|
||||||
class="habt y">点击切换正序</a>
|
|
||||||
{/if}
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<!-- 目录下拉分页-->
|
|
||||||
{include file="pc/public/allChapterPage" /}
|
|
||||||
|
|
||||||
<ul class="section-list fix ycxsid">
|
|
||||||
{foreach $resData.data as $key=>$Chapter}
|
|
||||||
<li>
|
|
||||||
{$arrGrm[$key]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$Chapter.c_sort_num" c_page="0"/}'>
|
|
||||||
{$Chapter.c_name}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
{/foreach}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- 目录下拉分页-->
|
|
||||||
{include file="pc/public/allChapterPage" /}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row row-section">
|
|
||||||
<h2 class="layout-tit">已完结热门小说推荐</h2>
|
|
||||||
<div class="layout layout-col3">
|
|
||||||
|
|
||||||
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel"
|
|
||||||
cache_life="86400"}
|
|
||||||
<div class="item">
|
|
||||||
<div class="image">
|
|
||||||
{$arrGrm[$d_key+110]|raw}
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
|
|
||||||
data-src="{$Novel.n_cover_path ?? ''}"
|
|
||||||
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<dl>
|
|
||||||
<dt><span>{$Novel.n_author}</span><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a>
|
|
||||||
</dt>
|
|
||||||
<dd style="height:90px"><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
|
|
||||||
style="color: #555">{$Novel.n_description}</a>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
{/novel:list}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const strNovelId = `{$arrNovel.n_id}`;
|
|
||||||
const arrNovel = {
|
|
||||||
'n_id': `{$arrNovel['n_id']}`,
|
|
||||||
'n_name_pinyin': `{$arrNovel['n_name_pinyin']}`,
|
|
||||||
'n_cover_path': `{$arrNovel['n_cover_path']}`,
|
|
||||||
'n_name': `{$arrNovel['n_name']}`,
|
|
||||||
'n_author': `{$arrNovel['n_author']}`,
|
|
||||||
'n_status': `{$arrNovel['n_status']}`,
|
|
||||||
'n_update_time': `{$arrNovel['n_update_time']}`,
|
|
||||||
'c_sort_num': 1,
|
|
||||||
'c_name': `第一章`,
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
@@ -1,189 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name="title"}{site:replace code="NOVEL@GETNOVELCHAPTER@TITLE"}{/block}
|
|
||||||
{block name="keywords"}{site:replace code="NOVEL@GETNOVELCHAPTER@KEYWORDS"}{/block}
|
|
||||||
{block name="description"}{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}{/block}
|
|
||||||
|
|
||||||
{block name="head"}
|
|
||||||
|
|
||||||
{site:grm page_code="pc_novel_chapter" diff="$Request.url" num="20" g_key="arrGrm" /}
|
|
||||||
|
|
||||||
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
|
|
||||||
{chapter:info n_id="$Request.route.intNovelId" c_sort_num="$Request.route.intChapterSort"
|
|
||||||
c_page="$Request.route.intChapterPage" c_key="arrChapter" /}
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
|
|
||||||
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}' />
|
|
||||||
<meta property="og:url"
|
|
||||||
content='https://{$DomainModel->d_domain}{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
|
|
||||||
<meta property="og:type" content="book" />
|
|
||||||
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
|
|
||||||
<meta property="og:site_name" content="{$DomainModel->d_name}" />
|
|
||||||
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
|
|
||||||
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
|
|
||||||
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
|
|
||||||
<meta property="og:novel:read_url"
|
|
||||||
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num"/}'>
|
|
||||||
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
|
|
||||||
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
|
|
||||||
<meta property="og:novel:latest_chapter_name" content="{$arrChapter.c_name}">
|
|
||||||
<meta property="og:novel:latest_chapter_url"
|
|
||||||
content='https://{$DomainModel->d_domain}{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
<!-- 可选:支持 Twitter Card -->
|
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
|
||||||
<meta name="twitter:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
|
|
||||||
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
|
|
||||||
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
|
|
||||||
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Book",
|
|
||||||
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
|
|
||||||
"author": {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "{$arrNovel['n_author'] ??'佚名'}"
|
|
||||||
},
|
|
||||||
"publisher": {
|
|
||||||
"@type": "Organization",
|
|
||||||
"name": "{$DomainModel->d_name}",
|
|
||||||
"url": "https://{$DomainModel->d_domain}"
|
|
||||||
},
|
|
||||||
"image": "{$arrNovel.n_cover_path ?? ''}",
|
|
||||||
"url":'https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num" c_page="0"/}',
|
|
||||||
"inLanguage": "zh-CN",
|
|
||||||
"genre": "{$arrNovel.n_category ??''}",
|
|
||||||
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
|
|
||||||
"hasPart": {
|
|
||||||
"@type": "CreativeWork",
|
|
||||||
"name": "{$arrChapter.c_name ?? ''}",
|
|
||||||
"url":'https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num" c_page="0"/}',
|
|
||||||
"description": '{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="head-css"}
|
|
||||||
<link rel="canonical"
|
|
||||||
href='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num"/}'>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="head-js"}
|
|
||||||
<script src="/template/default/pc/js/yueduqsbs.js"></script>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="body-class"}novel_info{/block}
|
|
||||||
{block name='nav-active-class'}home{/block}
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
<div class="container biqunaicc">
|
|
||||||
{$arrGrm[1]|raw}
|
|
||||||
<div class="row row-detail">
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit xs-hidden">
|
|
||||||
<a href="{$strPcPath}/">{$DomainModel->d_name}</a>><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$arrNovel.n_name}</a>
|
|
||||||
>
|
|
||||||
{$arrNovel.n_name}(第{$arrChapter.c_sort_num}页)
|
|
||||||
</h2>
|
|
||||||
{$arrGrm[2]|raw}
|
|
||||||
<div class="word_read">
|
|
||||||
<h3>{$arrNovel.n_name}(第{$arrChapter['c_sort_num']}页)</h3>
|
|
||||||
<div class="read_btn">
|
|
||||||
{if $arrChapter && $arrChapter.c_sort_num && $arrChapter.c_sort_num == 1}
|
|
||||||
<a id="j_chapterPrev" href="javascript:void(0);">上一页</a>
|
|
||||||
{else}
|
|
||||||
{$arrGrm[10]|raw}
|
|
||||||
<a id="j_chapterPrev"
|
|
||||||
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.pre_chapter.c_sort_num" c_page="$arrChapter.pre_chapter.c_page"/}'>上一页</a>
|
|
||||||
{/if}
|
|
||||||
<span>|</span>
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
|
|
||||||
<span>|</span>
|
|
||||||
{if $arrChapter.next_chapter && $arrChapter.next_chapter.c_sort_num}
|
|
||||||
{$arrGrm[9]|raw}
|
|
||||||
<a id="j_chapterNext"
|
|
||||||
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.next_chapter.c_sort_num" c_page="$arrChapter.next_chapter.c_page"/}'>下一页</a>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
{$arrGrm[3]|raw}
|
|
||||||
<script>document.writeln(qsbs.bb('{$arrChapter.c_content}'));</script>
|
|
||||||
{$arrGrm[4]|raw}
|
|
||||||
<p>请勿开启浏览器阅读模式,否则将导致章节内容缺失及无法阅读下一页。</p>
|
|
||||||
|
|
||||||
<p>相邻推荐:
|
|
||||||
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
|
|
||||||
{if $key<19 } {$arrGrm[$key+9]|raw} {/if} <a
|
|
||||||
href='{$strPcPath}{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'
|
|
||||||
class="red">{$ForgeNovel.n_forge_title}</a>
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
{volist name='arrNovel.arrRelateveNovel' id='Novel'}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
</p>
|
|
||||||
{$arrGrm[5]|raw}
|
|
||||||
<div class="read_btn">
|
|
||||||
{if $arrChapter && $arrChapter.c_sort_num && $arrChapter.c_sort_num == 1}
|
|
||||||
<a id="j_chapterPrev" href="javascript:void(0);">上一页</a>
|
|
||||||
{else}
|
|
||||||
{$arrGrm[10]|raw}
|
|
||||||
<a id="j_chapterPrev"
|
|
||||||
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.pre_chapter.c_sort_num" c_page="$arrChapter.pre_chapter.c_page"/}'>上一页</a>
|
|
||||||
{/if}
|
|
||||||
<span>|</span>
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
|
|
||||||
<span>|</span>
|
|
||||||
{if $arrChapter.next_chapter && $arrChapter.next_chapter.c_sort_num}
|
|
||||||
{$arrGrm[9]|raw}
|
|
||||||
<a id="j_chapterNext"
|
|
||||||
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.next_chapter.c_sort_num" c_page="$arrChapter.next_chapter.c_page"/}'>下一页</a>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
{$arrGrm[6]|raw}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row row-section">
|
|
||||||
<h2 class="layout-tit">已完结热门小说推荐</h2>
|
|
||||||
<div class="layout layout-col3">read_btn
|
|
||||||
|
|
||||||
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel"
|
|
||||||
p_val="page_data" cache_life="86400"}
|
|
||||||
<div class="item">
|
|
||||||
<div class="image">
|
|
||||||
{$arrGrm[$d_key+6]|raw}
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
|
|
||||||
data-src="{$Novel.n_cover_path ?? ''}"
|
|
||||||
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<dl>
|
|
||||||
<dt><span>{$Novel.n_author}</span><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a></dt>
|
|
||||||
<dd style="height:90px"><a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
|
|
||||||
style="color: #555">{$Novel.n_description}</a>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
{/novel:list}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
@@ -1,232 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
|
|
||||||
{block name="title"}{site:replace code="NOVEL@GETNOVELINFO@TITLE"}{/block}
|
|
||||||
{block name="keywords"}{site:replace code="NOVEL@GETNOVELINFO@KEYWORDS"}{/block}
|
|
||||||
{block name="description"}{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}{/block}
|
|
||||||
|
|
||||||
{block name="head"}
|
|
||||||
|
|
||||||
{if $Request.route.intNovelId}
|
|
||||||
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
|
|
||||||
{else}
|
|
||||||
{novel:info n_id="$DomainModel->info_id" n_key="arrNovel" n_forge_id="0" /}
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
{site:grm page_code="pc_novel_info" diff="$arrNovel.n_id" num="120" g_key="arrGrm" /}
|
|
||||||
<!-- 社交媒体标签 -->
|
|
||||||
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
|
|
||||||
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
|
|
||||||
<meta property="og:url"
|
|
||||||
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
|
|
||||||
<meta property="og:type" content="book" />
|
|
||||||
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
|
|
||||||
<meta property="og:site_name" content="{$DomainModel->d_name}" />
|
|
||||||
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
|
|
||||||
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
|
|
||||||
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
|
|
||||||
<meta property="og:novel:read_url"
|
|
||||||
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>
|
|
||||||
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
|
|
||||||
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
|
|
||||||
<meta property="og:novel:latest_chapter_name" content="{$arrNovel.n_latest_chapter_name ?? ''}">
|
|
||||||
<meta property="og:novel:latest_chapter_url"
|
|
||||||
content='https://{$DomainModel->d_domain}{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
<!-- 可选:支持 Twitter Card -->
|
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
|
||||||
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
|
|
||||||
<meta name="twitter:description" content="'{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
|
|
||||||
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Book",
|
|
||||||
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
|
|
||||||
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
|
|
||||||
"author": {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "{$arrNovel['n_author'] ??'佚名'}"
|
|
||||||
},
|
|
||||||
"publisher": {
|
|
||||||
"@type": "Organization",
|
|
||||||
"name": "{$DomainModel->d_name}",
|
|
||||||
"url": "https://{$DomainModel->d_domain}"
|
|
||||||
},
|
|
||||||
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
|
|
||||||
"image": "{$arrNovel.n_cover_path ?? ''}",
|
|
||||||
"url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}',
|
|
||||||
"genre": "{$arrNovel.n_category ??''}",
|
|
||||||
"inLanguage": "zh-CN",
|
|
||||||
"bookFormat": "https://{$DomainModel->d_domain}/EBook",
|
|
||||||
"aggregateRating": {
|
|
||||||
"@type": "AggregateRating",
|
|
||||||
"ratingValue": "4.5",
|
|
||||||
"reviewCount": "100",
|
|
||||||
},
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="head-css"}
|
|
||||||
<link rel="canonical"
|
|
||||||
href='{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="logo-html"}
|
|
||||||
<h2>
|
|
||||||
<a href="{$strPcPath}/">
|
|
||||||
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
|
|
||||||
</a>
|
|
||||||
</h2>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="head-js"}
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="body-class"}novel_info{/block}
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
<div class="container biqunaicc">
|
|
||||||
<div class="row row-detail">
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit xs-hidden">
|
|
||||||
<a href="{$strPcPath}/">{$DomainModel->d_name}</a>>
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
{$arrNovel['n_name']}
|
|
||||||
</a>
|
|
||||||
</h2>
|
|
||||||
<div class="detail-box">
|
|
||||||
<div class="imgbox">
|
|
||||||
<img data-src="{$arrNovel.n_cover_path ?? ''}"
|
|
||||||
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节"
|
|
||||||
class="lazyload_book_cover lazyload-img">
|
|
||||||
</div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="top">
|
|
||||||
<h1>{$arrNovel['n_name']}</h1>
|
|
||||||
<div class="fix">
|
|
||||||
<p>作 者:{$arrNovel.n_author ?? ''}</p>
|
|
||||||
<p class="xs-show">类 别:{$arrNovel.n_category ?? ''}</p>
|
|
||||||
<p class="xs-show">状 态:{$arrNovel.n_status ?? ''}</p>
|
|
||||||
<p class="opt">
|
|
||||||
<span class="xs-hidden">动 作:</span>
|
|
||||||
<a rel="nofollow" onclick="addBookshelfFun()">加入书架</a>
|
|
||||||
<i class="xs-hidden">、</i>
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
|
|
||||||
<i class="xs-hidden">、</i>
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>开始阅读</a>
|
|
||||||
</p>
|
|
||||||
<p>最后更新:{$arrNovel.n_update_time ?? ''} </p>
|
|
||||||
<p>最新章节:<a
|
|
||||||
href='{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
{$arrNovel.n_latest_chapter_name ?? ""}</a></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="desc xs-hidden">{$arrNovel.n_description ?? ''}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit">《{$arrNovel.n_name ?? ''}》{$arrNovel.n_name ?? '章节'}</h2>
|
|
||||||
<div class="first_txt">
|
|
||||||
{$arrNovel.strFocus ?? ""} 。看小说就来{$DomainModel->d_name} {$DomainModel->d_domain}...
|
|
||||||
|
|
||||||
<p>相邻推荐:
|
|
||||||
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
|
|
||||||
{if $key<20 } {$arrGrm[$key+20]|raw} {/if} <a
|
|
||||||
href='{$strPcPath}{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'
|
|
||||||
class="red">{$ForgeNovel.n_forge_title}</a>
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
{volist name='$arrNovel.arrRelateveNovel' id='Novel'}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row row-section">
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit">《{$arrNovel.n_name}》最新章节</h2>
|
|
||||||
<ul class="section-list fix">
|
|
||||||
{chapter:list count="12" sort_type="dao" n_id="$arrNovel.n_id" d_key="d_key" d_val="Chapter" cache_life="86400"}
|
|
||||||
<li>
|
|
||||||
{$arrGrm[$d_key]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Chapter.c_name}</a>
|
|
||||||
</li>
|
|
||||||
{/chapter:list}
|
|
||||||
</ul>
|
|
||||||
<h2 class="layout-tit">《{$arrNovel.n_name}》章节列表</h2>
|
|
||||||
<ul class="fix section-list">
|
|
||||||
{chapter:list count="100" sort_type="zheng" n_id="$arrNovel.n_id" d_key="d_key" d_val="Chapter" cache_life="86400"}
|
|
||||||
<li>
|
|
||||||
{$arrGrm[$d_key+10]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Chapter.c_name}</a>
|
|
||||||
</li>
|
|
||||||
{/chapter:list}
|
|
||||||
</ul><a
|
|
||||||
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'
|
|
||||||
class="btn-mulu">查看更多章节...</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row row-section">
|
|
||||||
<h2 class="layout-tit">已完结热门小说推荐</h2>
|
|
||||||
<div class="layout layout-col3">
|
|
||||||
|
|
||||||
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
|
|
||||||
<div class="item">
|
|
||||||
<div class="image">
|
|
||||||
{$arrGrm[$d_key+110]|raw}
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
|
|
||||||
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
|
|
||||||
data-src="{$Novel.n_cover_path ?? ''}"
|
|
||||||
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<dl>
|
|
||||||
<dt><span>{$Novel.n_author}</span><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a>
|
|
||||||
</dt>
|
|
||||||
<dd style="height:90px"><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
|
|
||||||
style="color: #555">{$Novel.n_description}</a>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
{/novel:list}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const strNovelId = `{$arrNovel.n_id}`;
|
|
||||||
const arrNovel = {
|
|
||||||
'n_id': `{$arrNovel['n_id']}`,
|
|
||||||
'n_name_pinyin': `{$arrNovel['n_name_pinyin']}`,
|
|
||||||
'n_cover_path': `{$arrNovel['n_cover_path']}`,
|
|
||||||
'n_name': `{$arrNovel['n_name']}`,
|
|
||||||
'n_author': `{$arrNovel['n_author']}`,
|
|
||||||
'n_status': `{$arrNovel['n_status']}`,
|
|
||||||
'n_update_time': `{$arrNovel['n_update_time']}`,
|
|
||||||
'c_sort_num': 1,
|
|
||||||
'c_name': `第一章`,
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name="title"}{site:replace code="NOVEL@GETSEARCHNOVEL@TITLE"}{/block}
|
|
||||||
{block name="keywords"}{site:replace code="NOVEL@GETSEARCHNOVEL@KEYWORDS"}{/block}
|
|
||||||
{block name="description"}{site:replace code="NOVEL@GETSEARCHNOVEL@DESCRIPTION"}{/block}
|
|
||||||
|
|
||||||
{block name="head"}
|
|
||||||
<!-- 社交媒体标签 -->
|
|
||||||
<meta property="og:title" content=‘{site:replace code="NOVEL@GETSEARCHNOVEL@TITLE"} />
|
|
||||||
<meta property="og:description" content='{site:replace code="NOVEL@GETSEARCHNOVEL@DESCRIPTION"}' />
|
|
||||||
<meta property="og:url" content="https://{$DomainModel->d_domain}{site:souurl key='$Request.get.keyword' p='1'/}" />
|
|
||||||
<meta property="og:type" content="book" />
|
|
||||||
<meta property="og:site_name" content="{$DomainModel->d_name}">
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary_large_image">
|
|
||||||
<meta name="twitter:title" content="{$Request.get.keyword} - {$DomainModel->d_name}搜索 - 第{$Request.get.intPage}页">
|
|
||||||
<meta name="twitter:description" content="{$Request.get.keyword}搜索结果第{$Request.get.intPage}页,免费阅读小说,快来体验!">
|
|
||||||
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "SearchResultsPage",
|
|
||||||
"url": "https://{$DomainModel->d_name}{site:souurl key='$Request.get.keyword' p='1'/}",
|
|
||||||
"name": "{$DomainModel->d_name} - {$DomainModel->d_name}搜索 第{$Request.get.intPage}页",
|
|
||||||
"description": "搜索‘{$Request.get.keyword}’结果第{$Request.get.intPage}页,提供{$Request.get.keyword}创作的小说免费阅读。",
|
|
||||||
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
|
|
||||||
"mainEntity": {
|
|
||||||
"@type": "Book",
|
|
||||||
"name": "{$DomainModel->d_name}",
|
|
||||||
"author": {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "{$DomainModel->d_name}"
|
|
||||||
},
|
|
||||||
"url": "https://{$DomainModel->d_domain}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name='nav-active-class'}home{/block}
|
|
||||||
|
|
||||||
{block name="title"}{/block}
|
|
||||||
{block name="meta-other"}{/block}
|
|
||||||
{block name="body-class"}novel_home novel_search_page{/block}
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
|
|
||||||
{novel:pagerexp page="$Request.get.page" limit="30"
|
|
||||||
key="$Request.get.keyword"
|
|
||||||
d_key="d_key"
|
|
||||||
d_val="Novel" n_num="total"
|
|
||||||
p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager" export_name="resData" /}
|
|
||||||
|
|
||||||
{site:grm page_code="pc_novel_search" diff="$Request.url" num="30" g_key="arrGrm" /}
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout layout3 layout-col3 fl">
|
|
||||||
<h1>{$Request.get.keyword}搜索结果 - {$DomainModel->d_name} 第{$resData.p_data.page}页</h1>
|
|
||||||
<div class="result search_tip">
|
|
||||||
搜索<span style="color:red">“{$Request.get.keyword}”</span>相关结果共有 <span
|
|
||||||
style="color:red">{$resData.p_data.total}</span> 部小说
|
|
||||||
</div>
|
|
||||||
{if $resData.p_data.total <1} <p style="text-align: center;line-height: 60px">没有相关数据</p>
|
|
||||||
{else}
|
|
||||||
<div class="layout layout-col3">
|
|
||||||
|
|
||||||
{foreach $resData.data as $key=>$Novel}
|
|
||||||
<div class="item">
|
|
||||||
<div class="image">
|
|
||||||
{$arrGrm[$key]|raw}
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>
|
|
||||||
<img style="min-height:120px;" src="/static/img/default.jpg"
|
|
||||||
data-src="{$Novel.n_cover_path ?? ''}"
|
|
||||||
alt="{$Novel['n_name'] ?? ''}小说封面 - {$Novel.n_author}最新章节"
|
|
||||||
class="lazy lazyload-img">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<dl>
|
|
||||||
<dt><span>{$Novel.n_author}</span><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>
|
|
||||||
</dt>
|
|
||||||
<dd style="height:90px"><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'
|
|
||||||
style="color: #555">{$Novel.n_description}</a>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
{/foreach}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 分页 -->
|
|
||||||
<div class="row sort_page_num">
|
|
||||||
{volist name="resData.p_data.pager" id="vo" key="k"}
|
|
||||||
{switch $vo.label}
|
|
||||||
{case value="上一页"}
|
|
||||||
{if $resData.p_data.page == 1}
|
|
||||||
<span>«</span>
|
|
||||||
{else}
|
|
||||||
<a href="{$strPcPath}{$vo.url}">«</a>
|
|
||||||
{/if}
|
|
||||||
{/case}
|
|
||||||
{case value="下一页"}
|
|
||||||
{if $resData.p_data.page >= $resData.p_data.total}
|
|
||||||
<span>»</span>
|
|
||||||
{else}
|
|
||||||
<a href="{$strPcPath}{$vo.url}">»</a>
|
|
||||||
{/if}
|
|
||||||
{/case}
|
|
||||||
{case value="..."}
|
|
||||||
<span>...</span>
|
|
||||||
{/case}
|
|
||||||
{default /}
|
|
||||||
{if preg_match('/^\d+$/', $vo.label)}
|
|
||||||
<a href="{$strPcPath}{$vo.url}">{$vo.label}</a>
|
|
||||||
{/if}
|
|
||||||
{/switch}
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name="title"}{site:replace code="INDEX@INDEX@TITLE"}{/block}
|
|
||||||
{block name="keywords"}{site:replace code="INDEX@INDEX@KEYWORDS"}{/block}
|
|
||||||
{block name="description"}{site:replace code="INDEX@INDEX@DESCRIPTION"}{/block}
|
|
||||||
|
|
||||||
{block name="head-css"}
|
|
||||||
<link rel="canonical" href="https://{$DomainModel->d_domain}/">
|
|
||||||
{/block}
|
|
||||||
{block name="head"}
|
|
||||||
<!-- 社交媒体标签 -->
|
|
||||||
<meta property="og:title" content='{site:replace code="INDEX@INDEX@TITLE"}' />
|
|
||||||
<meta property="og:description" content='{site:replace code="INDEX@INDEX@DESCRIPTION"}' />
|
|
||||||
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "WebSite",
|
|
||||||
"name": "{$DomainModel->d_name}",
|
|
||||||
"url": "https://{$DomainModel->d_domain}",
|
|
||||||
"headline": '{site:replace code="INDEX@INDEX@TITLE"}',
|
|
||||||
"description": '{site:replace code="INDEX@INDEX@DESCRIPTION"}',
|
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
|
||||||
|
|
||||||
"potentialAction": {
|
|
||||||
"@type": "SearchAction",
|
|
||||||
"target": 'https://{$DomainModel->d_domain}{site:souurl key="search_term_string" p="1"/}',
|
|
||||||
"query-input": "required name=search_term_string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
{site:grm page_code="pc_index" diff="0" num="150" g_key="arrGrm" /}
|
|
||||||
|
|
||||||
<div class="container biqunaicc">
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout layout-col2">
|
|
||||||
{novel:list count="4" sort_type="tuijian" n_status="lianzai" d_key="d_key" d_val="Novel" p_val="page_data"
|
|
||||||
cache_life="86400"}
|
|
||||||
<div class="item">
|
|
||||||
<div class="image">
|
|
||||||
{$arrGrm[$d_key]|raw}
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
|
|
||||||
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
|
|
||||||
data-src="{$Novel.n_cover_path ?? ''}"
|
|
||||||
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<dl>
|
|
||||||
<dt>
|
|
||||||
<span>{$Novel.n_author ?? ''}</span>
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name
|
|
||||||
?? ''}</a>
|
|
||||||
</dt>
|
|
||||||
<dd style="height:90px">
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
|
|
||||||
style="color: #555">
|
|
||||||
{$Novel.n_description ?? ''}
|
|
||||||
</a>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
{/novel:list}
|
|
||||||
</div>
|
|
||||||
<div class="layout layout-col1">
|
|
||||||
<h2 class="layout-tit">经典推荐</h2>
|
|
||||||
<ul class="txt-list txt-list-row3">
|
|
||||||
{novel:list count="9" sort_type="tuijian" n_status="wanjie" d_key="d_key" d_val="Novel"
|
|
||||||
p_val="page_data" cache_life="86400"}
|
|
||||||
<li>
|
|
||||||
<span class="s1">[{$Novel->n_category ?? ''}</span>
|
|
||||||
<span class="s2">
|
|
||||||
{$arrGrm[$d_key+4]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
|
|
||||||
<span class="s5">
|
|
||||||
<a href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
{/novel:list}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout">
|
|
||||||
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
|
|
||||||
<div class="tp-box">
|
|
||||||
<h2>{$strCategoryName}</h2> <!-- 分类标题 -->
|
|
||||||
<div class="top">
|
|
||||||
|
|
||||||
<?php $start = 1 ;$start +=1 ;?>
|
|
||||||
|
|
||||||
{novel:list count="1" n_category="$strCategoryPinyin" sort_type="news" d_key="d_key" d_val="Novel"
|
|
||||||
p_val="page_data" cache_life="86400"}
|
|
||||||
<div class="image">
|
|
||||||
{$arrGrm[$d_key+9+10*$start]|raw}
|
|
||||||
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
|
|
||||||
<img class="lazyload-img" src="/static/img/default.jpg"
|
|
||||||
data-src="{$Novel.n_cover_path ?? ''}"
|
|
||||||
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<dl>
|
|
||||||
<dt><a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a>
|
|
||||||
</dt>
|
|
||||||
<dd><a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
|
|
||||||
style="color: #555">{$Novel.n_description ?? ''}</a></dd>
|
|
||||||
</dl>
|
|
||||||
{/novel:list}
|
|
||||||
</div>
|
|
||||||
<ul>
|
|
||||||
{novel:list count="12" n_category="$strCategoryPinyin" sort_type="news" d_key="d_key" d_val="Novel"
|
|
||||||
p_val="page_data" cache_life="86400"}
|
|
||||||
<li>
|
|
||||||
{$arrGrm[$d_key+9+10*$start]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a>/<a
|
|
||||||
href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></li>
|
|
||||||
{/novel:list}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{/novel:category}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout layout2 layout-col1 fr">
|
|
||||||
<h2 class="layout-tit">最新入库小说</h2>
|
|
||||||
<ul class="txt-list txt-list-row3">
|
|
||||||
{novel:list count="50" sort_type="news" d_key="d_key" d_val="Novel" p_val="page_data"
|
|
||||||
cache_life="86400"}
|
|
||||||
<li>
|
|
||||||
<span class="s1">[{$Novel->n_category ?? ''}]</span>
|
|
||||||
<span class="s2">
|
|
||||||
{$arrGrm[$d_key+100]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
|
|
||||||
<span class="s5"><a href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></span>
|
|
||||||
</li>
|
|
||||||
{/novel:list}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="layout layout2 layout-col2 fl">
|
|
||||||
<h2 class="layout-tit">最近更新小说列表</h2>
|
|
||||||
<ul class="txt-list txt-list-row5">
|
|
||||||
{novel:list count="50" sort_type="update" d_key="d_key" d_val="Novel" p_val="page_data"
|
|
||||||
cache_life="86400"}
|
|
||||||
<li>
|
|
||||||
<span class="s1">[{$Novel->n_category ?? ''}]</span>
|
|
||||||
<span class="s2">
|
|
||||||
{$arrGrm[$d_key+100]|raw}
|
|
||||||
<a
|
|
||||||
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
|
|
||||||
<span class="s3"><a
|
|
||||||
href='{$strPcPath}{site:lcpurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin" /}'
|
|
||||||
title="{$Novel->n_latest_chapter_name ?? 'null'}">{$Novel->n_latest_chapter_name ??
|
|
||||||
'null'}</a></span>
|
|
||||||
<span class="s4"><a href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></span>
|
|
||||||
<span class="s5">{:date('m-d')}</span>
|
|
||||||
</li>
|
|
||||||
{/novel:list}
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
|
|
||||||
|
|
||||||
{/block}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<!-- <div class="adv">
|
|
||||||
<a href="#" title="" target="_blank">
|
|
||||||
<img src="/template/kuangyu/home/bai_web/images/grey.gif"
|
|
||||||
data-src="/template/kuangyu/home/bai_web/images/1120x100.png" class="lazyload" alt="">
|
|
||||||
</a>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<a href="#" title="" target="_blank">
|
|
||||||
<img src="/template/kuangyu/home/bai_web/images/grey.gif"
|
|
||||||
data-src="/template/kuangyu/home/bai_web/images/1120x100.png" class="lazyload" alt="">
|
|
||||||
</a>
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
{if !empty($resData.p_data.pager)}
|
|
||||||
<div class="page_num">
|
|
||||||
{volist name="$resData.p_data.pager" id="item"}
|
|
||||||
{eq name="item.type" value="prev"}
|
|
||||||
<a href="{$item.url ? $strPcPath . $item.url: 'javascript:void(0)'}"
|
|
||||||
class="z {$item.disabled ? 'disabled' : ''}">
|
|
||||||
{$item.label}
|
|
||||||
</a>
|
|
||||||
{/eq}
|
|
||||||
{/volist}
|
|
||||||
|
|
||||||
<select onchange="self.location.href=options[selectedIndex].value">
|
|
||||||
{volist name="$resData.p_data.pager" id="item"}
|
|
||||||
{eq name="item.type" value="page"}
|
|
||||||
|
|
||||||
<?php $intLimit = $resData['p_data']['limit']; ?>
|
|
||||||
<?php $start = ($item['label'] - 1) * $intLimit + 1; ?>
|
|
||||||
<?php $end = $item['label'] * $intLimit; ?>
|
|
||||||
<option value="{$strPcPath}{$item.url}" {$item.current ? 'selected' : ''}>
|
|
||||||
第{$start}-{$end}章
|
|
||||||
</option>
|
|
||||||
{/eq}
|
|
||||||
{/volist}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
{volist name="$resData.p_data.pager" id="item"}
|
|
||||||
{eq name="item.type" value="next"}
|
|
||||||
<a href="{$item.url ? $strPcPath . $item.url: 'javascript:void(0)'}"
|
|
||||||
class="y {$item.disabled ? 'disabled' : ''}">
|
|
||||||
{$item.label}
|
|
||||||
</a>
|
|
||||||
{/eq}
|
|
||||||
{/volist}
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<li>
|
|
||||||
<ul>
|
|
||||||
<li class="lb"><a href="/pc/article/info-332.html" target="_blank">耽美百合</a></li>
|
|
||||||
<li class="sm">
|
|
||||||
<h3><a href="/pc/article/info-332.html" title="我真是一条龙" target="_blank">我真是一条龙</a></h3>
|
|
||||||
</li>
|
|
||||||
<li class="gx"><a href="/pc/article/info-332.html" title="老读者必看公告!!!"
|
|
||||||
target="_blank">老读者必看公告!!!</a></li>
|
|
||||||
<li class="zz">兔子很淡定</li>
|
|
||||||
<li class="sj">1天前</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
<li id="chapter-4b2d5aab58d71" class="on">
|
|
||||||
<a href="chapter/1-1-1.html">01 天龙问世</a>
|
|
||||||
</li>
|
|
||||||
<li id="chapter-486ef2abee55d">
|
|
||||||
<a href="/chapter/1-1-1.html">02 沧武的小霸王</a>
|
|
||||||
</li>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<li>
|
|
||||||
<a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank" class="book_cov">
|
|
||||||
<img class="lazyload_book_cover lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
|
|
||||||
alt="落魄千金美食发家日常">
|
|
||||||
</a>
|
|
||||||
<div class="book_inf">
|
|
||||||
<h3><a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank">落魄千金美食发家日常</a></h3>
|
|
||||||
<span class="aut">鱼昆子</span>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<div class="foot">
|
|
||||||
<div class="foot_T">
|
|
||||||
<div class="tWrap">
|
|
||||||
<p>友情链接</p>
|
|
||||||
<ul>
|
|
||||||
<li><a href="http://www.kyxscms.com" target="_blank">狂雨小说cms</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="foot_B">
|
|
||||||
<p class="Co">
|
|
||||||
Copyright (C) 2008-2020 All rights reserved
|
|
||||||
<br>
|
|
||||||
<a href="javascript:void(0)" style="margin: 0 10px;"></a>
|
|
||||||
</p>
|
|
||||||
<p>请所有作者发布作品时务必遵守国家互联网信息管理办法规定,我们拒绝任何色情小说,一经发现,即作删除!本站所收录作品、社区、书库评论及本站所做之广告均属其个人行为,与本站立场无关</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<span class="gotop" id="btn_back_top" title="返回顶部">
|
|
||||||
<img src="/template/kuangyu/home/bai_web/images/gotop.png" data-src="/template/kuangyu/home/bai_web/images/gotop.png" alt="返回顶部"
|
|
||||||
ysrc="/template/kuangyu/home/bai_web/images/gotop.png">
|
|
||||||
</span>
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<a href="/pc/novel/332.html" target="_blank">
|
|
||||||
<img class="lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"></a>
|
|
||||||
</td>
|
|
||||||
<td class="t2">
|
|
||||||
<a href="/pc/novel/332.html" target="_blank">我真是一条龙</a>
|
|
||||||
</td>
|
|
||||||
<td class="t3">
|
|
||||||
<a href="/pc/chapter/1-1-1.html" target="_blank">老读者必看公告!!!</a>
|
|
||||||
</td>
|
|
||||||
<td class="t4">
|
|
||||||
<a href="/pc/novel/332.html" target="_blank">兔子很淡定</a>
|
|
||||||
</td>
|
|
||||||
<td class="t5">3天前</td>
|
|
||||||
|
|
||||||
<td class="t6">已完结</td>
|
|
||||||
<td class="t7">
|
|
||||||
<a href="/pc/chapter/1-1-1.html" class="goon" target="_blank">阅读</a>
|
|
||||||
<i><span class="Collection" ajax-get="" >删除</span></i>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
<div class="bookLink">
|
|
||||||
<a href="/pc/novel/265.html" target="_blank">
|
|
||||||
<div class="bookImg">
|
|
||||||
<img class="lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h2>重生八零:寡妇带娃巧发家</h2>
|
|
||||||
<span>姣大憨</span>
|
|
||||||
<p> 【萌宝+美食+种田+爽文】现代单身美食博主许芳华一朝穿越,竟成为八零年代小寡妇。 丈夫因公殉职,婆婆小姑子霸占抚恤金不撒手,婆家兄长对这三间瓦房虎视眈眈。
|
|
||||||
许芳华看着怀里瑟瑟发抖的小女儿,撸起袖子就去虐渣。吃了我的给我吐出来,占了我的给我还回来! 作为一个现代独立女性,看她如何用美食养娃致富,人生赢家妥妥的!
|
|
||||||
本站提示:各位书友要是觉得《重生八零:寡妇带娃巧发家》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!</p>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
<div class="bookLink oneLine">
|
|
||||||
<a href="/pc/novel/293.html" target="_blank"><em>「武侠仙侠」</em>玻璃焰</a>
|
|
||||||
</div>
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<li>
|
|
||||||
<h3><a href="/pc/novel/293.html" title="玻璃焰" target="_blank">玻璃焰</a></h3>
|
|
||||||
<div class="book_inf">
|
|
||||||
<span class="aut">美绿哔哔</span>
|
|
||||||
<span class="tag"><a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
|
|
||||||
<a href="/pc/novel/293.html" title="玻璃焰" target="_blank" class="book_cov">
|
|
||||||
<img class="lazyload_book_cover lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
|
|
||||||
alt="玻璃焰">
|
|
||||||
</a>
|
|
||||||
<p class="int"> [已签约实体待上市]【天生坏种x清冷校花】【大学校园、男追女、协议情侣、强制爱、破镜重圆】黎幸在整个西京大学都很有名。
|
|
||||||
高考状元,够美,够穷。这样的人,外貌不是恩赐,是原罪。楼崇,出生即登上金字塔最顶层的存在优越家世,顶级皮囊但却是个十足十的人渣。
|
|
||||||
——这样两个毫无交集的人,某天却被人撞见楼崇的阿斯顿马丁车内黎幸被单手抱起跨坐在腿上,后背抵着方向盘车窗光影交错,男人冷白精致的侧脸清晰可见,扣着她的手腕,亲自教她怎么扯开自己的领结。
|
|
||||||
—— “协议女友,知道什么意思吗?” “意思是牵手,接吻,拥抱,上床。” “以及,爱上我。” “一步不能少。”—— “玻璃焰,玻璃高温产生的火焰,银蓝色,很美。”
|
|
||||||
本站提示:各位书友要是觉得《玻璃焰》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
<div class="f3_L">
|
|
||||||
<h3><a href="/pc/novel/294.html" title="渣攻的白月光总对我打直球" target="_blank">渣攻的白月光总对我打直球</a></h3>
|
|
||||||
<a href="/pc/novel/294.html" title="渣攻的白月光总对我打直球" target="_blank" class="book_cov">
|
|
||||||
<img class="lazyload_book_cover lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
|
|
||||||
alt="渣攻的白月光总对我打直球">
|
|
||||||
</a>
|
|
||||||
<div class="book_inf">
|
|
||||||
<div class="book_inf01">
|
|
||||||
<span class="aut">作者:不见仙踪</span>
|
|
||||||
<span class="fr">分类:<a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
|
|
||||||
<span>字数:24.20万字+</span>
|
|
||||||
<span class="fr">进度:已完结</span>
|
|
||||||
<span>总点击:0</span>
|
|
||||||
</div>
|
|
||||||
<p class="int"> 【下本开《分手后四个鬼攻同时找上我》嗷~】 大二上学期,宣从南被一个温柔至极的男人追求;大二下学期,宣从南和沈迁在一起。
|
|
||||||
两个人谈了一年恋爱,宣从南发现,沈迁照常温柔,但他却常常把这样的话挂在嘴边: “不要笑。” “安静一点。” “不要太闹腾。” “眼里不要有温度。” “这样才像他。” 宣从南:……哦。
|
|
||||||
宣从南走了,潇洒果决,晚上却在路边捡到一个看起来落魄至极的男人。他耷拉着眉眼,带口罩,安静地坐在花坛边,似乎是在晒月光。 这人倒是很安静,还不笑,更不闹腾,眼里也没有温度。
|
|
||||||
宣从南把人捡回家了。他发现,这个名叫顾拾的男人竟然是娱乐圈里的顶流,只不过他不太关注娱乐圈,这才错误地把拥有千万粉丝的人捡回了家。
|
|
||||||
宣从南还发现,顾拾虽然过分冷淡,但他打直球说能不能喜欢我;顾拾虽然安静不闹腾,但他打直球说能不能抱抱我;顾拾虽然眼睛里没什么温度,但他打直球说能不能做…… 宣从南:这就是顶流吗?
|
|
||||||
“同居”段时间,两人顺理成章地谈恋爱。 又同居段时间,宣从南忽而得知顾拾就是沈迁爱而不得的白月光。 宣从南:……命运啊。
|
|
||||||
为了避免尴尬,他收拾行李又打算跑,刚走到门口却只听一道开门声,顾拾裹挟着外面的寒气进来,轻轻带上门。 宣从南:…… 顾拾冷淡的目光从上到下打量他,最后落在行李箱上。 “去哪儿?”他问。
|
|
||||||
宣从南捏紧行李杆,正欲说话,顾拾又道: “你想甩了我?” …… 这天晚上有狗仔拍到顾拾进了一间出租屋。 除了顾拾,窗户玻璃上还映出另外一道男性身影,他手边还有个行李箱。
|
|
||||||
紧接着,一向喜怒不形于色的顾拾猛地推开行李箱,拽起另一人的手腕去了卧室。 一夜没出来。 【阅读指南】: *1V1,HE,甜文。 *攻非常非常非常爱受,非常非常非常宠受
|
|
||||||
*攻能直球绿茶也能偏执疯批,属性复杂,天使们直接看文叭 *有打脸剧情 *无原型,勿代入现实。我写文为了快乐,也只想让读者快乐~ *感谢支持正版,给大家鞠躬啦~
|
|
||||||
★下本《分手后四个鬼攻同时找上我》求收藏~ 宴祀亭是个小道士,山生山长,没见过外面的天,最大的雄心壮志是杀死鬼王。 但他怕鬼,还花心。 下山后进城,他在酒吧泡了一个大学教授做男朋友。
|
|
||||||
教授克制古板,一副性冷淡的模样。 但他“暴力”且沉沦地教会了宴祀亭在床上的108种姿势。 每天晚上宴祀亭都被哔的“身心俱散”。 随着感情渐深,教授带宴祀亭回家见父母。 他家里有鬼,好多鬼。
|
|
||||||
那些鬼躲在门外、趴在床底听他和教授...... 宴祀亭瑟瑟发抖,教授却像没事人,依然一次比一次深入。 宴祀亭:师父救命——
|
|
||||||
日复一日,教授变得愈发过分。他中午要抱宴祀亭亲昵,下午要抱宴祀亭厮磨,晚上要抱宴祀亭深入交流,非常不节制。 最后他还设门禁时间限制宴祀亭的出行,控制欲极强。 宴祀亭受不了,把人踹了。
|
|
||||||
他谈了第二个男朋友。 但为什么温柔先生最后因他变得野蛮,各种道具都上场; 绅士先生因他变成恶棍,让他不准离开自己的视线; 禁欲先生因他变得纵荡,永远都要按着他驰骋......
|
|
||||||
宴祀亭:师父我遇到了好多变态,我要回山立刻马上! 身心遭受“严重摧残”的宴祀亭决定封心锁爱,这辈子都不要泡男人了,要去完成自己的雄心壮志——杀死鬼王。
|
|
||||||
紧接着被甩的教授将他堵在家门口,唇角带笑声含魅:“不是要杀我吗?我来了。” 晦暗夜色下,教授身后又慢慢浮现出温柔先生、绅士先生、禁欲先生的身影,他们都在盯着宴祀亭。
|
|
||||||
教授柔声道:“你是要我们一起来,还是一个一个来呢。” 宴祀亭抖如筛糠无可逃脱地被他们推进了卧室。恶鬼们商量谁先来,最后愉快地决定一起。 “不要,救命啊啊啊啊啊啊啊啊啊——” *切片攻
|
|
||||||
*所有躲门外趴床底听床戏的,都是攻的切片 ★求预收《不是人也能攻我?》收藏~ 司徒禁肩宽窄腰身材好,胸肌饱满腿长,在男同界是被许多人觊觎的优质1。
|
|
||||||
有人找司徒禁拍钙片,身为直男的司徒禁果断拒绝。 等再醒来,司徒禁发现他穿到了异世界。 这里到处是妖魔鬼怪。
|
|
||||||
司徒禁有个极倒霉的倒霉体质,喝凉水塞牙缝,吃东西噎喉咙,睡觉能窒息。再又一次平地摔跤后,司徒禁气得破口大骂。 那些神经病又来了。 玛德,这次还敢撕他衣服!
|
|
||||||
这个世界不止他一个倒霉蛋,还有ABCDE等男人进来了。 老乡见老乡两眼泪汪汪,司徒禁和大家互相扶持,把这群想上他的变态杀得四处逃窜。 然后有一天,司徒禁看见男人 A 帮鬼撕碎了他的上衣。
|
|
||||||
司徒禁:? 男人B帮鬼扯烂了他的裤子。 司徒禁:?? 男人C帮鬼拽掉了他的衬衫夹。 司徒禁:??? 混乱中,谁摸了他的胸肌! 谁捏了他的屁股!! 谁掰开了他的腿!!!
|
|
||||||
司徒禁冷笑:想攻我的千千万,你算哪块小饼干?! ABCDE 得逞,鬼得逞,怪物藤蔓得手,触手得逞...... 被迫野战后司徒禁躺在草地里抽事后烟,沉思:是个人都能攻我?不是人也能攻我?
|
|
||||||
而他不知道,他进入的异世界其实是一个系列视频,无数观众坐在电视机前,每天就为了看他闯关。 司徒禁:什么关?“床”关吗? *切片攻,每个都为了受打得头破血流,甚至想杀了自己的分身
|
|
||||||
*受极度理智冷静大胸美人 *攻疯得一批,每个切片都想独占囚禁受 *直播镜头前的观众只能看正经闯关,其他的看不到,花钱做榜一也没用
|
|
||||||
本站提示:各位书友要是觉得《渣攻的白月光总对我打直球》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
<li>
|
|
||||||
<em class="red_bg">{$key+=1}</em>
|
|
||||||
<h3 class="name"><a href="/pc/novel/276.html" title="娱乐宗师" target="_blank">娱乐宗师</a></h3>
|
|
||||||
<div class="open">
|
|
||||||
<a href="/pc/novel/276.html" title="娱乐宗师" target="_blank" class="book_cov">
|
|
||||||
<img class="lazyload_book_cover lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg" alt="娱乐宗师">
|
|
||||||
</a>
|
|
||||||
<div class="book_inf">
|
|
||||||
<span class="aut">作者:猩猩崛起</span>
|
|
||||||
<span>类别:<a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
|
|
||||||
<p class="int"> 小工作室的微电影导演,重生平行世界!踏上娱乐征途!
|
|
||||||
本站提示:各位书友要是觉得《娱乐宗师》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<li class="lis_sh">
|
|
||||||
<em class="red_bg">1</em>
|
|
||||||
<h3 class="name"><a href="/pc/novel/275.html" title="捻转步舞曲[花滑]" target="_blank">捻转步舞曲[花滑]</a>
|
|
||||||
</h3>
|
|
||||||
<div class="open">
|
|
||||||
<a href="/pc/novel/275.html" title="捻转步舞曲[花滑]" target="_blank" class="book_cov">
|
|
||||||
<img class="lazyload_book_cover lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg" alt="捻转步舞曲[花滑]">
|
|
||||||
</a>
|
|
||||||
<div class="book_inf">
|
|
||||||
<span class="aut">作者:梧桐树下wt</span>
|
|
||||||
<span>类别:<a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
|
|
||||||
<p class="int"> 【本文将会于2023年9月30日星期六入V,谢谢支持!】 【求投票——《成长·逆袭》主题征文——作品投票——鱼跃龙门后来居上】
|
|
||||||
【每5K营养液加更一章】 作为刚升组没多久,在华国内难得可以跳跃演绎两手抓的男子单人花滑选手,郁辰被队里的教练们给予极大的厚望。
|
|
||||||
并且整个教练团也在想尽各种方法教导这位,冰上冰下两个样子,经常会躲起来不见人的闷葫芦。 “到底有什么办法,能让那家伙在冰下的时候,有上冰那会百分之一的灵气啊!”
|
|
||||||
只有郁辰他本人知道——他无论什么时候,都爱惨了艺术与冰面结合起来的样子。 ——只是台下之后,不会表达而已。
|
|
||||||
一切的变动,从他没忍住在莫斯科赛后偷瞒着教练,去看了一场芭蕾舞舞台剧之后。 追着一见钟情的男孩来到异国,并且努力学了中文的佐切卡:你好,郁!能我你拥抱?
|
|
||||||
沉思了好久,才理清楚他语法顺序的郁辰:你学顺了中文再和我说话吧。 佐切卡(惊喜):那就是可以了!
|
|
||||||
于是某位男单运动员就被纤细高挑练跳舞的熊抱住了一个下午,跑都跑不掉。 来自莫斯科的芭蕾舞者X略显自闭的花滑选手 1、故事里面所有人物故事,经历都没有原型。
|
|
||||||
2、作者对于花滑的认知还没有到完全专业水平,但是所有技术动作描写,比赛规则描述,都有资料支持。
|
|
||||||
3、如果有技术问题需要讨论可以随时留评,我看到后会回复的。看了每章词汇解释还是不懂的话也可以留评,我会想办法换一种解释试试看的(作者是真想教会你们滑冰系列)。
|
|
||||||
4、最重要一点——无论怎么样的情感下,都请不要轻易怀疑运动员对该项目的热爱。 5、停在‘4’好像不太好,所以写了个‘5’。
|
|
||||||
本站提示:各位书友要是觉得《捻转步舞曲[花滑]》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<li>
|
|
||||||
<ul>
|
|
||||||
<li class="lb"><a href="/" target="_blank">耽美百合</a></li>
|
|
||||||
<li class="sm">
|
|
||||||
<h3><a href="/pc/novel/332.html" title="我真是一条龙" target="_blank">我真是一条龙</a></h3>
|
|
||||||
</li>
|
|
||||||
<li class="gx"><a href="/pc/chapter/1-1-1.html" title="老读者必看公告!!!"
|
|
||||||
target="_blank">老读者必看公告!!!</a></li>
|
|
||||||
<li class="zz">兔子很淡定</li>
|
|
||||||
<li class="sj">1天前</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<li>
|
|
||||||
<a href="/pc/novel/334.html" target="_blank" class="book_cov" title="落魄千金美食发家日常">
|
|
||||||
<img class="lazyload_book_cover lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg" alt="落魄千金美食发家日常">
|
|
||||||
</a>
|
|
||||||
<div class="book_inf">
|
|
||||||
<h3><a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank">落魄千金美食发家日常</a></h3>
|
|
||||||
<p>
|
|
||||||
<span>作者:<a href="/search/%E9%B1%BC%E6%98%86%E5%AD%90.html" title="鱼昆子">鱼昆子</a></span>
|
|
||||||
<span>分类:<a href="/lists/4.html" title="男生">男生</a></span>
|
|
||||||
<span>状态:已完结</span>
|
|
||||||
<span>总字数:43.80万字+</span>
|
|
||||||
</p>
|
|
||||||
<p class="tags">
|
|
||||||
<i>标签:</i>
|
|
||||||
<i></i>
|
|
||||||
</p>
|
|
||||||
<p><b>最近更新:</b><a href="/pc/chapter/1-1-1.html" title="219 桃花酿" target="_blank">219 桃花酿</a>
|
|
||||||
</p>
|
|
||||||
<p class="int"> 正文已完结,福利番外待续! 预收《癫疯人生有多爽你知道吗》《当家主母的咸鱼美食日常》戳专栏求收藏。 ——————— 温仲夏身为百万粉丝美食博主,一朝穿越。
|
|
||||||
好消息,穿成尚书千金。 坏消息,父兄获罪被贬到千里之外。 身边只有一个柔弱的嫂嫂和年幼的小弟。 开局就是一个交不上房租,大雪天几乎要流落街头的惨境。 温仲夏来不及哭,撸起袖子就是干。
|
|
||||||
红烧肉火锅烧烤爆米花卷饼卤肉奶茶小蛋糕…… 她就不信这些东京人都不爱吃。 不成的话,她还有麻辣烫烤鸭炸鸡酸辣粉炸酱面汤圆大馄饨…… 一不小心,落魄千金混成东京知名女掌柜。 …… 小剧场:
|
|
||||||
一众贵女听闻温仲夏当街叫卖吃食后,纷纷对她这种抛头露面的行为狠狠批判。 几天后,她们却在温仲夏的食店门口不期而遇。 “你怎么来了,不会是来买蛋挞的吧?” “难道你也是?”
|
|
||||||
“我可不是,我还要买奶油蛋糕呢。” 说好的不齿与之为伍呢? 这时店内传来吆喝:“数量有限,先到先得。” 贵女们忙不迭地往里冲。 “我先来的!” ①本文主线是美食和日常。
|
|
||||||
②背景主要参考宋朝,不严谨的地方请见谅。
|
|
||||||
本站提示:各位书友要是觉得《落魄千金美食发家日常》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!</p>
|
|
||||||
</div>
|
|
||||||
<div class="right">
|
|
||||||
<span>更新时间:2025-03-20 23:59</span>
|
|
||||||
<a href="/pc/novel/334.html" target="_blank" class="read_btn btn">立即阅读</a>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<li>
|
|
||||||
<a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank" class="book_cov">
|
|
||||||
<img class="lazyload_lb_nv lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
|
|
||||||
alt="落魄千金美食发家日常">
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
<li data-desc=" 正文已完结,福利番外待续! 预收《癫疯人生有多爽你知道吗》《当家主母的咸鱼美食日常》戳专栏求收藏。 ——————— 温仲夏身为百万粉丝美食博主,一朝穿越。 好消息,穿成尚书千金。 坏消息,父兄获罪被贬到千里之外。 身边只有一个柔弱的嫂嫂和年幼的小弟。 开局就是一个交不上房租,大雪天几乎要流落街头的惨境。 温仲夏来不及哭,撸起袖子就是干。 红烧肉火锅烧烤爆米花卷饼卤肉奶茶小蛋糕…… 她就不信这些东京人都不爱吃。 不成的话,她还有麻辣烫烤鸭炸鸡酸辣粉炸酱面汤圆大馄饨…… 一不小心,落魄千金混成东京知名女掌柜。 …… 小剧场: 一众贵女听闻温仲夏当街叫卖吃食后,纷纷对她这种抛头露面的行为狠狠批判。 几天后,她们却在温仲夏的食店门口不期而遇。 “你怎么来了,不会是来买蛋挞的吧?” “难道你也是?” “我可不是,我还要买奶油蛋糕呢。” 说好的不齿与之为伍呢? 这时店内传来吆喝:“数量有限,先到先得。” 贵女们忙不迭地往里冲。 “我先来的!” ①本文主线是美食和日常。 ②背景主要参考宋朝,不严谨的地方请见谅。
|
|
||||||
本站提示:各位书友要是觉得《落魄千金美食发家日常》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!" class="on">
|
|
||||||
<s class="arr"></s>
|
|
||||||
<s class="xh">1</s>
|
|
||||||
<i>落魄千金美食发家日常</i>
|
|
||||||
</li>
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name="title"}我的书架{/block}
|
|
||||||
{block name="keywords"}我的书架{/block}
|
|
||||||
{block name="description"}我的书架{/block}
|
|
||||||
{block name="head"}
|
|
||||||
<!-- 社交媒体标签 -->
|
|
||||||
<meta property="og:title" content="{$strTitle??''}" />
|
|
||||||
<meta property="og:description" content="{$strDescription??''}" />
|
|
||||||
<meta property="og:url" content="https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}" />
|
|
||||||
<meta property="og:type" content="article" />
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}",
|
|
||||||
"@type": "article",
|
|
||||||
"headline": "我的书架",
|
|
||||||
"description": "我的书架",
|
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{block name="head-js"}{/block}
|
|
||||||
|
|
||||||
|
|
||||||
{block name="body-class"}novel_home{/block}
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout layout3 layout-col3 fl">
|
|
||||||
<h2 class="layout-tit">我的书架</h2>
|
|
||||||
<div class="layout layout-col3" id="shujiaContainer"></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
<script>
|
|
||||||
const strNovelUrlTemp = `{site:replace code="NOVEL_INFO_URL"}`;
|
|
||||||
const strNovelChapterUrlTemp = `{site:replace code="CONTENT_INFO_URL"}`;
|
|
||||||
const strSearchUrlTemp = `{site:replace code="SEARCH_INFO_URL"}`;
|
|
||||||
// 调用展示书架功能
|
|
||||||
displayShujia();
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{extend name="basePc" /}
|
|
||||||
{block name="title"}我的阅读记录{/block}
|
|
||||||
{block name="keywords"}我的阅读记录{/block}
|
|
||||||
{block name="description"}我的阅读记录{/block}
|
|
||||||
{block name="head"}
|
|
||||||
<!-- 社交媒体标签 -->
|
|
||||||
<meta property="og:title" content="{$strTitle??''}" />
|
|
||||||
<meta property="og:description" content="{$strDescription??''}" />
|
|
||||||
<meta property="og:url" content="https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}" />
|
|
||||||
<meta property="og:type" content="article" />
|
|
||||||
<!-- 结构化数据 -->
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}",
|
|
||||||
"@type": "article",
|
|
||||||
"headline": "{$strTitle??''}",
|
|
||||||
"description": "{$strDescription??''}",
|
|
||||||
"datePublished": "{:date('Y-m-d')}"
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{block name="head-js"}{/block}
|
|
||||||
|
|
||||||
|
|
||||||
{block name="body-class"}novel_home{/block}
|
|
||||||
|
|
||||||
{block name="main"}
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="layout layout3 layout-col3 fl">
|
|
||||||
<h2 class="layout-tit">阅读记录</h2>
|
|
||||||
<div class="layout layout-col3" id="shujiaContainer"></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
|
|
||||||
{block name="customize"}
|
|
||||||
<script>
|
|
||||||
const strNovelUrlTemp = `{site:replace code="NOVEL_INFO_URL"}`;
|
|
||||||
const strNovelChapterUrlTemp = `{site:replace code="CONTENT_INFO_URL"}`;
|
|
||||||
const strSearchUrlTemp = `{site:replace code="SEARCH_INFO_URL"}`;
|
|
||||||
// 调用展示书架功能
|
|
||||||
displayHistory();
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
<li>
|
|
||||||
<a href="/chapter/1-1-1.html" title="01 天龙问世">01 天龙问世</a>
|
|
||||||
</li>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<li class="chapter-li jsChapter">
|
|
||||||
<a href="/chapter/1-1-1.html" class="chapter-li-a"
|
|
||||||
data-chapter-id="4b2d5aab58d71">
|
|
||||||
<span class="chapter-index">01 天龙问世</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="chapter-li jsChapter">
|
|
||||||
<a href="/chapter/1-1-1.html" class="chapter-li-a"
|
|
||||||
data-chapter-id="486ef2abee55d">
|
|
||||||
<span class="chapter-index">02 沧武的小霸王</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
@@ -3,10 +3,13 @@
|
|||||||
<!-- footer -->
|
<!-- footer -->
|
||||||
<div id="firendlink">
|
<div id="firendlink">
|
||||||
友情连接:
|
友情连接:
|
||||||
|
|
||||||
|
|
||||||
<a href="/sitemap_index.xml">XML地图</a>
|
<a href="/sitemap_index.xml">XML地图</a>
|
||||||
<a href="/site.txt">网站地图</a>
|
<a href="/site.txt">网站地图</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="firendlink">
|
||||||
|
最新标签:
|
||||||
|
|
||||||
{site:forgelist count="30" d_key="d_key" d_val="ForgeNovel" cache_life="86400"}
|
{site:forgelist count="30" d_key="d_key" d_val="ForgeNovel" cache_life="86400"}
|
||||||
<a
|
<a
|
||||||
href='{site:nnurl n_id="$ForgeNovel.n_id" n_py="$ForgeNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>
|
href='{site:nnurl n_id="$ForgeNovel.n_id" n_py="$ForgeNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
<li class="li2">
|
|
||||||
<a href="/novel/332.html">
|
|
||||||
<div class="leftImage2 "><img class="lazyload-img"
|
|
||||||
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"></div>
|
|
||||||
<div class="rightBlock">
|
|
||||||
<span class="rightBlock_title">我真是一条龙</span>
|
|
||||||
<span class="rightBlock_name">耽美百合</span>
|
|
||||||
<span class="rightBlock_con rightBlock_con2">
|
|
||||||
<span class="con">
|
|
||||||
<span class="spanLi">老读者必看公告!!!</span>
|
|
||||||
</span>
|
|
||||||
<span class="spanLi Time">4天前</span>
|
|
||||||
<span class="rightJustTime"
|
|
||||||
onclick="javascript:window.location.href='/book/12538/4b2d5aab58d71.html';return false;">继续阅读</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<span class="deleteBlock" ajax-get="" url="/user/bookshelf/del/id/3.html"></span>
|
|
||||||
</li>
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<div class="bg-top-pink bg-top-pink-minheight"></div>
|
<div class="bg-top-pink bg-top-pink-minheight"></div>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="title-text">[strItemTiele]</div>
|
<h2 class="title-text">[strItemTiele]</h2>
|
||||||
<div class="more">
|
<div class="more">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<span class="icon__left-label">更多</span>
|
<span class="icon__left-label">更多</span>
|
||||||
<a class="svg" href='{site:nflurl order="tuijian" page="1"/}'>
|
<a class="svg" href='{site:nflurl order="tuijian" page="1"/}' title="[strItemTiele]">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
|
||||||
<path
|
<path
|
||||||
d="M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z">
|
d="M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z">
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
<div class="novel-item">
|
<div class="novel-item">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<img class="pre-img lozad" data-encrypted="false"
|
<img class="pre-img lozad" data-encrypted="false"
|
||||||
src="/assets/images/loading_img_bg_default.jpg"
|
src="/static/img/default.jpg"
|
||||||
data-src="{$Novel.n_cover_path}">
|
data-src="{$Novel.n_cover_path}" alt="{$Novel['n_name'] ?? ''}小说封面 - {$Novel.n_author}最新章节">
|
||||||
{if isset($showIconStatus) && $showIconStatus == 'paixu'}
|
{if isset($showIconStatus) && $showIconStatus == 'paixu'}
|
||||||
<div class="icon-status">{$key + 1}</div>
|
<div class="icon-status">{$key + 1}</div>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -13,6 +13,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">{$Novel.n_name}</div>
|
<h3 class="bottom">{$Novel.n_name}</h3>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
<div class="block_img">
|
<div class="block_img">
|
||||||
<a href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin"/}'>
|
<a href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin"/}'>
|
||||||
<img class="pre-img lozad" data-encrypted="false"
|
<img class="pre-img lozad" data-encrypted="false"
|
||||||
src="/assets/images/loading_img_bg_default.jpg"
|
src="/static/img/default.jpg"
|
||||||
data-src="{$Novel.n_cover_path}">
|
data-src="{$Novel.n_cover_path}" alt="{$Novel['n_name'] ?? ''}小说封面 - {$Novel.n_author}最新章节">
|
||||||
|
|
||||||
{if isset($showIconStatus) && $showIconStatus}
|
{if isset($showIconStatus) && $showIconStatus}
|
||||||
<div class="icon-status">{$key + 1}</div>
|
<div class="icon-status">{$key + 1}</div>
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<p class="p1">
|
<p class="p1">
|
||||||
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'></a>
|
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'></a>
|
||||||
</p>
|
</p>
|
||||||
<h2><a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a></h2>
|
<h3><a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a></h3>
|
||||||
<p class="xiaoshuo_info"><span>{$Novel.n_category} </span><span> {$Novel.n_status}</span> <span> {$Novel.n_author}</span></p>
|
<p class="xiaoshuo_info"><span>{$Novel.n_category} </span><span> {$Novel.n_status}</span> <span> {$Novel.n_author}</span></p>
|
||||||
<p class="xiaoshuo_maioshu">
|
<p class="xiaoshuo_maioshu">
|
||||||
<a class="ellipsis" href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
|
<a class="ellipsis" href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
<li class="s1">
|
|
||||||
<img class="pic lazy lazyload-img" data-encrypted="false" src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
|
|
||||||
alt="我真是一条龙" />
|
|
||||||
<a class="tit" href="/novel/332.html">我真是一条龙</a>
|
|
||||||
<p class="intro">
|
|
||||||
我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。
|
|
||||||
无情无义闹天下,千军万马赴黄泉。
|
|
||||||
本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!
|
|
||||||
</p>
|
|
||||||
<p class="info">
|
|
||||||
<span>
|
|
||||||
<aria>作者:</aria>兔子很淡定
|
|
||||||
</span>
|
|
||||||
<em class="type">耽美百合</em>
|
|
||||||
<!-- <em class="finish">已完结</em> -->
|
|
||||||
<em class="serial">已完结</em>
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
<li class="s2">
|
|
||||||
<h5 class="tit">
|
|
||||||
<a href="/novel/1.html">我真是一条龙</a>
|
|
||||||
</h5> <i class="num"><em>{$key+=1}</em></i>
|
|
||||||
</li>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<li>
|
|
||||||
<a href="/novel/1.html">
|
|
||||||
<img class="lazy lazyload-img" data-encrypted="false" src="/static/img/default.jpg"
|
|
||||||
data-src="https://www.630zw.org/img/176943.jpg" alt="落魄千金美食发家日常" />
|
|
||||||
<span>落魄千金美食发家日常</span>
|
|
||||||
<em>
|
|
||||||
<aria>作者:</aria>鱼昆子
|
|
||||||
</em>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
294
code/app/home/view/shikong/sitemap/index.md
Normal file
294
code/app/home/view/shikong/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/shikong/sitemap/robots.txt
Normal file
3
code/app/home/view/shikong/sitemap/robots.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
|
Sitemap: https://{$DomainModel->d_domain}/sitemap_index.xml
|
||||||
18
code/app/home/view/shikong/sitemap/sitemap-books-catalog.xml
Normal file
18
code/app/home/view/shikong/sitemap/sitemap-books-catalog.xml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<!-- // TODO 根据分页查询,按顺序 每页 50000个小说 -->
|
||||||
|
{novel:pagerexp page="$Request.get.page" limit="50000"
|
||||||
|
d_key="key"
|
||||||
|
d_val="Novel"
|
||||||
|
p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager" export_name="resData" /}
|
||||||
|
|
||||||
|
{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>
|
||||||
18
code/app/home/view/shikong/sitemap/sitemap-books.xml
Normal file
18
code/app/home/view/shikong/sitemap/sitemap-books.xml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<!-- // TODO 根据分页查询,按顺序 每页 50000个小说 -->
|
||||||
|
{novel:pagerexp page="$Request.get.page" limit="50000"
|
||||||
|
d_key="key"
|
||||||
|
d_val="Novel"
|
||||||
|
p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager" export_name="resData" /}
|
||||||
|
|
||||||
|
{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}
|
||||||
|
<!-- 最多 50,000 个 <url> 条目 -->
|
||||||
|
</urlset>
|
||||||
11
code/app/home/view/shikong/sitemap/sitemap-chapters.xml
Normal file
11
code/app/home/view/shikong/sitemap/sitemap-chapters.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<!-- // TODO 根据分页 查询最新 50000条章节 -->
|
||||||
|
<url>
|
||||||
|
<loc>https://www.{$DomainModel->d_domain}/chapters1</loc>
|
||||||
|
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<!-- 最多 50,000 个 <url> 条目 -->
|
||||||
|
</urlset>
|
||||||
28
code/app/home/view/shikong/sitemap/sitemap-main.xml
Normal file
28
code/app/home/view/shikong/sitemap/sitemap-main.xml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?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>
|
||||||
|
|
||||||
|
<!-- 分类 -->
|
||||||
|
{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>
|
||||||
37
code/app/home/view/shikong/sitemap/sitemap_index.xml
Normal file
37
code/app/home/view/shikong/sitemap/sitemap_index.xml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?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>
|
||||||
|
|
||||||
|
<!-- TODO 小说总数量/50000 得出 sitemap-books一共有多少个 -->
|
||||||
|
<sitemap>
|
||||||
|
<loc>https://www.{$DomainModel->d_domain}/sitemap-books-1.xml</loc>
|
||||||
|
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||||
|
</sitemap>
|
||||||
|
<sitemap>
|
||||||
|
<loc>https://www.{$DomainModel->d_domain}/sitemap-books-2.xml</loc>
|
||||||
|
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||||
|
</sitemap>
|
||||||
|
|
||||||
|
<!-- TODO 小说总数量/50000 得出 sitemap-books-catalog一共有多少个,每个小说只取一个目录链接,分页不需要加入去 -->
|
||||||
|
<sitemap>
|
||||||
|
<loc>https://www.{$DomainModel->d_domain}/sitemap-books-catalog-1.xml</loc>
|
||||||
|
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||||
|
</sitemap>
|
||||||
|
<sitemap>
|
||||||
|
<loc>https://www.{$DomainModel->d_domain}/sitemap-books-catalog-2.xml</loc>
|
||||||
|
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||||
|
</sitemap>
|
||||||
|
|
||||||
|
<!-- ...小说章节取最新50w条 这里生成10个索引文件即可 -->
|
||||||
|
{for start="1" end="11"}
|
||||||
|
<sitemap>
|
||||||
|
<loc>https://www.{$DomainModel->d_domain}/sitemap-chapters-{$i}.xml</loc>
|
||||||
|
<lastmod>{:date('Y-m-d')}</lastmod>
|
||||||
|
</sitemap>
|
||||||
|
{/for}
|
||||||
|
|
||||||
|
|
||||||
|
</sitemapindex>
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
{novel:info n_id="$DomainModel->n_id" n_key="arrNovel01" n_forge_id="1125940" /}
|
|
||||||
<title>{$arrNovel01.n_name} - 首页</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{$arrNovel01.n_description}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
{site:forgelist count="3" d_key="d_key" d_val="novel" cache_life="1000"}
|
|
||||||
<li>
|
|
||||||
Index: {$d_key}
|
|
||||||
Title: {$novel.n_name}
|
|
||||||
Author: {$novel.n_category}
|
|
||||||
</li>
|
|
||||||
{/site:forgelist}
|
|
||||||
|
|
||||||
|
|
||||||
<!-- {novel:ranklist count="10" sort_type="total" n_status="wanjie" n_sex="man" d_key="d_key" d_val="novel" cache_life="1000"}
|
|
||||||
<li>
|
|
||||||
Index: {$d_key}
|
|
||||||
Title: {$novel.n_name}
|
|
||||||
Author: {$novel.n_category}
|
|
||||||
</li>
|
|
||||||
{/novel:ranklist} -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- {novel:pagerexp page="1" limit="10" n_category="$Request.route.category" d_key="d_key" d_val="novel" p_val="page_data"
|
|
||||||
cache_life="1000" func="generateSearchPager" export_name="fadfads" /}
|
|
||||||
|
|
||||||
{php}var_dump($fadfads['p_data']);{/php} -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- {novel:pager page="1" limit="10" n_category="$Request.route.category" d_key="d_key" d_val="novel" p_val="page_data"
|
|
||||||
cache_life="1000" func="generateSearchPager"}
|
|
||||||
<li>
|
|
||||||
Index: {$d_key}
|
|
||||||
Title: {$novel.n_name}
|
|
||||||
Author: {$novel.n_category}
|
|
||||||
</li>
|
|
||||||
{/novel:pager}
|
|
||||||
|
|
||||||
{php}var_dump($page_data);{/php} -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- {site:grm page_code="fdasfadsf" diff="fadsfdsa" num="10" g_key="arrGrm" /}
|
|
||||||
{php}var_dump($arrGrm);{/php} -->
|
|
||||||
|
|
||||||
<!-- {chapter:info n_id="1" c_sort_num="200" c_page="0" c_key="arrChapter01" /}
|
|
||||||
{$arrChapter01.c_name} -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- {chapter:pager page="1" limit="10" n_id="$Request.get.n_id" d_key="d_key" d_val="chapter" cache_life="1000" button_num="3" sort_type="dao" p_val="page_data" func="generateChapterPager"}
|
|
||||||
<li>
|
|
||||||
Index: {$d_key}
|
|
||||||
章节名称: {$chapter.c_name}
|
|
||||||
章节序号: {$chapter.c_sort_num}
|
|
||||||
</li>
|
|
||||||
{/chapter:pager}
|
|
||||||
{php}var_dump($page_data);{/php} -->
|
|
||||||
|
|
||||||
<!-- {chapter:list count="10" n_id="$Request.get.n_id" d_key="d_key" d_val="chapter" cache_life="1000"}
|
|
||||||
<li>
|
|
||||||
Index: {$d_key}
|
|
||||||
章节名称: {$chapter.c_name}
|
|
||||||
章节序号: {$chapter.c_sort_num}
|
|
||||||
</li>
|
|
||||||
{/chapter:list} -->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
{novel:category d_key="key" d_val="val"}
|
|
||||||
<li>
|
|
||||||
键: {$key} - 值: {$val}
|
|
||||||
</li>
|
|
||||||
{/novel:category} -->
|
|
||||||
|
|
||||||
<!-- {novel:sex d_key="key" d_val="val"}
|
|
||||||
<li>
|
|
||||||
键: {$key} - 值: {$val}
|
|
||||||
</li>
|
|
||||||
{/novel:sex} -->
|
|
||||||
<!--
|
|
||||||
{novel:status d_key="key" d_val="val"}
|
|
||||||
<li>
|
|
||||||
键: {$key} - 值: {$val}
|
|
||||||
</li>
|
|
||||||
{/novel:status} -->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
{novel:sort d_key="key" d_val="val"}
|
|
||||||
<li>
|
|
||||||
键: {$key} - 值: {$val}
|
|
||||||
</li>
|
|
||||||
{/novel:sort} -->
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
{novel:info n_id="33" n_key="arrNovel01" n_forge_id="1125940" /}
|
|
||||||
{$arrNovel01.n_name} -->
|
|
||||||
|
|
||||||
<!-- {$DomainModel->d_domain} -->
|
|
||||||
|
|
||||||
<!-- {site:replace code="INDEX@INDEX@TITLE"}
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- {novel:list count="10" n_category="$Request.route.category" d_key="d_key" d_val="novel" p_val="page_data" cache_life="1000"}
|
|
||||||
<li>
|
|
||||||
Index: {$d_key}
|
|
||||||
Title: {$novel.n_name}
|
|
||||||
Author: {$novel.n_category}
|
|
||||||
</li>
|
|
||||||
{/novel:list} -->
|
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ $arrTKDSubjectFomartGroupData = [
|
|||||||
'NOVEL@GETNOVELINFO@TITLE' => [
|
'NOVEL@GETNOVELINFO@TITLE' => [
|
||||||
'description' => '详情Title 模板分组',
|
'description' => '详情Title 模板分组',
|
||||||
'sfg_id' => 10,
|
'sfg_id' => 10,
|
||||||
'arrSubjectFomart' => $arrSexDescriptionTemp,
|
'arrSubjectFomart' => $arrNovelTitleTemp,
|
||||||
|
|
||||||
],
|
],
|
||||||
'NOVEL@GETNOVELINFO@KEYWORDS' => [
|
'NOVEL@GETNOVELINFO@KEYWORDS' => [
|
||||||
|
|||||||
@@ -2432,11 +2432,16 @@ body.swal2-toast-column .swal2-toast .swal2-validation-message {
|
|||||||
.config-style-hide{
|
.config-style-hide{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.s-logo h1 , .s-logo p{
|
.s-logo h1 ,.s-logo h2 , .s-logo p , .s-logo span{
|
||||||
font-size: .25rem;
|
font-size: .25rem;
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
.s-logo h1 {
|
.s-logo h1 , .s-logo h2 {
|
||||||
letter-spacing:5px;
|
letter-spacing:5px;
|
||||||
|
}
|
||||||
|
.s-logo p, .s-logo span{
|
||||||
|
display: block;
|
||||||
|
letter-spacing:2px;
|
||||||
|
font-size: .2rem;
|
||||||
}
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -153,6 +153,7 @@ body {
|
|||||||
|
|
||||||
.search-tag-content .search-tags .title {
|
.search-tag-content .search-tags .title {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-tag-content .search-tags .tags {
|
.search-tag-content .search-tags .tags {
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ body {
|
|||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
/* padding-top: 8px; */
|
/* padding-top: 8px; */
|
||||||
}
|
}
|
||||||
.block_txt h2 {
|
.block_txt h2 , .block_txt h3{
|
||||||
font-size: 0.26rem;
|
font-size: 0.26rem;
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
display: -webkit-box; /* 必须结合 -webkit-line-clamp 使用 */
|
display: -webkit-box; /* 必须结合 -webkit-line-clamp 使用 */
|
||||||
@@ -244,12 +244,12 @@ margin-right: 0.1rem;
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.site-description {
|
.site-description {
|
||||||
font-size: 0.3rem;
|
font-size: 0.25rem;
|
||||||
padding: 0.1rem 0.1rem;
|
padding: 0.1rem 0.1rem;
|
||||||
line-height: 0.6rem;
|
line-height: 0.4rem;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
margin-bottom: 0.2rem;
|
margin-bottom: 0.2rem;
|
||||||
text-align: center;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
0
code/public/template/shikong/img/favicon.ico
Normal file
0
code/public/template/shikong/img/favicon.ico
Normal file
@@ -1,870 +0,0 @@
|
|||||||
// import { storageObj } from '../huiyuan/public/localstorage.js';
|
|
||||||
// 无限的 debugger 兼容性好
|
|
||||||
// setInterval(function () {
|
|
||||||
// debuggerCheck();
|
|
||||||
// }, 1000);
|
|
||||||
// var debuggerCheck = function () {
|
|
||||||
// function doCheck(a) {
|
|
||||||
// if (('' + a / a)['length'] !== 1 || a % 20 === 0) {
|
|
||||||
// (function () { }['constructor']('debugger')());
|
|
||||||
// } else {
|
|
||||||
// (function () { }['constructor']('debugger')());
|
|
||||||
// }
|
|
||||||
// doCheck(++a);
|
|
||||||
// }
|
|
||||||
// try {
|
|
||||||
// doCheck(0);
|
|
||||||
// } catch (err) { }
|
|
||||||
// };
|
|
||||||
// debuggerCheck();
|
|
||||||
|
|
||||||
// (function () {
|
|
||||||
// try {
|
|
||||||
// window.history.pushState(null, '');
|
|
||||||
// window.addEventListener(
|
|
||||||
// 'popstate',
|
|
||||||
// function () {
|
|
||||||
// window.location.href = atob('aHR0cHM6Ly9zczQwLnNnY2l6dC5jb206MTA4My80MC8=');
|
|
||||||
// },
|
|
||||||
// false
|
|
||||||
// );
|
|
||||||
// } catch (err) { }
|
|
||||||
// })();
|
|
||||||
function layerPopup(strContent, intTime) {
|
|
||||||
layer.open({
|
|
||||||
shadeClose: false,
|
|
||||||
skin: 'msg',
|
|
||||||
content: strContent,
|
|
||||||
time: intTime
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加收藏
|
|
||||||
function incShouCangFun(intId){
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open('GET', "/sc?intId="+intId, true);
|
|
||||||
xhr.setRequestHeader('accept', 'application/x.hubserver.admin+json');
|
|
||||||
xhr.send();
|
|
||||||
xhr.onreadystatechange = function () {
|
|
||||||
|
|
||||||
if (xhr.readyState == 4 && xhr.status == 200) {
|
|
||||||
layerPopup('收藏成功',3)
|
|
||||||
}
|
|
||||||
if (xhr.readyState == 4 && xhr.status == 0) {
|
|
||||||
layerPopup('操作太频繁,稍后再试',3)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const strBookshelfKey = window.location.hostname + 'strBookshelfKey';
|
|
||||||
const strHistoryKey = window.location.hostname + 'strHistoryKey';
|
|
||||||
|
|
||||||
// 加入书架
|
|
||||||
function addShujiaFun(NovelInfo){
|
|
||||||
|
|
||||||
if (!NovelInfo) {
|
|
||||||
NovelInfo = arrNovel
|
|
||||||
}
|
|
||||||
|
|
||||||
let arrBookshelf = JSON.parse(localStorage.getItem(strBookshelfKey)) || [];
|
|
||||||
|
|
||||||
// 检查书籍是否已存在
|
|
||||||
const index = arrBookshelf.findIndex(item => item.n_id === NovelInfo.n_id);
|
|
||||||
|
|
||||||
if (index !== -1) {
|
|
||||||
// 如果存在,更新该书籍的信息
|
|
||||||
arrBookshelf[index] = { ...arrBookshelf[index], ...NovelInfo };
|
|
||||||
layerPopup('已存在书架中!', 3)
|
|
||||||
} else {
|
|
||||||
// 如果不存在,添加到历史记录
|
|
||||||
arrBookshelf.push(NovelInfo);
|
|
||||||
layerPopup('已成功加入书架!', 3)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新本地存储
|
|
||||||
localStorage.setItem(strBookshelfKey, JSON.stringify(arrBookshelf));
|
|
||||||
}
|
|
||||||
|
|
||||||
function displayShujia() {
|
|
||||||
// 获取书架数据
|
|
||||||
const shujia = JSON.parse(localStorage.getItem(strBookshelfKey)) || [];
|
|
||||||
|
|
||||||
if (shujia.length === 0) {
|
|
||||||
console.log('书架为空');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 渲染书籍列表
|
|
||||||
const shujiaContainer = document.getElementById('shujiaContainer');
|
|
||||||
shujiaContainer.innerHTML = ''; // 清空原内容
|
|
||||||
|
|
||||||
shujia.forEach(book => {
|
|
||||||
const bookElement = document.createElement('div');
|
|
||||||
bookElement.className = 'book-item';
|
|
||||||
bookElement.innerHTML = `
|
|
||||||
<div class="list-header">
|
|
||||||
<div class="block_img">
|
|
||||||
<a href="/xq/${book.xsxq_id}-${book.xsxq_source_id}-${book.xsxq_source_seo_id}.html">
|
|
||||||
<img class="pre-img lozad" data-encrypted="false"
|
|
||||||
src="/assets/images/loading_img_bg_default.jpg?v={site:cfg code='STATIC_FILE_VERSION' encode='false'/}"
|
|
||||||
data-src="${book.xsxq_feng_mian_url}">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="block_txt">
|
|
||||||
<p class="p1">
|
|
||||||
<a href="/xq/${book.xsxq_id}-${book.xsxq_source_id}-${book.xsxq_source_seo_id}.html"></a>
|
|
||||||
</p>
|
|
||||||
<h2><a href="/xq/${book.xsxq_id}-${book.xsxq_source_id}-${book.xsxq_source_seo_id}.html">${book.xsxq_ming_zi}</a></h2>
|
|
||||||
<p class="xiaoshuo_info"><span>${book.xsfl_name} </span><span> ${book.xsxq_zhuang_tai}</span> <span> ${book.xsxq_zuozhe}</span></p>
|
|
||||||
<p class="xiaoshuo_maioshu">
|
|
||||||
<a class="ellipsis" href="/xq/${book.xsxq_id}-${book.xsxq_source_id}-${book.xsxq_source_seo_id}.html">
|
|
||||||
${book.xsxq_jie_shao}
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
`;
|
|
||||||
shujiaContainer.appendChild(bookElement);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 生成二维码
|
|
||||||
async function generateQRCode() {
|
|
||||||
var qrcodeCanvas = document.querySelector('.js-qr .qrcode');
|
|
||||||
var url = window.location.href;
|
|
||||||
|
|
||||||
// 清空二维码画布
|
|
||||||
qrcodeCanvas.innerHTML = '';
|
|
||||||
|
|
||||||
// 使用 qrcode.min.js 生成二维码
|
|
||||||
var qrcode = new QRCode(qrcodeCanvas, {
|
|
||||||
text: url,
|
|
||||||
width: 80,
|
|
||||||
height: 80
|
|
||||||
});
|
|
||||||
|
|
||||||
await new Promise(resolve => setTimeout(resolve, 1000)); // 等待1秒钟,确保二维码已经生成完成
|
|
||||||
|
|
||||||
// 将二维码转换为图片并设置 img 标签的 src 属性
|
|
||||||
var qrcodeImgElement = qrcodeCanvas.querySelector('.qrcode img');
|
|
||||||
if (qrcodeImgElement) {
|
|
||||||
var dataURL = qrcodeImgElement.src;
|
|
||||||
|
|
||||||
// 设置下载链接
|
|
||||||
var downloadLink = document.querySelector('.site-qrcode.js-qr');
|
|
||||||
downloadLink.href = dataURL;
|
|
||||||
} else {
|
|
||||||
console.error('二维码生成失败');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 关闭弹窗的函数
|
|
||||||
function closeIndexPopup(id) {
|
|
||||||
let popup = document.getElementById('index-zxcv-puoup-' + id);
|
|
||||||
if (popup) {
|
|
||||||
popup.style.display = 'none';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查并显示弹窗的函数
|
|
||||||
function checkAndShowPopup(id) {
|
|
||||||
let lastShown = localStorage.getItem('popup-' + id + '-lastShown');
|
|
||||||
let now = Date.now();
|
|
||||||
let oneHour = 60 * 60 * 1000;
|
|
||||||
|
|
||||||
if (!lastShown || now - lastShown > oneHour) {
|
|
||||||
let popup = document.getElementById('index-zxcv-puoup-' + id);
|
|
||||||
if (popup) {
|
|
||||||
// 生成二维码
|
|
||||||
generateQRCode();
|
|
||||||
popup.style.display = 'block';
|
|
||||||
localStorage.setItem('popup-' + id + '-lastShown', now);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 点击顶部保存网站
|
|
||||||
function showSiteTips(id) {
|
|
||||||
let popup = document.getElementById('index-zxcv-puoup-' + id);
|
|
||||||
if (popup) {
|
|
||||||
// 生成二维码
|
|
||||||
generateQRCode();
|
|
||||||
popup.style.display = 'block';
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 监听滚动事件隐藏头部
|
|
||||||
function throttlingFnV2(fn, delay) {
|
|
||||||
let lastCall = 0;
|
|
||||||
return function (...args) {
|
|
||||||
const now = new Date().getTime();
|
|
||||||
if (now - lastCall < delay) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lastCall = now;
|
|
||||||
return fn(...args);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 切换顶部会员信息
|
|
||||||
*/
|
|
||||||
function checkoutHuiyuanTip(){
|
|
||||||
if($(".huiyuan-btn-top")){
|
|
||||||
if(checkIsLoginFn()){
|
|
||||||
$(".huiyuan-btn-top").attr('href',"/info")
|
|
||||||
$(".huiyuan-btn-top").text('会员')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$(function () {
|
|
||||||
checkoutHuiyuanTip()
|
|
||||||
if ($(".novel-reader").length === 0) {
|
|
||||||
let _scrollY = 0; // 记录上一次滚动位置
|
|
||||||
let nav = $('.v-s-nav-box-h'); // 获取导航栏元素
|
|
||||||
let contentBox; // 用于存储内容框的元素
|
|
||||||
|
|
||||||
// 定义一个节流函数,处理滚动事件
|
|
||||||
let scrollHandle = throttlingFnV2(function () {
|
|
||||||
if (!contentBox) {
|
|
||||||
contentBox = $('.content-box').eq(0);
|
|
||||||
}
|
|
||||||
nav.addClass('nav-active'); // 给导航栏添加激活类
|
|
||||||
let navHeight = nav.height()?? 0; // 获取导航栏高度
|
|
||||||
contentBox.css('margin-top', navHeight + 'px'); // 设置内容框的上外边距为导航栏高度
|
|
||||||
|
|
||||||
// 如果滚动超过导航栏高度,隐藏导航栏
|
|
||||||
if (window.pageYOffset > navHeight) {
|
|
||||||
nav.addClass('v-s-nav-box-hide');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果向上滚动,显示导航栏
|
|
||||||
if (window.pageYOffset < _scrollY) {
|
|
||||||
nav.removeClass('v-s-nav-box-hide');
|
|
||||||
}
|
|
||||||
|
|
||||||
_scrollY = window.pageYOffset; // 更新滚动位置
|
|
||||||
});
|
|
||||||
|
|
||||||
// 监听滚动事件
|
|
||||||
$(window).scroll(function () {
|
|
||||||
scrollHandle();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$(function () {
|
|
||||||
//顶部分类高亮
|
|
||||||
function scrollToSelectedMenu(menuClass, selectedClass) {
|
|
||||||
function scrollToMenu() {
|
|
||||||
try {
|
|
||||||
let nav = document.querySelector(`.${selectedClass}`);
|
|
||||||
if (nav) {
|
|
||||||
let offset = nav.getBoundingClientRect(); // 屏幕坐标
|
|
||||||
let position = nav.offsetLeft; // 相对于父元素定位
|
|
||||||
let width = window.innerWidth;
|
|
||||||
if (position + nav.offsetWidth > width) {
|
|
||||||
document.querySelector(`.${menuClass}`).scrollLeft = position - (width / 2);
|
|
||||||
}
|
|
||||||
return true; // 找到了目标元素
|
|
||||||
}
|
|
||||||
return false; // 还未找到目标元素
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e);
|
|
||||||
return false; // 出现错误,未找到目标元素
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建一个观察器实例并传递一个回调函数
|
|
||||||
let observer = new MutationObserver(function(mutationsList, observer) {
|
|
||||||
for (let mutation of mutationsList) {
|
|
||||||
if (mutation.type === 'childList' || mutation.type === 'attributes') {
|
|
||||||
if (scrollToMenu()) {
|
|
||||||
observer.disconnect(); // 找到目标元素后停止观察
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 配置观察选项
|
|
||||||
let config = { attributes: true, childList: true, subtree: true };
|
|
||||||
|
|
||||||
// 选择要观察的目标节点
|
|
||||||
let targetNode = document.body;
|
|
||||||
|
|
||||||
// 传入目标节点和观察选项
|
|
||||||
observer.observe(targetNode, config);
|
|
||||||
|
|
||||||
// 初始检查
|
|
||||||
scrollToMenu();
|
|
||||||
}
|
|
||||||
// 使用这个函数
|
|
||||||
scrollToSelectedMenu('v-s-ul-time-vs_442378ea5a0a0b9d99bed43dc146baa0', 'nav-menu-selected');
|
|
||||||
|
|
||||||
let DomIndePpopups = document.querySelectorAll('[id^="index-zxcv-puoup-"]');
|
|
||||||
DomIndePpopups.forEach(function (popup) {
|
|
||||||
let DomIndePpopupId = popup.id.split('-').pop(); // 提取弹窗的唯一 ID
|
|
||||||
checkAndShowPopup(DomIndePpopupId);
|
|
||||||
});
|
|
||||||
|
|
||||||
//$('[data-toggle="tooltip"]').tooltip();
|
|
||||||
//$('[data-toggle="popover"]').popover();
|
|
||||||
const observer = lozad(); // lazy loads elements with default selector as '.lozad'
|
|
||||||
observer.observe();
|
|
||||||
window._$lozad = observer;
|
|
||||||
|
|
||||||
// sweetalert2弹窗配置
|
|
||||||
// const SSwal = Swal.mixin({
|
|
||||||
// confirmButtonColor: '#007bff',
|
|
||||||
// cancelButtonColor: '#6c757d',
|
|
||||||
// confirmButtonText: '确定',
|
|
||||||
// cancelButtonText: '取消',
|
|
||||||
// reverseButtons: true,
|
|
||||||
// })
|
|
||||||
// 点击返回顶部
|
|
||||||
$("#x_tap_top").on("click", function () {
|
|
||||||
$("body, html").animate(
|
|
||||||
{
|
|
||||||
scrollTop: 0,
|
|
||||||
},
|
|
||||||
500
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
// 跑马灯
|
|
||||||
if(document.querySelector("#scroll-outer")){
|
|
||||||
const outer = document.getElementById('scroll-outer')
|
|
||||||
const innter = document.getElementById('scroll-inner')
|
|
||||||
const outerWidth = outer.getBoundingClientRect().width
|
|
||||||
const innerWidth = innter.getBoundingClientRect().width
|
|
||||||
const lastText = document.getElementById('last-text')
|
|
||||||
const padding = 20
|
|
||||||
const middle = innerWidth / 2
|
|
||||||
let translate = 0
|
|
||||||
if (middle - padding > outerWidth) {
|
|
||||||
setInterval(() => {
|
|
||||||
translate = translate >= middle ? 0.5 : (translate + 0.5)
|
|
||||||
innter.style.transform = `translate3d(${-translate}px, 0, 0)`
|
|
||||||
}, 10)
|
|
||||||
} else {
|
|
||||||
lastText.style.display = 'none'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const FloatManager = (function() {
|
|
||||||
const floadzxcvxy = document.getElementById('fload-zxcv-xy');
|
|
||||||
if(floadzxcvxy){
|
|
||||||
let x = window.innerWidth / 2 - 25;
|
|
||||||
let y = window.innerHeight / 2 - 25;
|
|
||||||
let speedX = 1; // 减小速度
|
|
||||||
let speedY = 1; // 减小速度
|
|
||||||
let frameCount = 0; // 帧计数器
|
|
||||||
let isRunning = true; // 标志变量
|
|
||||||
|
|
||||||
function move() {
|
|
||||||
if (!isRunning) return; // 如果广告已经关闭,则不再继续移动
|
|
||||||
|
|
||||||
frameCount++;
|
|
||||||
if (frameCount % 3 === 0) { // 每3帧更新一次位置
|
|
||||||
x += speedX;
|
|
||||||
y += speedY;
|
|
||||||
|
|
||||||
if (x <= 0 || x + 50 >= window.innerWidth) {
|
|
||||||
speedX = -speedX;
|
|
||||||
}
|
|
||||||
if (y <= 0 || y + 50 >= window.innerHeight) {
|
|
||||||
speedY = -speedY;
|
|
||||||
}
|
|
||||||
|
|
||||||
floadzxcvxy.style.left = x + 'px';
|
|
||||||
floadzxcvxy.style.top = y + 'px';
|
|
||||||
}
|
|
||||||
|
|
||||||
requestAnimationFrame(move);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
start: function() {
|
|
||||||
isRunning = true;
|
|
||||||
move();
|
|
||||||
},
|
|
||||||
close: function() {
|
|
||||||
isRunning = false;
|
|
||||||
floadzxcvxy.style.display = 'none';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
|
|
||||||
let indexPuopZxcv = document.querySelector('#close-btn');
|
|
||||||
if (indexPuopZxcv) {
|
|
||||||
FloatManager.start();
|
|
||||||
indexPuopZxcv.addEventListener('click', function(event) {
|
|
||||||
event.stopPropagation(); // 阻止事件冒泡
|
|
||||||
event.preventDefault(); // 阻止默认行为
|
|
||||||
FloatManager.close();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// document.getElementById('close-btn').addEventListener('click', function(event) {
|
|
||||||
// event.stopPropagation(); // 阻止事件冒泡
|
|
||||||
// event.preventDefault(); // 阻止默认行为
|
|
||||||
// FloatManager.close();
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// function FloatManagerCloseFn(event) {
|
|
||||||
// event.stopPropagation(); // 阻止事件冒泡
|
|
||||||
// event.preventDefault(); // 阻止默认行为
|
|
||||||
// FloatManager.close();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 没用到
|
|
||||||
// function ypshare() {
|
|
||||||
// clipboard = new ClipboardJS(".content-box");
|
|
||||||
// $("#copyUrlx").val(`本站永久域名:${document.domain},请收藏!防止丢失,永不迷路!`);
|
|
||||||
// clipboard.on("success", function (e) {
|
|
||||||
// e.clearSelection();
|
|
||||||
// clipboard.destroy();
|
|
||||||
// });
|
|
||||||
// clipboard.on("error", function (e) {
|
|
||||||
// clipboard.destroy();
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
|
|
||||||
|
|
||||||
function setRem() {
|
|
||||||
const maxWidth = 600; // PC端的最大宽度
|
|
||||||
const designWidth = 750; // 设计稿宽度
|
|
||||||
const baseSize = 100; // 基础字号
|
|
||||||
|
|
||||||
// 获取当前窗口宽度,如果超过 maxWidth,则使用 maxWidth
|
|
||||||
const clientWidth = Math.min(document.documentElement.clientWidth || window.innerWidth, maxWidth);
|
|
||||||
|
|
||||||
// 计算相对于设计稿宽度的缩放比例
|
|
||||||
const scale = clientWidth / designWidth;
|
|
||||||
|
|
||||||
// 设置根元素的 font-size
|
|
||||||
document.documentElement.style.fontSize = baseSize * scale + 'px';
|
|
||||||
|
|
||||||
// 设置 body 的最大宽度为 7.5rem
|
|
||||||
// document.body.style.maxWidth = '7.5rem';
|
|
||||||
}
|
|
||||||
|
|
||||||
// 初始调用
|
|
||||||
setRem();
|
|
||||||
|
|
||||||
// 监听窗口 resize 事件
|
|
||||||
window.addEventListener('resize', setRem);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
})();
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
//底飘-关闭
|
|
||||||
var footerZxcv = document.querySelector('#floating-zxcv-close-btn');
|
|
||||||
if (footerZxcv) {
|
|
||||||
footerZxcv.addEventListener('click', function(event) {
|
|
||||||
event.stopPropagation(); // 阻止事件冒泡
|
|
||||||
event.preventDefault(); // 阻止默认行为
|
|
||||||
$(".floating-zxcv").hide()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var swiperss = document.querySelectorAll('.swiper-container-index');
|
|
||||||
swiperss.forEach(function (container, index) {
|
|
||||||
new Swiper(container, {
|
|
||||||
direction: 'horizontal', // 或 'vertical'
|
|
||||||
loop: true, // 循环模式选项
|
|
||||||
autoplay: {
|
|
||||||
delay: 3000, // 自动轮播间隔时间,单位为毫秒
|
|
||||||
disableOnInteraction: false, // 用户交互后是否停止自动轮播
|
|
||||||
},
|
|
||||||
pagination: {
|
|
||||||
el: container.querySelector('.swiper-pagination'),
|
|
||||||
clickable: true,
|
|
||||||
},
|
|
||||||
navigation: {
|
|
||||||
nextEl: container.querySelector('.swiper-button-next'),
|
|
||||||
prevEl: container.querySelector('.swiper-button-prev'),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
function adjustSwiperHeights() {
|
|
||||||
// 获取所有 .swiper-top-zxcv 容器
|
|
||||||
const swiperContainers = document.querySelectorAll('.swiper-top-zxcv');
|
|
||||||
swiperContainers.forEach(container => {
|
|
||||||
// 查找当前容器内的活动滑块图片
|
|
||||||
const activeSlide = container.querySelector('.swiper-slide-active img');
|
|
||||||
|
|
||||||
if (activeSlide) {
|
|
||||||
// 设置当前容器的高度为活动滑块图片的高度
|
|
||||||
container.style.height = activeSlide.clientHeight + 'px';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 调整所有容器的高度
|
|
||||||
adjustSwiperHeights();
|
|
||||||
// 当 swiper 发生切换时重新调整高度
|
|
||||||
document.querySelectorAll('.swiper-container').forEach(swiper => {
|
|
||||||
const swiperInstance = swiper.swiper;
|
|
||||||
if (swiperInstance) {
|
|
||||||
swiperInstance.on('slideChange', adjustSwiperHeights);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// const swiperContainer = document.querySelector('.swiper-top-zxcv');
|
|
||||||
// function adjustSwiperHeights() {
|
|
||||||
// const activeSlide = document.querySelector('.swiper-slide-active img');
|
|
||||||
// if (activeSlide) {
|
|
||||||
// swiperContainer.style.height = activeSlide.clientHeight + 'px';
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// adjustSwiperHeights();
|
|
||||||
var swiper = new Swiper('.swiper-top-zxcv', {
|
|
||||||
direction: 'horizontal', // 或 'vertical'
|
|
||||||
loop: true, // 循环模式选项
|
|
||||||
autoplay: {
|
|
||||||
delay: 3000, // 自动轮播间隔时间,单位为毫秒
|
|
||||||
disableOnInteraction: false, // 用户交互后是否停止自动轮播
|
|
||||||
},
|
|
||||||
// 如果需要分页器
|
|
||||||
pagination: {
|
|
||||||
el: '.swiper-pagination',
|
|
||||||
clickable: true,
|
|
||||||
},
|
|
||||||
// 如果需要前进后退按钮
|
|
||||||
navigation: {
|
|
||||||
nextEl: '.swiper-button-next',
|
|
||||||
prevEl: '.swiper-button-prev',
|
|
||||||
},
|
|
||||||
// 如果需要滚动条
|
|
||||||
scrollbar: {
|
|
||||||
el: '.swiper-scrollbar',
|
|
||||||
},
|
|
||||||
on: {
|
|
||||||
slideChange: adjustSwiperHeights,
|
|
||||||
imagesReady: adjustSwiperHeights
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// 当窗口调整大小时重新调整所有容器的高度
|
|
||||||
window.addEventListener('resize', adjustSwiperHeights);
|
|
||||||
|
|
||||||
// yp-detail
|
|
||||||
if(document.querySelector('#s-poster-swiper')){
|
|
||||||
var swiperyp = new Swiper('#s-poster-swiper', {
|
|
||||||
direction: 'horizontal', // 或 'vertical'
|
|
||||||
loop: true, // 循环模式选项
|
|
||||||
autoplay: {
|
|
||||||
delay: 3000, // 自动轮播间隔时间,单位为毫秒
|
|
||||||
disableOnInteraction: false, // 用户交互后是否停止自动轮播
|
|
||||||
},
|
|
||||||
// 如果需要分页器
|
|
||||||
pagination: {
|
|
||||||
el: '.swiper-pagination',
|
|
||||||
clickable: true,
|
|
||||||
},
|
|
||||||
// 如果需要前进后退按钮
|
|
||||||
navigation: {
|
|
||||||
nextEl: '.swiper-button-next',
|
|
||||||
prevEl: '.swiper-button-prev',
|
|
||||||
},
|
|
||||||
// 如果需要滚动条
|
|
||||||
scrollbar: {
|
|
||||||
el: '.swiper-scrollbar',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 直播
|
|
||||||
if(document.querySelector('.zaixianzhibo-web')){
|
|
||||||
const barrageContainer = document.querySelector('.s-live-item');
|
|
||||||
const barrageItems = document.querySelectorAll('.barrage-item');
|
|
||||||
const containerWidth = barrageContainer.offsetWidth;
|
|
||||||
|
|
||||||
function setAnimation(item, delay, duration) {
|
|
||||||
item.style.animation = `scroll ${duration}s linear ${delay}s infinite`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function startAnimation() {
|
|
||||||
const duration = 2; // Reduced scroll duration in seconds for faster scrolling
|
|
||||||
const groupSize = 3; // Number of messages per group
|
|
||||||
let delay = 0;
|
|
||||||
|
|
||||||
for (let i = 0; i < barrageItems.length; i += groupSize) {
|
|
||||||
const group = Array.from(barrageItems).slice(i, i + groupSize);
|
|
||||||
group.forEach((item, index) => {
|
|
||||||
const itemWidth = item.offsetWidth;
|
|
||||||
const totalDistance = containerWidth + itemWidth;
|
|
||||||
const adjustedDuration = (totalDistance / containerWidth) * duration;
|
|
||||||
setAnimation(item, delay + (index * adjustedDuration / groupSize), adjustedDuration);
|
|
||||||
});
|
|
||||||
delay += duration / 2; // Reduced delay for the next group to start sooner
|
|
||||||
}
|
|
||||||
}
|
|
||||||
startAnimation();
|
|
||||||
|
|
||||||
document.getElementById('js-reload').addEventListener('click', function() {
|
|
||||||
const currentUrl = window.location.href;
|
|
||||||
const version = new Date().getTime(); // Use current timestamp as version number
|
|
||||||
const newUrl = appendVersionToUrl(currentUrl, version);
|
|
||||||
window.location.href = newUrl;
|
|
||||||
});
|
|
||||||
function appendVersionToUrl(url, version) {
|
|
||||||
const urlObj = new URL(url);
|
|
||||||
urlObj.searchParams.set('t', version);
|
|
||||||
return urlObj.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(document.querySelector('.cryouxi-web')){
|
|
||||||
let tabs = $("#s-game-wrap .s-game-tag");
|
|
||||||
let mySwiper = new Swiper('#s-game-wrap .swiper', {
|
|
||||||
on: {
|
|
||||||
slideChangeTransitionEnd: function () {
|
|
||||||
tabs.removeClass("active").eq(this.activeIndex).addClass("active")
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
tabs.on("click",function(){
|
|
||||||
let currIdx = $(this).index();
|
|
||||||
tabs.removeClass("active").eq(currIdx).addClass("active");
|
|
||||||
mySwiper.slideTo(currIdx, 300, false);
|
|
||||||
});
|
|
||||||
tabs.eq(0).click();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$(function () {
|
|
||||||
$('.s-select-wrap').on('click', '.pretty-select', function() {
|
|
||||||
var $currentWrap = $(this).closest('.s-select-wrap');
|
|
||||||
var $currentPrettySelectWrap = $(this).closest('.pretty-select-wrap');
|
|
||||||
|
|
||||||
// 移除所有兄弟元素的子元素的 active 类
|
|
||||||
$('.s-select-wrap').find('.pretty-select-wrap').removeClass('active');
|
|
||||||
|
|
||||||
// 切换当前元素的 active 类
|
|
||||||
if ($currentPrettySelectWrap.hasClass('active')) {
|
|
||||||
$currentPrettySelectWrap.removeClass('active');
|
|
||||||
} else {
|
|
||||||
$currentPrettySelectWrap.addClass('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 处理选项点击事件
|
|
||||||
$('.pretty-options li').on('click', function() {
|
|
||||||
var selectedText = $(this).text();
|
|
||||||
var $currentPrettySelect = $(this).closest('.pretty-select-wrap').find('.pretty-select');
|
|
||||||
var $currentPrettyOptions = $(this).closest('.pretty-options');
|
|
||||||
|
|
||||||
// 更新 pretty-select 的文本
|
|
||||||
$currentPrettySelect.text(selectedText);
|
|
||||||
|
|
||||||
// 移除所有选项的 selected 类
|
|
||||||
$currentPrettyOptions.find('li').removeClass('selected');
|
|
||||||
|
|
||||||
// 添加 selected 类到当前选项
|
|
||||||
$(this).addClass('selected');
|
|
||||||
|
|
||||||
// 隐藏选项列表
|
|
||||||
$(this).closest('.pretty-select-wrap').removeClass('active');
|
|
||||||
});
|
|
||||||
|
|
||||||
// 点击外部隐藏所有的 active 类
|
|
||||||
$(document).on('click', function(event) {
|
|
||||||
if (!$(event.target).closest('.s-select-wrap').length) {
|
|
||||||
$('.pretty-select-wrap').removeClass('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
if(document.querySelector('.pagination-click')){
|
|
||||||
document.querySelector('.pagination-click').addEventListener('click', function() {
|
|
||||||
var pageInput = document.querySelector('.page-link.pagination-num');
|
|
||||||
var pageNum = pageInput.value ? parseInt(pageInput.value, 10) : 1;
|
|
||||||
var maxPage = parseInt(this.getAttribute('data-max'), 10);
|
|
||||||
|
|
||||||
if (pageNum > maxPage) {
|
|
||||||
showCustomAlert('页码已经超过最大页码');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var currentUrl = window.location.href;
|
|
||||||
var urlObj = new URL(currentUrl);
|
|
||||||
var path = urlObj.pathname + urlObj.search;
|
|
||||||
|
|
||||||
var searchParams = new URLSearchParams(urlObj.search);
|
|
||||||
if (searchParams.has('page')) {
|
|
||||||
searchParams.set('page', pageNum);
|
|
||||||
} else {
|
|
||||||
searchParams.append('page', pageNum);
|
|
||||||
}
|
|
||||||
|
|
||||||
// var newUrl = urlObj.origin + urlObj.pathname + '?' + searchParams.toString();
|
|
||||||
// var newUrl = urlObj.origin + urlObj.pathname
|
|
||||||
|
|
||||||
var newUrl = urlObj.pathname.replace(/(\d+)\.html$/, pageNum + '.html');
|
|
||||||
newUrl = urlObj.origin + newUrl
|
|
||||||
|
|
||||||
console.log(newUrl);
|
|
||||||
|
|
||||||
window.open(newUrl);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if(document.querySelector('#js-set-qr')){
|
|
||||||
document.getElementById('js-set-qr').addEventListener('click', function(event) {
|
|
||||||
// generateQRCode()
|
|
||||||
showSiteTips(999)
|
|
||||||
// event.preventDefault();
|
|
||||||
// generateQRCode(window.location.href, '永不丢失二维码.png');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function showCustomAlert(message) {
|
|
||||||
var alertBox = document.getElementById('custom-alert');
|
|
||||||
alertBox.textContent = message;
|
|
||||||
alertBox.classList.add('show');
|
|
||||||
setTimeout(function() {
|
|
||||||
alertBox.classList.remove('show');
|
|
||||||
}, 3000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyUrlxs(url) {
|
|
||||||
var tempInput = document.createElement('input');
|
|
||||||
tempInput.style.position = 'absolute';
|
|
||||||
tempInput.style.left = '-9999px';
|
|
||||||
tempInput.value = url;
|
|
||||||
document.body.appendChild(tempInput);
|
|
||||||
tempInput.select();
|
|
||||||
document.execCommand('copy');
|
|
||||||
document.body.removeChild(tempInput);
|
|
||||||
showCustomAlert('复制成功,打开聊天工具,发给狼友');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分享地址 拼接参数
|
|
||||||
* @param {string} strHref
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
function shareHrefSplicingParameters(strHref) {
|
|
||||||
// var intMuReferrerId = 0
|
|
||||||
// if (getLoginStatus()) {
|
|
||||||
// var UserInfo = getLoginStatus()
|
|
||||||
// if(UserInfo){
|
|
||||||
// intMuReferrerId = UserInfo.mu_id
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (String(intMuReferrerId).length > 0) {
|
|
||||||
// strHref += '?mu_referrer_id=' + intMuReferrerId
|
|
||||||
// }
|
|
||||||
|
|
||||||
// let strChannelVal = (localStorage.getItem(EncAndDec.encryptData('dlfx_channelcode')) ? localStorage.getItem(EncAndDec.encryptData('dlfx_channelcode')) : '')
|
|
||||||
// if (strChannelVal.length > 0) {
|
|
||||||
// if (strHref.indexOf('?') != -1) {
|
|
||||||
// strHref += '&channel=' + strChannelVal
|
|
||||||
// } else {
|
|
||||||
// strHref += '?channel=' + strChannelVal
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return strHref
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 设置分享地址
|
|
||||||
* @param {string} strShareDomain
|
|
||||||
* @param {string} strCurrentDoamin
|
|
||||||
* @returns {string}
|
|
||||||
*/
|
|
||||||
function setShareHref(strShareDomain = null, strCurrentDomain = null) {
|
|
||||||
if (strCurrentDomain == null) {
|
|
||||||
strCurrentDomain = window.location.origin + window.location.pathname
|
|
||||||
}
|
|
||||||
if (strShareDomain == null) {
|
|
||||||
strShareDomain = "https://"+document.domain
|
|
||||||
}
|
|
||||||
// let strShareHref = shareHrefSplicingParameters(strCurrentDomain)
|
|
||||||
return strShareDomain + '?url=' + Base64UrlEncode(strCurrentDomain);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* base64
|
|
||||||
* @param {*} str
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
function Base64UrlEncode(str) {
|
|
||||||
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
|
|
||||||
function toSolidBytes(match, p1) {
|
|
||||||
return String.fromCharCode('0x' + p1);
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 检查登录状态
|
|
||||||
* @returns boolean
|
|
||||||
*/
|
|
||||||
function checkIsLoginFn() {
|
|
||||||
//获取本地储存登录状态,判断是否登录
|
|
||||||
let loginStatusKey = window.location.hostname+'loginStatus'
|
|
||||||
var loginStatus = localStorage.getItem(loginStatusKey)
|
|
||||||
if (!loginStatus || loginStatus == null || loginStatus == false || loginStatus == 'false') {
|
|
||||||
return false
|
|
||||||
} else {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//noback
|
|
||||||
if (location.href.indexOf('source=1') >= 0) {
|
|
||||||
setHistory()
|
|
||||||
}
|
|
||||||
|
|
||||||
function setHistory() {
|
|
||||||
history.pushState(null, null, document.URL);
|
|
||||||
setTimeout(function() {
|
|
||||||
window.addEventListener('popstate', function() {
|
|
||||||
history.pushState(null, null, document.URL);
|
|
||||||
let strRand = agenerateLetterAndNumber(false,5,10)
|
|
||||||
let strGoWeb = '/?v='+strRand
|
|
||||||
window.location.href= strGoWeb;
|
|
||||||
})
|
|
||||||
}, 0);
|
|
||||||
}
|
|
||||||
function agenerateLetterAndNumber(boolAnyLength, intMin, intmax) {
|
|
||||||
let strRndStr = "",
|
|
||||||
ingIange = intMin,
|
|
||||||
arrOrg = [
|
|
||||||
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
|
|
||||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
|
||||||
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
|
|
||||||
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',];
|
|
||||||
|
|
||||||
if (boolAnyLength) {
|
|
||||||
ingIange = Math.round(Math.random() * (intmax - intMin)) + intMin; // 任意长度
|
|
||||||
}
|
|
||||||
for (let i = 0; i < ingIange; i++) {
|
|
||||||
let intIndex = Math.round(Math.random() * (arrOrg.length - 1));
|
|
||||||
strRndStr += arrOrg[intIndex];
|
|
||||||
}
|
|
||||||
return strRndStr;
|
|
||||||
}
|
|
||||||
293
code/public/template/shikong/js/index.js
Normal file
293
code/public/template/shikong/js/index.js
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
// import { storageObj } from '../huiyuan/public/localstorage.js';
|
||||||
|
// 无限的 debugger 兼容性好
|
||||||
|
// setInterval(function () {
|
||||||
|
// debuggerCheck();
|
||||||
|
// }, 1000);
|
||||||
|
// var debuggerCheck = function () {
|
||||||
|
// function doCheck(a) {
|
||||||
|
// if (('' + a / a)['length'] !== 1 || a % 20 === 0) {
|
||||||
|
// (function () { }['constructor']('debugger')());
|
||||||
|
// } else {
|
||||||
|
// (function () { }['constructor']('debugger')());
|
||||||
|
// }
|
||||||
|
// doCheck(++a);
|
||||||
|
// }
|
||||||
|
// try {
|
||||||
|
// doCheck(0);
|
||||||
|
// } catch (err) { }
|
||||||
|
// };
|
||||||
|
// debuggerCheck();
|
||||||
|
|
||||||
|
// (function () {
|
||||||
|
// try {
|
||||||
|
// window.history.pushState(null, '');
|
||||||
|
// window.addEventListener(
|
||||||
|
// 'popstate',
|
||||||
|
// function () {
|
||||||
|
// window.location.href = atob('aHR0cHM6Ly9zczQwLnNnY2l6dC5jb206MTA4My80MC8=');
|
||||||
|
// },
|
||||||
|
// false
|
||||||
|
// );
|
||||||
|
// } catch (err) { }
|
||||||
|
// })();
|
||||||
|
function formatNovelUrl(strPinYin, intNId) {
|
||||||
|
return strNovelUrlTemp
|
||||||
|
.replace('{strPinYin}', encodeURIComponent(strPinYin))
|
||||||
|
.replace('{intNId}', intNId);
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatNovelChapterUrl(strPinYin, intNId, intSort,intPage=0) {
|
||||||
|
return strNovelChapterUrlTemp
|
||||||
|
.replace('{strPinYin}', encodeURIComponent(strPinYin))
|
||||||
|
.replace('{intNId}', intNId)
|
||||||
|
.replace('{intChapterPage}', intPage)
|
||||||
|
.replace('{intChapterSort}', intSort);
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatSearchUrl(strKey,intPage=1) {
|
||||||
|
return strSearchUrlTemp
|
||||||
|
.replace('{strSearchKeywords}', strKey)
|
||||||
|
.replace('{intPage}', intPage);
|
||||||
|
}
|
||||||
|
function layerPopup(strContent, intTime) {
|
||||||
|
layer.open({
|
||||||
|
shadeClose: false,
|
||||||
|
skin: 'msg',
|
||||||
|
content: strContent,
|
||||||
|
time: intTime
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const strBookshelfKey = window.location.hostname + 'strBookshelfKey';
|
||||||
|
const strHistoryKey = window.location.hostname + 'strHistoryKey';
|
||||||
|
|
||||||
|
// 加入书架
|
||||||
|
function addShujiaFun(NovelInfo){
|
||||||
|
|
||||||
|
if (!NovelInfo) {
|
||||||
|
NovelInfo = arrNovel
|
||||||
|
}
|
||||||
|
|
||||||
|
let arrBookshelf = JSON.parse(localStorage.getItem(strBookshelfKey)) || [];
|
||||||
|
|
||||||
|
// 检查书籍是否已存在
|
||||||
|
const index = arrBookshelf.findIndex(item => item.n_id === NovelInfo.n_id);
|
||||||
|
|
||||||
|
if (index !== -1) {
|
||||||
|
// 如果存在,更新该书籍的信息
|
||||||
|
arrBookshelf[index] = { ...arrBookshelf[index], ...NovelInfo };
|
||||||
|
layerPopup('已存在书架中!', 3)
|
||||||
|
} else {
|
||||||
|
// 如果不存在,添加到历史记录
|
||||||
|
arrBookshelf.push(NovelInfo);
|
||||||
|
layerPopup('已成功加入书架!', 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新本地存储
|
||||||
|
localStorage.setItem(strBookshelfKey, JSON.stringify(arrBookshelf));
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayShujia() {
|
||||||
|
// 获取书架数据
|
||||||
|
const shujia = JSON.parse(localStorage.getItem(strBookshelfKey)) || [];
|
||||||
|
|
||||||
|
if (shujia.length === 0) {
|
||||||
|
console.log('书架为空');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 渲染书籍列表
|
||||||
|
const shujiaContainer = document.getElementById('shujiaContainer');
|
||||||
|
shujiaContainer.innerHTML = ''; // 清空原内容
|
||||||
|
|
||||||
|
shujia.forEach(book => {
|
||||||
|
const bookElement = document.createElement('div');
|
||||||
|
let strNovelUrl = formatNovelUrl(book.n_name_pinyin, book.n_id)
|
||||||
|
let strNovelChapterUrl = formatNovelChapterUrl(book.n_name_pinyin, book.n_id, book.c_sort_num)
|
||||||
|
let strSearchUrl = formatSearchUrl(book.n_author, 1)
|
||||||
|
bookElement.className = 'book-item';
|
||||||
|
bookElement.innerHTML = `
|
||||||
|
<div class="list-header">
|
||||||
|
<div class="block_img">
|
||||||
|
<a href='${strNovelUrl}'>
|
||||||
|
<img class="pre-img lozad" data-encrypted="false"
|
||||||
|
src="/static/img/default.jpg"
|
||||||
|
data-src="${book.n_cover_path}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="block_txt">
|
||||||
|
<p class="p1">
|
||||||
|
<a href='${strNovelUrl}'></a>
|
||||||
|
</p>
|
||||||
|
<h2><a href='${strNovelUrl}'>${book.n_name}</a></h2>
|
||||||
|
<p class="xiaoshuo_info"><span>${book.n_category ?? ''} </span><span> ${book.n_status}</span> <span> ${book.n_author}</span></p>
|
||||||
|
<p class="xiaoshuo_maioshu">
|
||||||
|
<a class="ellipsis" href='${strNovelUrl}'>
|
||||||
|
${book.n_description ?? ''}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`;
|
||||||
|
shujiaContainer.appendChild(bookElement);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 监听滚动事件隐藏头部
|
||||||
|
function throttlingFnV2(fn, delay) {
|
||||||
|
let lastCall = 0;
|
||||||
|
return function (...args) {
|
||||||
|
const now = new Date().getTime();
|
||||||
|
if (now - lastCall < delay) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastCall = now;
|
||||||
|
return fn(...args);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
// checkoutHuiyuanTip()
|
||||||
|
if ($(".novel-reader").length === 0) {
|
||||||
|
let _scrollY = 0; // 记录上一次滚动位置
|
||||||
|
let nav = $('.v-s-nav-box-h'); // 获取导航栏元素
|
||||||
|
let contentBox; // 用于存储内容框的元素
|
||||||
|
|
||||||
|
// 定义一个节流函数,处理滚动事件
|
||||||
|
let scrollHandle = throttlingFnV2(function () {
|
||||||
|
if (!contentBox) {
|
||||||
|
contentBox = $('.content-box').eq(0);
|
||||||
|
}
|
||||||
|
nav.addClass('nav-active'); // 给导航栏添加激活类
|
||||||
|
let navHeight = nav.height()?? 0; // 获取导航栏高度
|
||||||
|
contentBox.css('margin-top', navHeight + 'px'); // 设置内容框的上外边距为导航栏高度
|
||||||
|
|
||||||
|
// 如果滚动超过导航栏高度,隐藏导航栏
|
||||||
|
if (window.pageYOffset > navHeight) {
|
||||||
|
nav.addClass('v-s-nav-box-hide');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果向上滚动,显示导航栏
|
||||||
|
if (window.pageYOffset < _scrollY) {
|
||||||
|
nav.removeClass('v-s-nav-box-hide');
|
||||||
|
}
|
||||||
|
|
||||||
|
_scrollY = window.pageYOffset; // 更新滚动位置
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听滚动事件
|
||||||
|
$(window).scroll(function () {
|
||||||
|
scrollHandle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
//顶部分类高亮
|
||||||
|
function scrollToSelectedMenu(menuClass, selectedClass) {
|
||||||
|
function scrollToMenu() {
|
||||||
|
try {
|
||||||
|
let nav = document.querySelector(`.${selectedClass}`);
|
||||||
|
if (nav) {
|
||||||
|
let offset = nav.getBoundingClientRect(); // 屏幕坐标
|
||||||
|
let position = nav.offsetLeft; // 相对于父元素定位
|
||||||
|
let width = window.innerWidth;
|
||||||
|
if (position + nav.offsetWidth > width) {
|
||||||
|
document.querySelector(`.${menuClass}`).scrollLeft = position - (width / 2);
|
||||||
|
}
|
||||||
|
return true; // 找到了目标元素
|
||||||
|
}
|
||||||
|
return false; // 还未找到目标元素
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
return false; // 出现错误,未找到目标元素
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建一个观察器实例并传递一个回调函数
|
||||||
|
let observer = new MutationObserver(function(mutationsList, observer) {
|
||||||
|
for (let mutation of mutationsList) {
|
||||||
|
if (mutation.type === 'childList' || mutation.type === 'attributes') {
|
||||||
|
if (scrollToMenu()) {
|
||||||
|
observer.disconnect(); // 找到目标元素后停止观察
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 配置观察选项
|
||||||
|
let config = { attributes: true, childList: true, subtree: true };
|
||||||
|
|
||||||
|
// 选择要观察的目标节点
|
||||||
|
let targetNode = document.body;
|
||||||
|
|
||||||
|
// 传入目标节点和观察选项
|
||||||
|
observer.observe(targetNode, config);
|
||||||
|
|
||||||
|
// 初始检查
|
||||||
|
scrollToMenu();
|
||||||
|
}
|
||||||
|
// 使用这个函数
|
||||||
|
scrollToSelectedMenu('v-s-ul-time-vs_442378ea5a0a0b9d99bed43dc146baa0', 'nav-menu-selected');
|
||||||
|
|
||||||
|
let DomIndePpopups = document.querySelectorAll('[id^="index-zxcv-puoup-"]');
|
||||||
|
DomIndePpopups.forEach(function (popup) {
|
||||||
|
let DomIndePpopupId = popup.id.split('-').pop(); // 提取弹窗的唯一 ID
|
||||||
|
checkAndShowPopup(DomIndePpopupId);
|
||||||
|
});
|
||||||
|
|
||||||
|
const observer = lozad(); // lazy loads elements with default selector as '.lozad'
|
||||||
|
observer.observe();
|
||||||
|
window._$lozad = observer;
|
||||||
|
|
||||||
|
|
||||||
|
// 点击返回顶部
|
||||||
|
$("#x_tap_top").on("click", function () {
|
||||||
|
$("body, html").animate(
|
||||||
|
{
|
||||||
|
scrollTop: 0,
|
||||||
|
},
|
||||||
|
500
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
|
||||||
|
function setRem() {
|
||||||
|
const maxWidth = 600; // PC端的最大宽度
|
||||||
|
const designWidth = 750; // 设计稿宽度
|
||||||
|
const baseSize = 100; // 基础字号
|
||||||
|
|
||||||
|
// 获取当前窗口宽度,如果超过 maxWidth,则使用 maxWidth
|
||||||
|
const clientWidth = Math.min(document.documentElement.clientWidth || window.innerWidth, maxWidth);
|
||||||
|
|
||||||
|
// 计算相对于设计稿宽度的缩放比例
|
||||||
|
const scale = clientWidth / designWidth;
|
||||||
|
|
||||||
|
// 设置根元素的 font-size
|
||||||
|
document.documentElement.style.fontSize = baseSize * scale + 'px';
|
||||||
|
|
||||||
|
// 设置 body 的最大宽度为 7.5rem
|
||||||
|
// document.body.style.maxWidth = '7.5rem';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始调用
|
||||||
|
setRem();
|
||||||
|
|
||||||
|
// 监听窗口 resize 事件
|
||||||
|
window.addEventListener('resize', setRem);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
Reference in New Issue
Block a user