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

This commit is contained in:
Default
2025-04-10 15:56:03 +08:00
24 changed files with 374 additions and 220 deletions

View File

@@ -494,7 +494,7 @@ class Novel extends BaseController
$intCount = mb_strlen($strFocus); $intCount = mb_strlen($strFocus);
if ($intCount > 300) { if ($intCount > 300) {
$intPos = mt_rand(0, $intCount - 300); $intPos = mt_rand(0, $intCount - 300);
$strFocus = mb_substr($strFocus, $intPos, 300); $strFocus = mb_substr($strFocus, 0, 300);
} }
} }
@@ -573,29 +573,22 @@ class Novel extends BaseController
$ChapterModel = ChapterModel::getInstance(); $ChapterModel = ChapterModel::getInstance();
$arrChapter = $ChapterModel->getLatestChapterByNId($intNId); $arrChapter = $ChapterModel->getLatestChapterByNId($intNId);
$strChapterDescription = '';
// 上一章节和下一章节 // 上一章节和下一章节
$arrPreChapter = $arrNextChapter = []; $arrPreChapter = $arrNextChapter = [];
if ($arrChapter) { if ($arrChapter) {
$arrPreChapter = $ChapterModel->getPreChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']); $arrPreChapter = $ChapterModel->getPreChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']);
$arrNextChapter = $ChapterModel->getNextChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']); $arrNextChapter = $ChapterModel->getNextChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']);
// 要点-先从章节随机截取后面如果用上ai看看使用ai 提炼 精简内容
$strChapterDescription = strip_tags($arrChapter['content']);
$intCount = mb_strlen($strChapterDescription);
$strChapterDescription = ($intCount > 50) ? mb_substr($strChapterDescription, 0, 50) : $strChapterDescription;
} }
$arrCategoryAll = CategoryModel::$arrCategoryAll; $arrCategoryAll = CategoryModel::$arrCategoryAll;
// 模拟数据-随机推荐数据10条
$arrNewsNovel = [
['id' => 1, 'name' => '小说1', 'author' => '作者1'],
['id' => 2, 'name' => '小说2', 'author' => '作者2'],
['id' => 3, 'name' => '小说3', 'author' => '作者3'],
['id' => 4, 'name' => '小说3', 'author' => '作者3'],
['id' => 5, 'name' => '小说3', 'author' => '作者3'],
['id' => 6, 'name' => '小说3', 'author' => '作者3'],
['id' => 7, 'name' => '小说3', 'author' => '作者3'],
['id' => 8, 'name' => '小说3', 'author' => '作者3'],
];
// 更新值 // 更新值
ConverterMovel::setVal([ ConverterMovel::setVal([
'intPage' => 1, 'intPage' => 1,
@@ -604,6 +597,7 @@ class Novel extends BaseController
'strNovelCategoryName' => $arrNovel['og_novel_category'], 'strNovelCategoryName' => $arrNovel['og_novel_category'],
'strNovelStatus' => $arrNovel['og_novel_status'], 'strNovelStatus' => $arrNovel['og_novel_status'],
'strNovelDescription' => $arrNovel['og_description'], 'strNovelDescription' => $arrNovel['og_description'],
'strChapterDescription' => $strChapterDescription,
'strNovelChapterName' => $arrChapter['name'] ?? '', 'strNovelChapterName' => $arrChapter['name'] ?? '',
'strNovelChapterSort' => $arrChapter['c_sort_num'] ?? '', 'strNovelChapterSort' => $arrChapter['c_sort_num'] ?? '',
]); ]);
@@ -617,10 +611,6 @@ class Novel extends BaseController
$strKeywords = ConverterMovel::convert($strKeywordsTemplate); $strKeywords = ConverterMovel::convert($strKeywordsTemplate);
$strDescription = ConverterMovel::convert($strDescriptionTemplate); $strDescription = ConverterMovel::convert($strDescriptionTemplate);
View::assign([
'arrNewsNovel' => $arrNewsNovel,
'strPageCode' => 'boy'
]);
View::assign([ View::assign([
'arrNovel' => $arrNovel, 'arrNovel' => $arrNovel,
'arrCategoryAll' => $arrCategoryAll, 'arrCategoryAll' => $arrCategoryAll,
@@ -665,6 +655,7 @@ class Novel extends BaseController
$arrFilter = ['n_id' => $intNId, 'c_sort_num' => $intChapterSort, 'c_page' => $intChapterPage]; $arrFilter = ['n_id' => $intNId, 'c_sort_num' => $intChapterSort, 'c_page' => $intChapterPage];
$arrChapter = $ChapterModel->findOne($arrFilter); $arrChapter = $ChapterModel->findOne($arrFilter);
$strChapterDescription = '';
// 上一章节和下一章节 // 上一章节和下一章节
$arrPreChapter = $arrNextChapter = []; $arrPreChapter = $arrNextChapter = [];
@@ -672,6 +663,11 @@ class Novel extends BaseController
if ($arrChapter) { if ($arrChapter) {
$arrPreChapter = $ChapterModel->getPreChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']); $arrPreChapter = $ChapterModel->getPreChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']);
$arrNextChapter = $ChapterModel->getNextChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']); $arrNextChapter = $ChapterModel->getNextChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']);
// 要点-先从章节随机截取后面如果用上ai看看使用ai 提炼 精简内容
$strChapterDescription = strip_tags($arrChapter['content']);
$intCount = mb_strlen($strChapterDescription);
$strChapterDescription = ($intCount > 50) ? mb_substr($strChapterDescription, 0, 50) : $strChapterDescription;
} }
$arrCategoryAll = CategoryModel::$arrCategoryAll; $arrCategoryAll = CategoryModel::$arrCategoryAll;
@@ -684,6 +680,7 @@ class Novel extends BaseController
'strNovelCategoryName' => $arrNovel['og_novel_category'], 'strNovelCategoryName' => $arrNovel['og_novel_category'],
'strNovelStatus' => $arrNovel['og_novel_status'], 'strNovelStatus' => $arrNovel['og_novel_status'],
'strNovelDescription' => $arrNovel['og_description'], 'strNovelDescription' => $arrNovel['og_description'],
'strChapterDescription' => $strChapterDescription,
'strNovelChapterName' => $arrChapter['name'], 'strNovelChapterName' => $arrChapter['name'],
'strNovelChapterSort' => $arrChapter['c_sort_num'], 'strNovelChapterSort' => $arrChapter['c_sort_num'],
]); ]);

View File

