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'}
|
||||
<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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/if}
|
||||
@@ -69,7 +77,7 @@ button_num="5" cache_life="86400" func="generateCategoryPager" export_name="resD
|
||||
{block name="main"}
|
||||
|
||||
|
||||
<p class="site-description">{$strDescription??''}</p>
|
||||
<h2 class="site-description">{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}</h2>
|
||||
|
||||
<div class="navpf">
|
||||
<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'}
|
||||
<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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/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'}
|
||||
<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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{else}
|
||||
<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"/}',
|
||||
"@type": "book",
|
||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"datePublished": "{:date('Y-m-d')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/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'}
|
||||
<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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{else}
|
||||
<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"/}',
|
||||
"@type": "book",
|
||||
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"datePublished": "{:date('Y-m-d')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{/if}
|
||||
|
||||
@@ -2,28 +2,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
{block name="get-data"}
|
||||
{/block}
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
{block name="get-data"}{/block}
|
||||
|
||||
<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>
|
||||
<meta name="keywords" content='{block name="keywords"}{/block}'>
|
||||
<meta name="description" content='{block name="description"}{/block}'>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<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">
|
||||
<link rel="shortcut icon" href="/template/shikong/img/favicon.ico" type="image/x-icon">
|
||||
<!-- <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-icons.css">
|
||||
<link href="/template/shikong/huiyuan/js/plugin/layer/need/layer.css" rel="stylesheet">
|
||||
@@ -37,62 +30,35 @@
|
||||
{block name="head-css"}{/block}
|
||||
|
||||
<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 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/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>
|
||||
|
||||
<script type="text/javascript" src='/template/shikong/js/index.js'></script>
|
||||
{block name="head-js"}{/block}
|
||||
|
||||
{block name="head"}{/block}
|
||||
|
||||
</head>
|
||||
|
||||
<body style="font-size: 14px;" class='{block name="body-class"}{/block}' >
|
||||
<div class="v-s-nav-box-h">
|
||||
<div class="s-main-box">
|
||||
|
||||
<div class="s-logo">
|
||||
<a href="/">
|
||||
<h1 >—{$DomainModel->d_name}—</h1>
|
||||
<p>{$DomainModel->d_domain}</p>
|
||||
</a>
|
||||
{block name="logo-html"}
|
||||
|
||||
{/block}
|
||||
</div>
|
||||
|
||||
<div class="v-s-nav-search-box3">
|
||||
<a href="/searchhome/0.html">
|
||||
<div class="s-search">
|
||||
<i class="s-icon-search"></i>
|
||||
<span class="s-tips">点击搜索</span>
|
||||
<div class="s-tags">
|
||||
<span class="s-link-tag"></span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</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>
|
||||
$(function(){
|
||||
let pageId = "#{block name='nav-active-class'}{/block}" +"-page"
|
||||
@@ -129,58 +95,10 @@
|
||||
</div>
|
||||
|
||||
<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="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>
|
||||
|
||||
|
||||
@@ -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="logo-html"}
|
||||
<h1 class="bookname">
|
||||
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>-免费在线阅读热门小说
|
||||
</h1>
|
||||
<a href="/">
|
||||
<h1 >-{$DomainModel->d_name}-<p>{$DomainModel->d_text_logo}</p></h1>
|
||||
</a>
|
||||
{/block}
|
||||
|
||||
{block name="main"}
|
||||
<h2 class="site-description">{$DomainModel->d_index_description}</h2>
|
||||
<div class="layout-root">
|
||||
<div class="work-content">
|
||||
<div class="entry-point">
|
||||
@@ -178,9 +179,9 @@
|
||||
<div class="">
|
||||
<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"}
|
||||
<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 ">
|
||||
<h2>{$Novel.n_name}</h2>
|
||||
<h3>{$Novel.n_name}</h3>
|
||||
<p class="xiaoshuo_info">
|
||||
<span>{$Novel.n_category}/ <span>{$Novel.n_author} </span></span>
|
||||
<span>{:date('m-d')}</span></p>
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
{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="keywords"}{site:replace code="NOVEL@GETLIBRARY@KEYWORDS"}{/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"/}' />
|
||||
{/if}
|
||||
<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'}
|
||||
<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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{$DomainModel->d_name}",
|
||||
}
|
||||
}
|
||||
</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')}"
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"url": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
|
||||
"name": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
|
||||
"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>
|
||||
{/if}
|
||||
@@ -45,28 +85,32 @@
|
||||
{block name='nav-active-class'}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="logo-html"}
|
||||
<a href="/">
|
||||
<h2 >-{$DomainModel->d_name}-<span>{$DomainModel->d_text_logo}</span></h2>
|
||||
</a>
|
||||
{/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_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" /}
|
||||
|
||||
<p class="site-description">{$strDescription??''}</p>
|
||||
<h1 class="site-description">{site:getval code="strNovelCategoryName" /}{site:getval code="strNovelOrder" /}{site:getval code="strNovelStatus" /}小说 - 免费在线阅读</h1>
|
||||
<nav class="breadcrumb" aria-label="breadcrumb">
|
||||
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="/" itemprop="item">
|
||||
<span itemprop="name">首页</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="{$strCategoryIndexUrlTemp}" itemprop="item">
|
||||
<span itemprop="name">分类</span>
|
||||
</a>
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="layout-root">
|
||||
<div id="classify">
|
||||
<div class="w-category">
|
||||
@@ -74,13 +118,13 @@ button_num="8" cache_life="86400" func="generateCategoryPager" export_name="resD
|
||||
<div class="list">
|
||||
|
||||
<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>
|
||||
|
||||
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
|
||||
<div class="item">
|
||||
<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>
|
||||
</div>
|
||||
{/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"}
|
||||
<div class="item" id="paixu_{$key}">
|
||||
<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>
|
||||
|
||||
{/novel:sort}
|
||||
|
||||
@@ -158,7 +158,7 @@ $Novel.n_id{extend name="baseH5" /}
|
||||
|
||||
<div class="detail-info">
|
||||
<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 ?? ''}"
|
||||
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节" >
|
||||
</div>
|
||||
|
||||
@@ -87,11 +87,12 @@
|
||||
{novel:list count="8" sort_type="tuijian" d_key="key" d_val="Novel" cache_life="86400"}
|
||||
|
||||
<div class="search-tags">
|
||||
<div class="title"><i class="bi {eq name="key" value="0"}bi-fire {else/} bi-heart-fill{/eq}"></i>
|
||||
{$Novel.n_name}</div>
|
||||
<div class="tags tags-rect">
|
||||
<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}
|
||||
</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>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{/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 -->
|
||||
<div id="firendlink">
|
||||
友情连接:
|
||||
|
||||
|
||||
<a href="/sitemap_index.xml">XML地图</a>
|
||||
<a href="/site.txt">网站地图</a>
|
||||
|
||||
</div>
|
||||
<div id="firendlink">
|
||||
最新标签:
|
||||
|
||||
{site:forgelist count="30" d_key="d_key" d_val="ForgeNovel" cache_life="86400"}
|
||||
<a
|
||||
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="title">
|
||||
<div class="title-text">[strItemTiele]</div>
|
||||
<h2 class="title-text">[strItemTiele]</h2>
|
||||
<div class="more">
|
||||
<span class="icon">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div class="novel-item">
|
||||
<div class="top">
|
||||
<img class="pre-img lozad" data-encrypted="false"
|
||||
src="/assets/images/loading_img_bg_default.jpg"
|
||||
data-src="{$Novel.n_cover_path}">
|
||||
src="/static/img/default.jpg"
|
||||
data-src="{$Novel.n_cover_path}" alt="{$Novel['n_name'] ?? ''}小说封面 - {$Novel.n_author}最新章节">
|
||||
{if isset($showIconStatus) && $showIconStatus == 'paixu'}
|
||||
<div class="icon-status">{$key + 1}</div>
|
||||
{/if}
|
||||
@@ -13,6 +13,6 @@
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
<div class="bottom">{$Novel.n_name}</div>
|
||||
<h3 class="bottom">{$Novel.n_name}</h3>
|
||||
</div>
|
||||
</a>
|
||||
@@ -2,8 +2,8 @@
|
||||
<div class="block_img">
|
||||
<a href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin"/}'>
|
||||
<img class="pre-img lozad" data-encrypted="false"
|
||||
src="/assets/images/loading_img_bg_default.jpg"
|
||||
data-src="{$Novel.n_cover_path}">
|
||||
src="/static/img/default.jpg"
|
||||
data-src="{$Novel.n_cover_path}" alt="{$Novel['n_name'] ?? ''}小说封面 - {$Novel.n_author}最新章节">
|
||||
|
||||
{if isset($showIconStatus) && $showIconStatus}
|
||||
<div class="icon-status">{$key + 1}</div>
|
||||
@@ -14,7 +14,7 @@
|
||||
<p class="p1">
|
||||
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'></a>
|
||||
</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_maioshu">
|
||||
<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' => [
|
||||
'description' => '详情Title 模板分组',
|
||||
'sfg_id' => 10,
|
||||
'arrSubjectFomart' => $arrSexDescriptionTemp,
|
||||
'arrSubjectFomart' => $arrNovelTitleTemp,
|
||||
|
||||
],
|
||||
'NOVEL@GETNOVELINFO@KEYWORDS' => [
|
||||
|
||||
@@ -2432,11 +2432,16 @@ body.swal2-toast-column .swal2-toast .swal2-validation-message {
|
||||
.config-style-hide{
|
||||
display: none;
|
||||
}
|
||||
.s-logo h1 , .s-logo p{
|
||||
.s-logo h1 ,.s-logo h2 , .s-logo p , .s-logo span{
|
||||
font-size: .25rem;
|
||||
margin-bottom: 0px;
|
||||
color: #ffffff;
|
||||
}
|
||||
.s-logo h1 {
|
||||
.s-logo h1 , .s-logo h2 {
|
||||
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 {
|
||||
font-size: 16px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.search-tag-content .search-tags .tags {
|
||||
|
||||
@@ -77,7 +77,7 @@ body {
|
||||
line-height: 20px;
|
||||
/* padding-top: 8px; */
|
||||
}
|
||||
.block_txt h2 {
|
||||
.block_txt h2 , .block_txt h3{
|
||||
font-size: 0.26rem;
|
||||
margin-bottom: 0px;
|
||||
display: -webkit-box; /* 必须结合 -webkit-line-clamp 使用 */
|
||||
@@ -244,12 +244,12 @@ margin-right: 0.1rem;
|
||||
width: 100%;
|
||||
}
|
||||
.site-description {
|
||||
font-size: 0.3rem;
|
||||
font-size: 0.25rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
line-height: 0.6rem;
|
||||
line-height: 0.4rem;
|
||||
background: #ffffff;
|
||||
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