@@ -19,7 +19,7 @@
<!-- <script src="/public/jquery/jquery-3.7.1.min.js"></script> --> <!-- <script src="/public/jquery/jquery-3.7.1.min.js"></script> -->
<!-- 社交媒体标签 --> <!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}" /> <meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" /> <meta property="og:description" content="{$strDescription??'暂无简介'}" />
<meta property="og:url" <meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' /> content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' />
@@ -38,42 +38,38 @@
content="https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrChapter.n_id}/zhang-{$arrChapter.c_sort_num}"> content="https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrChapter.n_id}/zhang-{$arrChapter.c_sort_num}">
<!-- 可选:支持 Twitter Card --> <!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['og_novel_book_name'] ?? '未知小说'}" /> <meta name="twitter:title" content="{$arrNovel['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" /> <meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" /> <meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://{$DomainModel->d_domain}", "@context": "https://schema.org",
"@type": "book",
"headline": "{$strTitle??''}",
"description": "{$strDescription??''}",
"datePublished": "{$arrNovel.og_novel_update_time ?? ''}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"image": "{$Novel.n_cover_path ?? ''}",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num ?? 1}"
}
"isPartOf": {
"@type": "Book", "@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"url": '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' "author": {
} "@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"image": "{$arrNovel.n_cover_path ?? ''}",
"url": "https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num ?? 1}",
"inLanguage": "zh-CN",
"genre": "{$arrNovel.og_novel_category ??''}",
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"hasPart": {
"@type": "CreativeWork",
"name": "{$arrChapter.name ?? ''}",
"url": "https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num ?? 1}",
"description": "{$strDescription}"
}
} }
</script> </script>
</head> </head>
<body class="skin-default"> <body class="skin-default">
@@ -116,7 +112,6 @@
</div> </div>
<article id="chapterContent" class="read-article" style="font-size: 1.125rem"> <article id="chapterContent" class="read-article" style="font-size: 1.125rem">
<section class="read-section jsChapterWrapper" data-chapter-id="4b2d5aab58d71"> <section class="read-section jsChapterWrapper" data-chapter-id="4b2d5aab58d71">
<!-- <h3>01 天龙问世</h3> -->
{$arrChapter.content|raw} {$arrChapter.content|raw}
</section> </section>
@@ -142,12 +137,14 @@
</content> </content>
<div class="page-read-top"> <div class="page-read-top">
<h2 id="chapterTitle" class="read-book-name">
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'> <h1 id="chapterTitle" class="read-book-name">
{$arrNovel.og_novel_book_name} <a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
{$arrNovel.og_novel_book_name}
</a> </a>
</h2> <a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num}">{$arrChapter.name}</a>
<h1 id="chapterTitle" class="read-book-name">{$arrChapter.name}</h1>
</h1>
</div> </div>
<mark id="readPageMark" class="read-page-mark">你刚刚阅读到这里</mark> <mark id="readPageMark" class="read-page-mark">你刚刚阅读到这里</mark>
<p id="pageNum" class="read-page-num">1/1</p> <p id="pageNum" class="read-page-num">1/1</p>

View File

@@ -4,18 +4,18 @@
{block name="description"}{$strDescription??''}{/block} {block name="description"}{$strDescription??''}{/block}
{block name="head"} {block name="head"}
<!-- 社交媒体标签 --> <!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}" /> <meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}章节目录 - {$DomainModel->d_name} 第{$intPage}页 " />
<meta property="og:description" content="{$strDescription??'暂无简介'}" /> <meta property="og:description" content="{$strDescription??'暂无简介'}" />
<meta property="og:url" <meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' /> content='https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrLatestChapter.c_sort_num ?? 1}' />
<meta property="og:type" content="book" /> <meta property="og:type" content="website" />
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" /> <meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
<meta property="og:site_name" content="{$DomainModel->d_name}" /> <meta property="og:site_name" content="{$DomainModel->d_name}" />
<meta property="og:novel:category" content="{$arrNovel.og_novel_category ?? ''}"> <meta property="og:novel:category" content="{$arrNovel.og_novel_category ?? ''}">
<meta property="og:novel:author" content="{$arrNovel.og_novel_author ?? ''}"> <meta property="og:novel:author" content="{$arrNovel.og_novel_author ?? ''}">
<meta property="og:novel:book_name" content="{$arrNovel.og_novel_book_name ?? ''}"> <meta property="og:novel:book_name" content="{$arrNovel.og_novel_book_name ?? ''}">
<meta property="og:novel:read_url" <meta property="og:novel:read_url"
content="https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-1"> content="https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$intPage}">
<meta property="og:novel:status" content="{$arrNovel.og_novel_status ?? ''}"> <meta property="og:novel:status" content="{$arrNovel.og_novel_status ?? ''}">
<meta property="og:novel:update_time" content="{$arrNovel.og_novel_update_time ?? ''}"> <meta property="og:novel:update_time" content="{$arrNovel.og_novel_update_time ?? ''}">
<meta property="og:novel:latest_chapter_name" content="{$arrLatestChapter.name ?? ''}"> <meta property="og:novel:latest_chapter_name" content="{$arrLatestChapter.name ?? ''}">
@@ -26,13 +26,14 @@
<meta name="twitter:title" content="{$arrNovel['og_novel_book_name'] ?? '未知小说'}" /> <meta name="twitter:title" content="{$arrNovel['og_novel_book_name'] ?? '未知小说'}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" /> <meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" /> <meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": 'https://{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}', "@context": "https://schema.org",
"@type": "Book", "@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"description": "{$arrNovel['og_description'] ??'暂无简介'}",
"author": { "author": {
"@type": "Person", "@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}" "name": "{$arrNovel['og_novel_author'] ??'佚名'}"
@@ -42,17 +43,14 @@
"name": "{$DomainModel->d_name}", "name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}" "url": "https://{$DomainModel->d_domain}"
}, },
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}", "url": "https://{$DomainModel->d_domain}/xiaoshuo/$arrNovel[og_novel_pin_yin]/mulu/zheng/{$intPage}",
"image": "{$Novel.n_cover_path ?? ''}",
"url": '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}',
"genre": "{$arrNovel.og_novel_category ??''}",
"inLanguage": "zh-CN", "inLanguage": "zh-CN",
"bookFormat": "https://{$DomainModel->d_domain}/EBook", "genre": "{$arrNovel['og_novel_category'] ?? '未知分类'}",
"aggregateRating": { "hasPart": {
"@type": "AggregateRating", "@type": "WebPage",
"ratingValue": "4.5", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}章节目录 第{$intPage}页",
"reviewCount": "100", "url": "https://{$DomainModel->d_domain}/xiaoshuo/$arrNovel[og_novel_pin_yin]/mulu/zheng/{$intPage}"
}, }
} }
</script> </script>
{block name="head-js"}{/block} {block name="head-js"}{/block}
@@ -74,7 +72,7 @@
<meta itemprop="position" content="1" /> <meta itemprop="position" content="1" />
</li> </li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="/shuku/all/{arrNovel.category_pinyin}/all/page1" itemprop="item"> <a href="/shuku/all/{$arrNovel.category_pinyin}/all/page1" itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_category}</span> <span itemprop="name">{$arrNovel.og_novel_category}</span>
</a> </a>
<meta itemprop="position" content="2" /> <meta itemprop="position" content="2" />
@@ -92,7 +90,7 @@
<div class="mod mod-attentions"> <div class="mod mod-attentions">
{$arrGRM[0]|raw} {$arrGRM[0]|raw}
<div class="mod-head"> <div class="mod-head">
<h1>{$arrNovel['og_novel_book_name']}-章节目录第{$intPage}页</h1> <h1>{$arrNovel['og_novel_book_name']}章节目录 - {$arrNovel['og_novel_author']} - {$DomainModel->d_name} 第{$intPage}页</h1>
</div> </div>
@@ -105,7 +103,7 @@
<li> <li>
{$arrGRM[$key]|raw} {$arrGRM[$key]|raw}
<a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$Chapter.c_sort_num}" <a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$Chapter.c_sort_num}"
title="{$Chapter.name}">{$Chapter.name}</a> title="{$arrNovel['og_novel_book_name']} {$Chapter.name}">{$Chapter.name}</a>
</li> </li>
{/volist} {/volist}
</ul> </ul>

View File

@@ -29,8 +29,8 @@
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": 'https://{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}', "@context": "https://schema.org",
"@type": "book", "@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"description": "{$arrNovel['og_description'] ??'暂无简介'}", "description": "{$arrNovel['og_description'] ??'暂无简介'}",
"author": { "author": {
@@ -43,8 +43,8 @@
"url": "https://{$DomainModel->d_domain}" "url": "https://{$DomainModel->d_domain}"
}, },
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}", "datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"image": "{$Novel.n_cover_path ?? ''}", "image": "{$arrNovel.n_cover_path ?? ''}",
"url": '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}', "url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}',
"genre": "{$arrNovel.og_novel_category ??''}", "genre": "{$arrNovel.og_novel_category ??''}",
"inLanguage": "zh-CN", "inLanguage": "zh-CN",
"bookFormat": "https://{$DomainModel->d_domain}/EBook", "bookFormat": "https://{$DomainModel->d_domain}/EBook",
@@ -53,6 +53,7 @@
"ratingValue": "4.5", "ratingValue": "4.5",
"reviewCount": "100", "reviewCount": "100",
}, },
} }
</script> </script>
{/block} {/block}
@@ -60,12 +61,14 @@
{block name="logo-html"} {block name="logo-html"}
<h2 class="logo"> <h2 class="logo">
<a href="/">{$DomainModel->d_name}-{$arrNovel['og_novel_book_name']}最新章节</a> <a href="/">{$DomainModel->d_name}-{$DomainModel->d_text_logo}</a>
</h2> </h2>
{/block} {/block}
{block name="main"} {block name="main"}
<div class="wrap"> <div class="wrap">
<nav class="breadcrumb" aria-label="breadcrumb"> <nav class="breadcrumb" aria-label="breadcrumb">
<ol itemscope itemtype="https://schema.org/BreadcrumbList"> <ol itemscope itemtype="https://schema.org/BreadcrumbList">
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
@@ -87,6 +90,7 @@
<meta itemprop="position" content="3" /> <meta itemprop="position" content="3" />
</li> </li>
</ol> </ol>
<h1 class="site-description ">{$arrNovel['og_novel_book_name']}最新章节 - {$arrNovel['og_novel_author']} - {$DomainModel->d_name}</h1>
</nav> </nav>
<!--info--> <!--info-->
@@ -95,13 +99,13 @@
<div class="book-info"> <div class="book-info">
<dl class="base clearfix"> <dl class="base clearfix">
<dt> <dt>
<img src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" <img src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$Novel->og_novel_book_name ?? ''}封面" class="lazy lazyload-img" /> alt="{$arrNovel['og_novel_book_name'] ?? ''}小说封面 - {$arrNovel.og_novel_author}最新章节" class="lazy lazyload-img" />
<i class='{eq name="arrNovel.og_novel_status" value="连载中"}serial{else}finish {/eq}'>已完结</i> <i class='{eq name="arrNovel.og_novel_status" value="连载中"}serial{else}finish {/eq}'>已完结</i>
</dt> </dt>
<dd> <dd>
<h1>{$arrNovel['og_novel_book_name']}</h1> <h2>{$arrNovel['og_novel_book_name']}</h2>
<p class="info"> <p class="info">
<span>分类:{$arrNovel.og_novel_category}</span> <span>分类:{$arrNovel.og_novel_category}</span>
<span>作者:<a href="/search.html?keyword=兔子很淡定">{$arrNovel.og_novel_author}</a></span> <span>作者:<a href="/search.html?keyword=兔子很淡定">{$arrNovel.og_novel_author}</a></span>
@@ -163,7 +167,7 @@
<!-- hot-book --> <!-- hot-book -->
<div class="mod mod-attentions"> <div class="mod mod-attentions">
<div class="mod-head"> <div class="mod-head">
<h3>目录</h3> <h3>{$arrNovel.og_novel_book_name}最新章节</h3>
</div> </div>
<div class="attentions"> <div class="attentions">
<ul class="clearfix"> <ul class="clearfix">
@@ -171,14 +175,14 @@
<li> <li>
{$arrGRM[$key]|raw} {$arrGRM[$key]|raw}
<a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$Chapter.c_sort_num}" <a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$Chapter.c_sort_num}"
title="{$Chapter.name}">{$Chapter.name}</a> title="{$arrNovel.og_novel_book_name}-{$Chapter.name}">{$Chapter.name}</a>
</li> </li>
{/volist} {/volist}
</ul> </ul>
<div class="chapters-more"> <div class="chapters-more">
<a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/mulu/zheng" <a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/mulu/zheng"
class="reading btn-bookshelf">更多章节</a> class="reading btn-bookshelf">{$arrNovel.og_novel_book_name}更多章节</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -8,15 +8,31 @@
<meta property="og:description" content="{$strDescription??''}" /> <meta property="og:description" content="{$strDescription??''}" />
<meta property="og:url" content="https://{$DomainModel->d_domain}/search.html?keyword={$strSearchKeywords}" /> <meta property="og:url" content="https://{$DomainModel->d_domain}/search.html?keyword={$strSearchKeywords}" />
<meta property="og:type" content="book" /> <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="{$strSearchKeywords} - {$DomainModel->d_name}搜索 - 第{$intPage}页">
<meta name="twitter:description" content="{$strSearchKeywords}搜索结果第{$intPage}页,免费阅读小说,快来体验!">
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://{$DomainModel->d_domain}/search.html?keyword={$strSearchKeywords}", "@context": "https://schema.org",
"@type": "book", "@type": "SearchResultsPage",
"headline": "{$strTitle??''}", "url": "https://{$DomainModel->d_name}/search.html?keyword={$strSearchKeywords}",
"description": "{$strDescription??''}", "name": "{$DomainModel->d_name} - {$DomainModel->d_name}搜索 第{$intPage}页",
"datePublished": "{:date('Y-m-d')}" "description": "搜索‘{$strSearchKeywords}’结果第{$intPage}页,提供{$strSearchKeywords}创作的小说免费阅读。",
} "datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"mainEntity": {
"@type": "Book",
"name": "{$DomainModel->d_name}",
"author": {
"@type": "Person",
"name": "{$DomainModel->d_name}"
},
"url": "https://{$DomainModel->d_domain}"
}
}
</script> </script>
{/block} {/block}
{block name="head-js"}{/block} {block name="head-js"}{/block}
@@ -33,7 +49,11 @@
<div class="wrap"> <div class="wrap">
<div class="mod mod-search"> <div class="mod mod-search">
<div class="search-list"> <div class="search-list">
<div class="result">搜索<span style="color:red">“{$strSearchKeywords}”</span>相关结果共有 <span style="color:red">{$arrPage.total}</span> 部小说</div>
<div class="result">
<h1>{$strSearchKeywords}搜索结果 - {$DomainModel->d_name} 第{$intPage}页</h1>
搜索<span style="color:red">“{$strSearchKeywords}”</span>相关结果共有 <span style="color:red">{$arrPage.total}</span> 部小说
</div>
{if empty($arrPage.data)} {if empty($arrPage.data)}
<p style="text-align: center;line-height: 60px">没有相关数据</p> <p style="text-align: center;line-height: 60px">没有相关数据</p>
{else} {else}

View File

@@ -21,7 +21,13 @@
{/block} {/block}
{block name="head-js"}{/block} {block name="head-js"}{/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}

View File

@@ -21,7 +21,13 @@
{/block} {/block}
{block name="head-js"}{/block} {block name="head-js"}{/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}
<div class="content"> <div class="content">

View File

@@ -61,7 +61,13 @@
<link rel="canonical" <link rel="canonical"
href='{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'> href='{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
{/block} {/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}
<div class="content"> <div class="content">
<nav class="breadcrumb" aria-label="breadcrumb"> <nav class="breadcrumb" aria-label="breadcrumb">

View File

@@ -47,7 +47,13 @@
{/if} {/if}
{/block} {/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}
<div class="content"> <div class="content">

View File

@@ -30,7 +30,13 @@
{/block} {/block}
{block name="head-js"}{/block} {block name="head-js"}{/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}

View File

@@ -16,7 +16,7 @@
{/block} {/block}
<!-- 社交媒体标签 --> <!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}" /> <meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" /> <meta property="og:description" content="{$strDescription??'暂无简介'}" />
<meta property="og:url" <meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' /> content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' />
@@ -35,36 +35,35 @@
content="https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrChapter.n_id}/zhang-{$arrChapter.c_sort_num}"> content="https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrChapter.n_id}/zhang-{$arrChapter.c_sort_num}">
<!-- 可选:支持 Twitter Card --> <!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['og_novel_book_name'] ?? '未知小说'}" /> <meta name="twitter:title" content="{$arrNovel['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" /> <meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" /> <meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://{$DomainModel->d_domain}", "@context": "https://schema.org",
"@type": "book",
"headline": "{$strTitle??''}",
"description": "{$strDescription??''}",
"datePublished": "{$arrNovel.og_novel_update_time ?? ''}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"image": "{$Novel.n_cover_path ?? ''}",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num ?? 1}"
}
"isPartOf": {
"@type": "Book", "@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"url": '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' "author": {
} "@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"image": "{$arrNovel.n_cover_path ?? ''}",
"url": "https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num ?? 1}",
"inLanguage": "zh-CN",
"genre": "{$arrNovel.og_novel_category ??''}",
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"hasPart": {
"@type": "CreativeWork",
"name": "{$arrChapter.name ?? ''}",
"url": "https://{$DomainModel->d_domain}/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num ?? 1}",
"description": "{$strDescription}"
}
} }
</script> </script>
</head> </head>
@@ -178,11 +177,16 @@
<div class="read-main-wrap font-family01" style="font-size:18px" id="j_readMainWrap"> <div class="read-main-wrap font-family01" style="font-size:18px" id="j_readMainWrap">
<div id="j_chapterBox"> <div id="j_chapterBox">
<div class="text-wrap" id="ajaxchapter-4b2d5aab58d71" data-cid="4b2d5aab58d71" <div class="text-wrap" id="ajaxchapter-4b2d5aab58d71" data-cid="4b2d5aab58d71"
data-purl="javascript:void(0);" data-nurl="/book/12538/486ef2abee55d.html" data-purl="javascript:void(0);" data-nurl=""
data-info="0|-1|486ef2abee55d|0"> data-info="0|-1|486ef2abee55d|0">
<div class="main-text-wrap"> <div class="main-text-wrap">
<div class="text-head"> <div class="text-head">
<h3 class="j_chapterName">{$arrChapter.name ?? ''}</h3> <h1 class="j_chapterName">
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
{$arrNovel.og_novel_book_name}
</a>
<a href="/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrChapter.c_sort_num}">{$arrChapter.name}</a>
</h1>
<div class="text-info cf"> <div class="text-info cf">
<div class="info fl"> <div class="info fl">
{$arrGRM[11]|raw} {$arrGRM[11]|raw}

View File

@@ -28,39 +28,41 @@
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" /> <meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": 'https://{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}', "@context": "https://schema.org",
"@type": "Book", "@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"description": "{$arrNovel['og_description'] ??'暂无简介'}", "author": {
"author": { "@type": "Person",
"@type": "Person", "name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['og_novel_author'] ??'佚名'}" },
}, "publisher": {
"publisher": { "@type": "Organization",
"@type": "Organization", "name": "{$DomainModel->d_name}",
"name": "{$DomainModel->d_name}", "url": "https://{$DomainModel->d_domain}"
"url": "https://{$DomainModel->d_domain}" },
}, "url": "https://{$DomainModel->d_domain}/xiaoshuo/$arrNovel[og_novel_pin_yin]/mulu/zheng/{$intPage}",
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}", "inLanguage": "zh-CN",
"image": "{$Novel.n_cover_path ?? ''}", "genre": "{$arrNovel['og_novel_category'] ?? '未知分类'}",
"url": '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}', "hasPart": {
"genre": "{$arrNovel.og_novel_category ??''}", "@type": "WebPage",
"inLanguage": "zh-CN", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}章节目录 第{$intPage}页",
"bookFormat": "https://{$DomainModel->d_domain}/EBook", "url": "https://{$DomainModel->d_domain}/xiaoshuo/$arrNovel[og_novel_pin_yin]/mulu/zheng/{$intPage}"
"aggregateRating": { }
"@type": "AggregateRating", }
"ratingValue": "4.5",
"reviewCount": "100",
},
}
</script> </script>
{block name="head-css"} {block name="head-css"}
<link rel="canonical" href='https://{$DomainModel->d_domain}/xiaoshuo/$arrNovel.og_novel_pin_yin-$arrNovel.n_id/mulu/zheng" /}'> <link rel="canonical" href='https://{$DomainModel->d_domain}/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/mulu/zheng" /}'>
{/block} {/block}
{block name="head-js"}{/block} {block name="head-js"}{/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}
<div class="content"> <div class="content">
@@ -89,13 +91,14 @@
<meta itemprop="position" content="4" /> <meta itemprop="position" content="4" />
</li> </li>
</ol> </ol>
</nav> </nav>
<div class="con_box"> <div class="con_box">
<div class="top"> <div class="top">
{$arrGRM[0]|raw} {$arrGRM[0]|raw}
<h3><a href='/pc{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' >{$arrNovel['og_novel_book_name']}</a></h3> <h1><a href='/pc{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' >{$arrNovel['og_novel_book_name']}章节目录 - {$arrNovel['og_novel_author']} - {$DomainModel->d_name} 第{$intPage}页</a></h1>
<p>作者:{$arrNovel.og_novel_author}</p> <p>作者:{$arrNovel.og_novel_author}</p>
</div> </div>
<div class="fenlei"> <div class="fenlei">
@@ -110,7 +113,9 @@
{foreach $arrPage.data as $key => $Chapter } {foreach $arrPage.data as $key => $Chapter }
<li> <li>
{$arrGRM[$key]|raw} {$arrGRM[$key]|raw}
<h2>
<a href="/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$Chapter.c_sort_num}" >{$Chapter.name}</a> <a href="/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$Chapter.c_sort_num}" >{$Chapter.name}</a>
</h2>
</li> </li>
{/foreach} {/foreach}
</ul> </ul>

View File

@@ -28,32 +28,33 @@
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" /> <meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": 'https://{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}', "@context": "https://schema.org",
"@type": "book", "@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}", "name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"description": "{$arrNovel['og_description'] ??'暂无简介'}", "description": "{$arrNovel['og_description'] ??'暂无简介'}",
"author": { "author": {
"@type": "Person", "@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}" "name": "{$arrNovel['og_novel_author'] ??'佚名'}"
}, },
"publisher": { "publisher": {
"@type": "Organization", "@type": "Organization",
"name": "{$DomainModel->d_name}", "name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}" "url": "https://{$DomainModel->d_domain}"
}, },
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}", "datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"image": "{$Novel.n_cover_path ?? ''}", "image": "{$arrNovel.n_cover_path ?? ''}",
"url": '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}', "url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}',
"genre": "{$arrNovel.og_novel_category ??''}", "genre": "{$arrNovel.og_novel_category ??''}",
"inLanguage": "zh-CN", "inLanguage": "zh-CN",
"bookFormat": "https://{$DomainModel->d_domain}/EBook", "bookFormat": "https://{$DomainModel->d_domain}/EBook",
"aggregateRating": { "aggregateRating": {
"@type": "AggregateRating", "@type": "AggregateRating",
"ratingValue": "4.5", "ratingValue": "4.5",
"reviewCount": "100", "reviewCount": "100",
}, },
}
}
</script> </script>
{/block} {/block}
@@ -61,7 +62,13 @@
<link rel="canonical" <link rel="canonical"
href='{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'> href='{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
{/block} {/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}
<div class="content"> <div class="content">
<nav class="breadcrumb" aria-label="breadcrumb"> <nav class="breadcrumb" aria-label="breadcrumb">
@@ -85,6 +92,7 @@
<meta itemprop="position" content="3" /> <meta itemprop="position" content="3" />
</li> </li>
</ol> </ol>
<h1 class="site-description ">{$arrNovel['og_novel_book_name']}最新章节 - {$arrNovel['og_novel_author']} - {$DomainModel->d_name}</h1>
</nav> </nav>
<div class="info"> <div class="info">
@@ -92,8 +100,8 @@
<div class="info_L"> <div class="info_L">
<a href='/pc{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' <a href='/pc{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'
title="{$arrNovel['og_novel_book_name']}" class="book_cov"> title="{$arrNovel['og_novel_book_name']}" class="book_cov">
<img src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" <img src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$Novel->og_novel_book_name ?? ''}封面" class="lazyload_book_cover lazyload-img"> alt="{$arrNovel['og_novel_book_name'] ?? ''}小说封面 - {$arrNovel.og_novel_author}最新章节" class="lazyload_book_cover lazyload-img">
<i class="serial">{$arrNovel.og_novel_status ?? ''}</i> <i class="serial">{$arrNovel.og_novel_status ?? ''}</i>
</a> </a>
<div class="btn"> <div class="btn">
@@ -106,9 +114,9 @@
</div> </div>
<div class="info_C book_inf"> <div class="info_C book_inf">
<div class="c01"> <div class="c01">
<h3><a <h2><a
href='/pc{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>{$arrNovel['og_novel_book_name']}</a> href='/pc{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>{$arrNovel['og_novel_book_name']}</a>
</h3> </h2>
<!-- <span id="mod_book_star">0分</span> --> <!-- <span id="mod_book_star">0分</span> -->
</div> </div>
<p class="c02"> <p class="c02">
@@ -178,6 +186,7 @@
<p> <p>
{$arrGRM[$key]|raw} {$arrGRM[$key]|raw}
<a href="/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$Chapter.n_id}/zhang-{$Chapter.c_sort_num}" <a href="/pc/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$Chapter.n_id}/zhang-{$Chapter.c_sort_num}"
title="{$arrNovel.og_novel_book_name}-{$Chapter.name}"
class="zj">{$Chapter.name}</a> class="zj">{$Chapter.name}</a>
<span class="time">{$Chapter.created_at}</span> <span class="time">{$Chapter.created_at}</span>
<!-- <span class="time">3天前</span>--> <!-- <span class="time">3天前</span>-->

View File

@@ -24,7 +24,13 @@
{/block} {/block}
{block name="head-js"}{/block} {block name="head-js"}{/block}
{block name='body-class'}body-rank-class{/block} {block name='body-class'}body-rank-class{/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}
<div class="content content_back"> <div class="content content_back">

View File

@@ -8,25 +8,51 @@
<meta property="og:description" content="{$strDescription??''}" /> <meta property="og:description" content="{$strDescription??''}" />
<meta property="og:url" content="https://{$DomainModel->d_domain}/search.html?keyword={$strSearchKeywords}" /> <meta property="og:url" content="https://{$DomainModel->d_domain}/search.html?keyword={$strSearchKeywords}" />
<meta property="og:type" content="book" /> <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="{$strSearchKeywords} - {$DomainModel->d_name}搜索 - 第{$intPage}页">
<meta name="twitter:description" content="{$strSearchKeywords}搜索结果第{$intPage}页,免费阅读小说,快来体验!">
<!-- 结构化数据 --> <!-- 结构化数据 -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://{$DomainModel->d_domain}/search.html?keyword={$strSearchKeywords}", "@context": "https://schema.org",
"@type": "book", "@type": "SearchResultsPage",
"headline": "{$strTitle??''}", "url": "https://{$DomainModel->d_name}/search.html?keyword={$strSearchKeywords}",
"description": "{$strDescription??''}", "name": "{$DomainModel->d_name} - {$DomainModel->d_name}搜索 第{$intPage}页",
"datePublished": "{:date('Y-m-d')}" "description": "搜索‘{$strSearchKeywords}’结果第{$intPage}页,提供{$strSearchKeywords}创作的小说免费阅读。",
} "datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"mainEntity": {
"@type": "Book",
"name": "{$DomainModel->d_name}",
"author": {
"@type": "Person",
"name": "{$DomainModel->d_name}"
},
"url": "https://{$DomainModel->d_domain}"
}
}
</script> </script>
{block name="head-js"}{/block} {block name="head-js"}{/block}
{block name="logo-html"}
<h2>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="main"} {block name="main"}
<div class="content"> <div class="content">
<div class="find"> <div class="find">
<div class="fi_t"> <div class="fi_t">
<div class="result search_tip">搜索<span style="color:red">“{$strSearchKeywords}”</span>相关结果共有 <span style="color:red">{$arrPage.total}</span> 部小说</div> <h1>{$strSearchKeywords}搜索结果 - {$DomainModel->d_name} 第{$intPage}页</h1>
<div class="result search_tip">
搜索<span style="color:red">“{$strSearchKeywords}”</span>相关结果共有 <span style="color:red">{$arrPage.total}</span> 部小说
</div>
</div> </div>
</div> </div>

View File

@@ -23,7 +23,15 @@
</script> </script>
{/block} {/block}
{block name="head-js"}{/block} {block name="head-js"}{/block}
<link rel="canonical" href="/" />
{block name="logo-html"}
<h1>
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h1>
{/block}
{block name="main"} {block name="main"}

View File

@@ -22,12 +22,7 @@
<!--公共头部 开始--> <!--公共头部 开始-->
<div class="header"> <div class="header">
<div class="headWrap"> <div class="headWrap">
<h1> {block name="logo-html"}{/block}
<a href="/pc/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
<!-- <p>-{$DomainModel->d_text_logo}</p> -->
</h1>
<ul class="nav"> <ul class="nav">
<li class=' {eq name="strPageCode" value="home"}on {/eq}'> <li class=' {eq name="strPageCode" value="home"}on {/eq}'>
<a href="/pc/" target="_self" title="首页">首页</a> <a href="/pc/" target="_self" title="首页">首页</a>

View File

@@ -50,7 +50,7 @@ pc-首页
3.地图生成 3.地图生成
4.收录推送 4.收录推送
5.友情链接 5.友情链接
6.热搜词 收索下面展示全站通用每个站点随机展示10条 6.热搜词 顶部收索下面展示全站通用每个站点随机展示10条
@@ -58,3 +58,35 @@ pc-首页
# 第三版本 # 第三版本
1.文章 板块 1.文章 板块
# 替换模板 需要根据域名绑定的
1.其他所有 替换模板分组 每个域名 随机绑定一个替换模板
2.(特殊化)小说详情 title 每个域名 / 每个小说 随机绑定一个 替换模板
3.(特殊化) 页面url 配置
每个域名 绑定一个替换模板,但是这里有个特殊需求(
看下面,比喻第一组,详情页面选择了 xiaoshuo 这个 命名,那我希望 章节和目录也是选择这个 带有 xiaoshuo 的命名模板
)
```
1组
详情页url '/xiaoshuo/{strPinYin}-{intNId}/mulu/{strOrder}/{intPage}'
章节页url '/xiaoshuo/{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}',
目录页url '/xiaoshuo/{strPinYin}-{intNId}/mulu/{strOrder}/{intPage}',
其它页面。。。
2组
详情页url '/novel/{strPinYin}-{intNId}/mulu/{strOrder}/{intPage}'
章节页url '/novel/{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}',
目录页url '/novel/{strPinYin}-{intNId}/mulu/{strOrder}/{intPage}',
其它页面。。。
3组
详情页url '/book/{strPinYin}-{intNId}/mulu/{strOrder}/{intPage}'
章节页url '/book/{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}',
目录页url '/book/{strPinYin}-{intNId}/mulu/{strOrder}/{intPage}',
其它页面。。。
```

View File

@@ -24,6 +24,7 @@ class ConverterMovel
'{strNovelName}' => '', '{strNovelName}' => '',
'{strNovelChapterName}' => '', '{strNovelChapterName}' => '',
'{strNovelChapterSort}' => '', '{strNovelChapterSort}' => '',
'{strChapterDescription}' => '',
'{strNovelCategoryName}' => '', '{strNovelCategoryName}' => '',
'{strNovelSex}' => '', '{strNovelSex}' => '',
'{strNovelStatus}' => '', '{strNovelStatus}' => '',
@@ -31,6 +32,7 @@ class ConverterMovel
'{strNovelAuthor}' => '', '{strNovelAuthor}' => '',
'{strNovelDescription}' => '', '{strNovelDescription}' => '',
'{strSearchKeywords}' => '', '{strSearchKeywords}' => '',
]; ];
static public $arrDescription = [ static public $arrDescription = [
@@ -44,6 +46,7 @@ class ConverterMovel
'{strNovelName}' => '这个是当前页面小说描述', '{strNovelName}' => '这个是当前页面小说描述',
'{strNovelChapterName}' => '当前页面小说章节名字', '{strNovelChapterName}' => '当前页面小说章节名字',
'{strNovelChapterSort}' => '当前页面小说章节排序号', '{strNovelChapterSort}' => '当前页面小说章节排序号',
'{strChapterDescription}' => '当前页面小说章节描述',
'{strNovelCategoryName}' => '当前页面小说分类名字', '{strNovelCategoryName}' => '当前页面小说分类名字',
'{strNovelSex}' => '当前页面小说是男生还是女生 小说', '{strNovelSex}' => '当前页面小说是男生还是女生 小说',
'{strNovelStatus}' => '当前页面小说状态 是连载还是完结', '{strNovelStatus}' => '当前页面小说状态 是连载还是完结',

View File

@@ -87,6 +87,7 @@ class TemplateSeeder
'description' => '详情Title 替换模板分组ID', 'description' => '详情Title 替换模板分组ID',
'sfg_id' => 10, 'sfg_id' => 10,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName} - {strNovelAuthor}- {strNovelCategoryName} - 免费在线阅读 - {strSiteName}',
'{strNovelName} - {strNovelAuthor} - {strSiteName} - 免费阅读', '{strNovelName} - {strNovelAuthor} - {strSiteName} - 免费阅读',
] ]
], ],
@@ -94,7 +95,7 @@ class TemplateSeeder
'description' => '详情Keywords 替换模板分组ID', 'description' => '详情Keywords 替换模板分组ID',
'sfg_id' => 11, 'sfg_id' => 11,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName}, {strNovelAuthor}, {strNovelCategoryName}小说, {strNovelSex}小说, {strNovelStatus}小说, {strSiteName}, 免费阅读', '{strNovelName}, {strNovelAuthor}, {strNovelCategoryName}, {strNovelSex}小说, {strNovelStatus}小说, {strSiteName}, 免费阅读',
] ]
], ],
'NOVEL@GETNOVELINFO@DESCRIPTION' => [ 'NOVEL@GETNOVELINFO@DESCRIPTION' => [
@@ -109,20 +110,21 @@ class TemplateSeeder
'description' => '目录Title 替换模板分组ID', 'description' => '目录Title 替换模板分组ID',
'sfg_id' => 13, 'sfg_id' => 13,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName}章节目录 - {strSiteName} - 第{intPage}页', '{strNovelName}章节目录 - {strNovelAuthor} - 免费查看 - {strSiteName} 第{intPage}页',
] ]
], ],
'NOVEL@GETNOVELCHAPTERALL@KEYWORDS' => [ 'NOVEL@GETNOVELCHAPTERALL@KEYWORDS' => [
'description' => '目录Keywords 替换模板分组ID', 'description' => '目录Keywords 替换模板分组ID',
'sfg_id' => 14, 'sfg_id' => 14,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName}, {strNovelName}章节目录, {strNovelAuthor}, {strNovelCategoryName}小说, {strNovelSex}小说, {strSiteKeywords}, {strSiteName}', '{strNovelName}, 章节目录, {strNovelAuthor}, {strNovelCategoryName}, 免费阅读,{strNovelSex}小说, {strSiteKeywords}, {strSiteName}',
] ]
], ],
'NOVEL@GETNOVELCHAPTERALL@DESCRIPTION' => [ 'NOVEL@GETNOVELCHAPTERALL@DESCRIPTION' => [
'description' => '目录Description 替换模板分组ID', 'description' => '目录Description 替换模板分组ID',
'sfg_id' => 15, 'sfg_id' => 15,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strSiteName}提供{strNovelName}章节目录免费查看,第{intPage}页包含最新{strNovelStatus}章节,{strNovelAuthor}创作,畅享{strSiteDomain}', '{strSiteName}提供{strNovelName}章节目录免费查看,第{intPage}页包含最新{strNovelStatus}章节,{strNovelAuthor}创作,畅享{strSiteDomain}',
] ]
], ],
@@ -131,21 +133,22 @@ class TemplateSeeder
'description' => '内容Title 替换模板分组ID', 'description' => '内容Title 替换模板分组ID',
'sfg_id' => 16, 'sfg_id' => 16,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName} {strNovelChapterSort}章 {strNovelChapterName} - {strSiteName}', '{strNovelName} {strNovelChapterName} - {strNovelAuthor} - 免费阅读 - {strSiteName}',
'{strNovelName} {strNovelChapterName} - {strSiteName}',
] ]
], ],
'NOVEL@GETNOVELCHAPTER@KEYWORDS' => [ 'NOVEL@GETNOVELCHAPTER@KEYWORDS' => [
'description' => '内容Keywords 替换模板分组ID', 'description' => '内容Keywords 替换模板分组ID',
'sfg_id' => 17, 'sfg_id' => 17,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName}, 第{strNovelChapterSort}章, {strNovelChapterName}, {strNovelAuthor}, {strSiteKeywords}, {strSiteName}, 免费阅读', '{strNovelName}, {strNovelChapterName}, {strNovelAuthor}, {strSiteKeywords}, 免费阅读, {strSiteName}',
] ]
], ],
'NOVEL@GETNOVELCHAPTER@DESCRIPTION' => [ 'NOVEL@GETNOVELCHAPTER@DESCRIPTION' => [
'description' => '内容Description 替换模板分组ID', 'description' => '内容Description 替换模板分组ID',
'sfg_id' => 18, 'sfg_id' => 18,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strSiteName}提供{strNovelName}第{strNovelChapterSort}章{strNovelChapterName}免费阅读,{strNovelAuthor}创作,畅享{strSiteDomain}', '{strNovelName}{strNovelChapterName}免费在线阅读,{strNovelAuthor}著。{strChapterDescription},快来{strSiteName}畅读精彩章节',
] ]
], ],
@@ -227,11 +230,11 @@ class TemplateSeeder
'sfg_id' => 29, 'sfg_id' => 29,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/xiaoshuo/{strPinYin}-{intNId}', '/xiaoshuo/{strPinYin}-{intNId}',
'/novel/{strPinYin}-{intNId}', // '/novel/{strPinYin}-{intNId}',
'/book/{strPinYin}-{intNId}', // '/book/{strPinYin}-{intNId}',
'/xiaoshuo-{strPinYin}-{intNId}', // '/xiaoshuo-{strPinYin}-{intNId}',
'/novel-{strPinYin}-{intNId}', // '/novel-{strPinYin}-{intNId}',
'/book-{strPinYin}-{intNId}', // '/book-{strPinYin}-{intNId}',
] ]
], ],
'KAN_NOVEL_INFO_URL' => [ 'KAN_NOVEL_INFO_URL' => [

View File

@@ -34,12 +34,13 @@ s{background: url(../images/iconC.png) no-repeat;}
.vzj{width: 21px; height: 10px; background: url(../images/iconC.png) no-repeat -154px -48px; margin: 10px 22px 0 10px; float: right;} .vzj{width: 21px; height: 10px; background: url(../images/iconC.png) no-repeat -154px -48px; margin: 10px 22px 0 10px; float: right;}
/* 公共头部 */ /* 公共头部 */
.header{width: 100%; height: 80px; background: #fff; margin-bottom: 20px;} .header{width: 100%; height: 80px; background: #fff; margin-bottom: 0px;}
.headWrap{width: 1100px; margin: 0 auto;height: 80px; background: #fff;} .headWrap{width: 1100px; margin: 0 auto;height: 80px; background: #fff;}
/* logo */ /* logo */
.headWrap h1{width: auto; height: 50px; padding-top: 15px; float: left;} .headWrap h1 , .headWrap h2{width: auto; height: 50px; padding-top: 15px; float: left;}
.headWrap h1 a{width: 100%; height: 50px;font-size: 1.4rem; } .headWrap h1 a , .headWrap h2 a{width: 100%; height: 50px;font-size: 1.4rem; line-height: 48px;
.headWrap h1 img{width: 100%; height: 100%;} }
.headWrap h1 img , .headWrap h2 img {width: 100%; height: 100%;}
/*导航 */ /*导航 */
.headWrap .nav{float: left; margin: 24px 0 0 20px;} .headWrap .nav{float: left; margin: 24px 0 0 20px;}
.headWrap .nav li{float: left; margin: 0 2px;} .headWrap .nav li{float: left; margin: 0 2px;}
@@ -197,7 +198,7 @@ display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;}
/* 热门推荐 */ /* 热门推荐 */
.content .area{width: 1064px; height: 514px; background: #fff; padding: 38px 18px 40px;} .content .area{width: 1064px; height: 514px; background: #fff; padding: 38px 18px 40px;}
.content .site-description{width: 1064px; background: #fff; padding: 10px 18px 10px;font-size: 1rem;} .content .site-description{width: 1064px; padding: 10px 0px 0px;font-size: 1rem;}
.f2 .area_head{overflow: hidden; margin-bottom: 15px;} .f2 .area_head{overflow: hidden; margin-bottom: 15px;}
.f2 .f2_list{overflow: hidden; padding: 0 10px;} .f2 .f2_list{overflow: hidden; padding: 0 10px;}
.f2 .f2_list li{overflow: hidden; width: 122px; margin: 6px 0; float: left; padding: 13px 26px;} .f2 .f2_list li{overflow: hidden; width: 122px; margin: 6px 0; float: left; padding: 13px 26px;}
@@ -308,6 +309,7 @@ display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;}
/* 筛选 */ /* 筛选 */
.find{background: #fff; width: 1100px;overflow: hidden; margin-bottom: 20px;} .find{background: #fff; width: 1100px;overflow: hidden; margin-bottom: 20px;}
.find h1{text-align: center;font-size: 1.2rem;margin-bottom: 1rem;}
.find .fi_t{padding: 40px 0; border-bottom: 1px solid #f0f0f0; } .find .fi_t{padding: 40px 0; border-bottom: 1px solid #f0f0f0; }
.find .boFi{width: 468px; height: 38px; border: 1px solid #8a8a8a; border-radius: 20px; margin: 0 auto; overflow: hidden;} .find .boFi{width: 468px; height: 38px; border: 1px solid #8a8a8a; border-radius: 20px; margin: 0 auto; overflow: hidden;}
.find .boFi span{float: left; margin: 6px 20px 0 14px;} .find .boFi span{float: left; margin: 6px 20px 0 14px;}
@@ -489,7 +491,7 @@ display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;}
/*章节列表*/ /*章节列表*/
.con_box{padding: 0 50px; overflow: hidden;background: #fff;font-size: 12px;} .con_box{padding: 0 50px; overflow: hidden;background: #fff;font-size: 12px;}
.con_box .top{text-align: center; margin-bottom: 58px;} .con_box .top{text-align: center; margin-bottom: 58px;}
.con_box h3{font-size: 20px; font-weight: 600; margin: 45px 0 12px 0;} .con_box h1{font-size: 20px; font-weight: 600; margin: 45px 0 12px 0;}
.con_box .fenlei{overflow: hidden; margin: 0 0 20px 0;} .con_box .fenlei{overflow: hidden; margin: 0 0 20px 0;}
.con_box .fenlei .tit{width: 998px; height: 34px; border: 1px solid #f0f0f0; font-size: 14px; line-height: 34px; color: #333;} .con_box .fenlei .tit{width: 998px; height: 34px; border: 1px solid #f0f0f0; font-size: 14px; line-height: 34px; color: #333;}
.con_box .fenlei .tit span{width: 4px; height: 14px; background: #f26552; margin: 10px 10px 0 10px; float: left;} .con_box .fenlei .tit span{width: 4px; height: 14px; background: #f26552; margin: 10px 10px 0 10px; float: left;}
@@ -497,6 +499,7 @@ display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;}
.con_box .show .tit s{margin: 10px 10px 0 0; background-position: -64px -70px;} .con_box .show .tit s{margin: 10px 10px 0 0; background-position: -64px -70px;}
.fL_con{width: 1000px; padding: 28px 0 50px 0; overflow: hidden;} .fL_con{width: 1000px; padding: 28px 0 50px 0; overflow: hidden;}
.fL_con ul li{float: left; width: 23%; height: 48px; line-height: 48px; border-bottom: 1px dashed #f0f0f0; padding: 0 10px;} .fL_con ul li{float: left; width: 23%; height: 48px; line-height: 48px; border-bottom: 1px dashed #f0f0f0; padding: 0 10px;}
.fL_con ul li h2{font-size:0.8rem}
.fL_con ul li a{ max-width: 190px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;} .fL_con ul li a{ max-width: 190px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
.fL_con ul li a,.ydts a{color: #9e9e9e;} .fL_con ul li a,.ydts a{color: #9e9e9e;}
.fL_con ul li a:hover,.ydts a:hover{color: #f26552;} .fL_con ul li a:hover,.ydts a:hover{color: #f26552;}
@@ -604,7 +607,7 @@ display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; margi
.breadcrumb { .breadcrumb {
font-family: Arial, sans-serif; font-family: Arial, sans-serif;
padding: 10px 15px; padding: 10px 15px;
background-color: #f8f9fa; background-color: #ffffff;
border-radius: 5px; border-radius: 5px;
margin: 10px 0; margin: 10px 0;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);

View File

@@ -257,9 +257,13 @@ aria {
} }
.site-description{ .site-description{
font-size: 0.7rem; font-size: 0.7rem;
padding: 0.5rem 1rem; padding: 0.5rem 0.5rem;
line-height: 1rem; line-height: 1rem;
} }
.breadcrumb .site-description{
padding: 0.5rem 0rem 0rem;
}
/*尾部*/ /*尾部*/
.footer{ .footer{
margin-top: 0.75rem; margin-top: 0.75rem;
@@ -502,7 +506,7 @@ aria {
border-radius: 0.1875rem; border-radius: 0.1875rem;
} }
.mod-head h1{ .mod-head h1{
font-size: 1.125rem; font-size: 0.7rem;
text-align: center; text-align: center;
line-height: 40px; line-height: 40px;
width: 100%; width: 100%;
@@ -2281,6 +2285,9 @@ aria {
background: #f6f7f8; background: #f6f7f8;
font-size: 0.9375rem; font-size: 0.9375rem;
} }
.search-list .result h1{
margin-bottom: 0.8rem;
}
.search-list .result span { .search-list .result span {
color: #fe7031; color: #fe7031;
} }

View File

@@ -375,6 +375,9 @@ a.read-load-icon[class] {
left: 1rem; left: 1rem;
color: rgba(0,0,0,.7); */ color: rgba(0,0,0,.7); */
} }
.read-book-name a{
display: block;
}
.read-page-mark { .read-page-mark {
font-size: 0; font-size: 0;
position: absolute; position: absolute;

View File

@@ -432,6 +432,10 @@ a:hover {
z-index: 5; z-index: 5;
margin-bottom: 12px; margin-bottom: 12px;
} }
.main-text-wrap .text-head h1{
font-size:1rem;
margin-bottom: 0.5rem;
}
.main-text-wrap .text-head h3 { .main-text-wrap .text-head h3 {
font: 24px/32px PingFangSC-Regular,HelveticaNeue-Light,'Helvetica Neue Light','Microsoft YaHei',sans-serif; font: 24px/32px PingFangSC-Regular,HelveticaNeue-Light,'Helvetica Neue Light','Microsoft YaHei',sans-serif;
overflow: hidden; overflow: hidden;