This commit is contained in:
Default
2025-04-15 21:16:14 +08:00
parent 694d5fd14c
commit d19ea97481
47 changed files with 907 additions and 769 deletions

View File

@@ -42,7 +42,7 @@ class Index extends BaseController
break;
case 'kuangYu':
$strKey = sprintf('%s:H5:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 0, 8);
$arrNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8, 0, NULL, ['og_novel_update_time' => -1]);
$arrNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8, 0, NULL, ['n_update_time' => -1]);
$strKey = sprintf('%s:H5:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'daily', 0);
$arrDayRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'daily');
@@ -141,7 +141,7 @@ class Index extends BaseController
// 男生频道,最新的 随机5个小说
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 1, 5);
$arrBoyNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 1, NULL, ['og_novel_update_time' => -1]);
$arrBoyNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 1, NULL, ['n_update_time' => -1]);
// 男生频道,周排行榜 随机10个小说
@@ -158,7 +158,7 @@ class Index extends BaseController
// 女生频道,最新的 随机5个小说
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 2, 5);
$arrGirlNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 2, NULL, ['og_novel_update_time' => -1]);
$arrGirlNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 2, NULL, ['n_update_time' => -1]);
// 女生频道,周排行榜 随机10个小说
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 2);
@@ -174,7 +174,7 @@ class Index extends BaseController
// 最近更新-随机50
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 0, 50);
$arrNewsUpdateNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 50, 0, NULL, ['og_novel_update_time' => -1]);
$arrNewsUpdateNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 50, 0, NULL, ['n_update_time' => -1]);
// Title 模板
ConverterMovel::setVal([

View File

@@ -248,11 +248,11 @@ class Novel extends BaseController
// 模拟数据-最近更新-随机50
$strKey = sprintf('%s:PC:Novel:Channel:Latest:%s', $Request->DomainModel->d_domain, $intType);
$intCount = 20;
$arrNewsUpdateNovel = $NovelModel->getCommonNovelOnCache($strKey, $intLifeTime, $intCount, $intType, NULL, ['og_novel_update_time' => -1]);
$arrNewsUpdateNovel = $NovelModel->getCommonNovelOnCache($strKey, $intLifeTime, $intCount, $intType, NULL, ['n_update_time' => -1]);
// echo "<pre>";
// var_dump($arrNewsUpdateNovel);exit;
// TODO og_description 改成 og_description
// TODO n_description 改成 n_description
// 更新值
ConverterMovel::setVal([
'intPage' => 1,
@@ -388,14 +388,14 @@ class Novel extends BaseController
foreach ($arrNovel['n_forge_novel'] as $arrForgeNovel) {
if ($arrForgeNovel['n_forge_id'] == $intForgeId) {
$arrNovel['og_novel_book_name'] = $arrForgeNovel['n_forge_title'];
$arrNovel['n_name'] = $arrForgeNovel['n_forge_title'];
break;
}
}
// 分类拼音
$arrNovel['category_pinyin'] = CategoryModel::getPinYinByZh($arrNovel['og_novel_category']);
$arrNovel['category_sex'] = $arrNovel['category_sex'] ?? 'man';
$arrNovel['n_category_pinyin'] = CategoryModel::getPinYin($arrNovel['n_category']);
$arrNovel['n_category_sex_en'] = $arrNovel['n_category_sex_en'] ?? 'man';
// 最后章节
$ChapterModel = ChapterModel::getInstance();
@@ -411,7 +411,7 @@ class Novel extends BaseController
$strFocus = '';
// 要点
if ($arrLatestChapter) {
$strFocus = strip_tags($arrLatestChapter['content']);
$strFocus = strip_tags($arrLatestChapter['c_content']);
$intCount = mb_strlen($strFocus);
if ($intCount > 300) {
$intPos = mt_rand(0, $intCount - 300);
@@ -439,12 +439,12 @@ class Novel extends BaseController
// 更新值
ConverterMovel::setVal([
'intPage' => 1,
'strNovelName' => $arrNovel['og_novel_book_name'],
'strNovelAuthor' => $arrNovel['og_novel_author'],
'strNovelCategoryName' => $arrNovel['og_novel_category'],
'strNovelSex' => $arrNovel['category_sex'] == 'man' ? '男生' : '女生',
'strNovelStatus' => $arrNovel['og_novel_status'],
'strNovelDescription' => $arrNovel['og_description'],
'strNovelName' => $arrNovel['n_name'],
'strNovelAuthor' => $arrNovel['n_author'],
'strNovelCategoryName' => $arrNovel['n_category'],
'strNovelSex' => $arrNovel['n_category_sex_en'] == 'man' ? '男生' : '女生',
'strNovelStatus' => $arrNovel['n_status'],
'strNovelDescription' => $arrNovel['n_description'],
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@TITLE',$intForgeId);
@@ -457,7 +457,7 @@ class Novel extends BaseController
// js使用到
$arrNovelJs = $arrNovel;
unset($arrNovelJs['n_related_novel'], $arrNovelJs['n_forge_novel'], $arrNovelJs['og_description']);
unset($arrNovelJs['n_related_novel'], $arrNovelJs['n_forge_novel'], $arrNovelJs['n_description']);
View::assign([
'arrRelateveNovel' => $arrRelateveNovel,
@@ -498,8 +498,8 @@ class Novel extends BaseController
$arrNovel = $NovelModel->getNovelByNId($intNId);
// 分类拼音
$arrNovel['category_pinyin'] = CategoryModel::getPinYinByZh($arrNovel['og_novel_category']);
$arrNovel['category_sex'] = $arrNovel['category_sex'] ?? 'man';
$arrNovel['n_category_pinyin'] = CategoryModel::getPinYin($arrNovel['n_category']);
$arrNovel['n_category_sex_en'] = $arrNovel['n_category_sex_en'] ?? 'man';
// 最后章节
$ChapterModel = ChapterModel::getInstance();
@@ -515,7 +515,7 @@ class Novel extends BaseController
$strFocus = '';
// 要点
if ($arrLatestChapter) {
$strFocus = strip_tags($arrLatestChapter['content']);
$strFocus = strip_tags($arrLatestChapter['c_content']);
$intCount = mb_strlen($strFocus);
if ($intCount > 300) {
$intPos = mt_rand(0, $intCount - 300);
@@ -543,12 +543,12 @@ class Novel extends BaseController
// 更新值
ConverterMovel::setVal([
'intPage' => 1,
'strNovelName' => $arrNovel['og_novel_book_name'],
'strNovelAuthor' => $arrNovel['og_novel_author'],
'strNovelCategoryName' => $arrNovel['og_novel_category'],
'strNovelSex' => $arrNovel['category_sex'] == 'man' ? '男生' : '女生',
'strNovelStatus' => $arrNovel['og_novel_status'],
'strNovelDescription' => $arrNovel['og_description'],
'strNovelName' => $arrNovel['n_name'],
'strNovelAuthor' => $arrNovel['n_author'],
'strNovelCategoryName' => $arrNovel['n_category'],
'strNovelSex' => $arrNovel['n_category_sex_en'] == 'man' ? '男生' : '女生',
'strNovelStatus' => $arrNovel['n_status'],
'strNovelDescription' => $arrNovel['n_description'],
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
@@ -595,8 +595,8 @@ class Novel extends BaseController
$NovelModel = NovelModel::getInstance();
$arrNovel = $NovelModel->getNovelByNId($intNId);
$arrNovel['category_pinyin'] = $arrNovel['category_pinyin'] ?? 'all';
$arrNovel['category_sex'] = $arrNovel['category_sex'] ?? 'man';
$arrNovel['n_category_pinyin'] = $arrNovel['n_category_pinyin'] ?? 'all';
$arrNovel['n_category_sex_en'] = $arrNovel['n_category_sex_en'] ?? 'man';
// 最新章节
$ChapterModel = ChapterModel::getInstance();
@@ -611,9 +611,11 @@ class Novel extends BaseController
$arrNextChapter = $ChapterModel->getNextChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']);
// 要点-先从章节随机截取后面如果用上ai看看使用ai 提炼 精简内容
$strChapterDescription = strip_tags($arrChapter['content']);
$strChapterDescription = strip_tags($arrChapter['c_content']);
$intCount = mb_strlen($strChapterDescription);
$strChapterDescription = ($intCount > 50) ? mb_substr($strChapterDescription, 0, 50) : $strChapterDescription;
$arrChapter['c_content'] = base64_encode($arrChapter['c_content']);
}
$arrCategoryAll = CategoryModel::$arrCategoryAll;
@@ -621,13 +623,13 @@ class Novel extends BaseController
// 更新值
ConverterMovel::setVal([
'intPage' => 1,
'strNovelName' => $arrNovel['og_novel_book_name'],
'strNovelAuthor' => $arrNovel['og_novel_author'],
'strNovelCategoryName' => $arrNovel['og_novel_category'],
'strNovelStatus' => $arrNovel['og_novel_status'],
'strNovelDescription' => $arrNovel['og_description'],
'strNovelName' => $arrNovel['n_name'],
'strNovelAuthor' => $arrNovel['n_author'],
'strNovelCategoryName' => $arrNovel['n_category'],
'strNovelStatus' => $arrNovel['n_status'],
'strNovelDescription' => $arrNovel['n_description'],
'strChapterDescription' => $strChapterDescription,
'strNovelChapterName' => $arrChapter['name'] ?? '',
'strNovelChapterName' => $arrChapter['c_name'] ?? '',
'strNovelChapterSort' => $arrChapter['c_sort_num'] ?? '',
]);
@@ -640,6 +642,7 @@ class Novel extends BaseController
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
$strDescription = ConverterMovel::convert($strDescriptionTemplate);
View::assign([
'arrNovel' => $arrNovel,
'arrCategoryAll' => $arrCategoryAll,
@@ -679,8 +682,8 @@ class Novel extends BaseController
$intNId = $intNovelId;
$arrNovel = $NovelModel->getNovelByNId($intNId);
$arrNovel['category_pinyin'] = $arrNovel['category_pinyin'] ?? 'all';
$arrNovel['category_sex'] = $arrNovel['category_sex'] ?? 'man';
$arrNovel['n_category_pinyin'] = $arrNovel['n_category_pinyin'] ?? 'all';
$arrNovel['n_category_sex_en'] = $arrNovel['n_category_sex_en'] ?? 'man';
// 章节
$ChapterModel = ChapterModel::getInstance();
@@ -697,11 +700,11 @@ class Novel extends BaseController
$arrNextChapter = $ChapterModel->getNextChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']);
// 要点-先从章节随机截取后面如果用上ai看看使用ai 提炼 精简内容
$strChapterDescription = strip_tags($arrChapter['content']);
$strChapterDescription = strip_tags($arrChapter['c_content']);
$intCount = mb_strlen($strChapterDescription);
$strChapterDescription = ($intCount > 50) ? mb_substr($strChapterDescription, 0, 50) : $strChapterDescription;
$arrChapter['content'] = base64_encode($arrChapter['content']);
$arrChapter['c_content'] = base64_encode($arrChapter['c_content']);
}
$arrCategoryAll = CategoryModel::$arrCategoryAll;
@@ -709,13 +712,13 @@ class Novel extends BaseController
// 更新值
ConverterMovel::setVal([
'intPage' => 1,
'strNovelName' => $arrNovel['og_novel_book_name'],
'strNovelAuthor' => $arrNovel['og_novel_author'],
'strNovelCategoryName' => $arrNovel['og_novel_category'],
'strNovelStatus' => $arrNovel['og_novel_status'],
'strNovelDescription' => $arrNovel['og_description'],
'strNovelName' => $arrNovel['n_name'],
'strNovelAuthor' => $arrNovel['n_author'],
'strNovelCategoryName' => $arrNovel['n_category'],
'strNovelStatus' => $arrNovel['n_status'],
'strNovelDescription' => $arrNovel['n_description'],
'strChapterDescription' => $strChapterDescription,
'strNovelChapterName' => $arrChapter['name'],
'strNovelChapterName' => $arrChapter['c_name'],
'strNovelChapterSort' => $arrChapter['c_sort_num'],
]);
@@ -765,8 +768,8 @@ class Novel extends BaseController
$intNId = $intNovelId;
$arrNovel = $NovelModel->getNovelByNId($intNId);
$arrNovel['category_pinyin'] = $arrNovel['category_pinyin'] ?? 'all';
$arrNovel['category_sex'] = $arrNovel['category_sex'] ?? 'man';
$arrNovel['n_category_pinyin'] = $arrNovel['n_category_pinyin'] ?? 'all';
$arrNovel['n_category_sex_en'] = $arrNovel['n_category_sex_en'] ?? 'man';
$ChapterModel = ChapterModel::getInstance();
@@ -789,18 +792,18 @@ class Novel extends BaseController
$intButtomNum = 10;
}
$strBaseUrl = sprintf('/pc/xiaoshuo/%s-%s/mulu/%s/{page}', $arrNovel['og_novel_pin_yin'], $intNId, $strOrder);
$strBaseUrl = sprintf('/pc/xiaoshuo/%s-%s/mulu/%s/{page}', $arrNovel['n_name_pinyin'], $intNId, $strOrder);
$arrPaginator = CusteomPage02::generate($intPage, $arrPage['total'], $intLimit, $strBaseUrl, $intButtomNum);
// 更新值
ConverterMovel::setVal([
'intPage' => $intPage,
'strNovelSex' => $arrNovel['category_sex'] == 'man' ? '男生' : '女生',
'strNovelName' => $arrNovel['og_novel_book_name'],
'strNovelAuthor' => $arrNovel['og_novel_author'],
'strNovelCategoryName' => $arrNovel['og_novel_category'],
'strNovelStatus' => $arrNovel['og_novel_status'],
'strNovelDescription' => $arrNovel['og_description'],
'strNovelSex' => $arrNovel['n_category_sex_en'] == 'man' ? '男生' : '女生',
'strNovelName' => $arrNovel['n_name'],
'strNovelAuthor' => $arrNovel['n_author'],
'strNovelCategoryName' => $arrNovel['n_category'],
'strNovelStatus' => $arrNovel['n_status'],
'strNovelDescription' => $arrNovel['n_description'],
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
@@ -861,10 +864,10 @@ class Novel extends BaseController
$arrFilter = [
'$or' => [
['og_novel_book_name' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
['og_novel_author' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
['og_novel_category' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
['og_description' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
['n_name' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
['n_author' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
['n_category' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
['n_description' => ['$regex' => $strSearchKeywords, '$options' => 'i']],
]
];

View File

@@ -16,15 +16,15 @@
{foreach $arrRecommendNovel as $key=>$Novel }
<dl class="rec-focus-book">
<dt class="book-img">
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'>
<img height="100" width="80" alt="{$Novel.og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读"
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<img height="100" width="80" alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读"
src="{$Novel.n_cover_path ?? ''}" >
</a>
</dt>
<dd class="book-info">
<h2><a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'>{$Novel.og_novel_book_name}</a></h2>
<p>作者:{$Novel.og_novel_author}</p>
<p>{$Novel.og_description}</p>
<h2><a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a></h2>
<p>作者:{$Novel.n_author}</p>
<p>{$Novel.n_description}</p>
</dd>
</dl>
{/foreach}

View File

@@ -68,7 +68,7 @@
<h3 class="wrap-title"><span>最新标签</span></h3>
<div class="rec-focus" style="font-size:12px;">
{foreach $arrRecommendNovel as $key=>$vo }
<a href="/">{$vo.og_novel_book_name}</a>&nbsp;&nbsp;
<a href="/">{$vo.n_name}</a>&nbsp;&nbsp;
{/foreach}
<a href="/sitemap_index.xml">XML地图</a>&nbsp;&nbsp;
</div>

View File

@@ -4,26 +4,26 @@
{block name="description"}{$strDescription??''}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}章节目录 - {$DomainModel->d_name} 第{$intPage}页 " />
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}章节目录 - {$DomainModel->d_name} 第{$intPage}页 " />
<meta property="og:description" content="{$strDescription??'暂无简介'}" />
<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[n_name_pinyin]" /}' />
<meta property="og:type" content="website" />
<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.og_novel_category ?? ''}">
<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: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}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$intFirstChapterSort"/}'>
<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:latest_chapter_name" content="{$arrLatestChapter.name ?? ''}">
content='https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$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="{$arrLatestChapter.c_name ?? ''}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{site:lcpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
content='https://{$DomainModel->d_domain}{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['og_novel_book_name'] ?? '未知小说'}" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
@@ -33,23 +33,23 @@
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="$intPage"/}',
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="$intPage"/}',
"inLanguage": "zh-CN",
"genre": "{$arrNovel['og_novel_category'] ?? '未知分类'}",
"genre": "{$arrNovel['n_category'] ?? '未知分类'}",
"hasPart": {
"@type": "WebPage",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}章节目录 第{$intPage}页",
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="$intPage"/}'
"name": "{$arrNovel['n_name'] ?? '未知小说'}章节目录 第{$intPage}页",
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="$intPage"/}'
}
}
</script>
@@ -72,15 +72,15 @@
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<a href='{site:nflurl gender="all" category="$arrNovel[category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_category}</span>
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{site:nflurl gender="all" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['og_novel_book_name']}</span>
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
@@ -91,7 +91,7 @@
<div class="mod mod-attentions">
{$arrGRM[0]|raw}
<div class="mod-head">
<h1>{$arrNovel['og_novel_book_name']}章节目录 - {$arrNovel['og_novel_author']} - {$DomainModel->d_name} 第{$intPage}页</h1>
<h1>{$arrNovel['n_name']}章节目录 - {$arrNovel['n_author']} - {$DomainModel->d_name} 第{$intPage}页</h1>
</div>
@@ -103,8 +103,8 @@
{volist name="arrPage.data" id="Chapter" key="key"}
<li>
{$arrGRM[$key]|raw}
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$Chapter[c_sort_num]" c_page="0"/}'
title="{$arrNovel['og_novel_book_name']} {$Chapter.name}">{$Chapter.name}</a>
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$Chapter[c_sort_num]" c_page="0"/}'
title="{$arrNovel['n_name']} {$Chapter.c_name}">{$Chapter.c_name}</a>
</li>
{/volist}
</ul>

View File

@@ -20,26 +20,26 @@
<script src="/public/js/yueduqsbs.js"></script>
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" />
<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[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.og_novel_category ?? ''}">
<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: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}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$$arrChapter[c_sort_num]"/}'>
<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:latest_chapter_name" content="{$arrChapter.name}">
content='https://{$DomainModel->d_domain}{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}{site:lcpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
content='https://{$DomainModel->d_domain}{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['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<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 ?? ''}" />
<!-- 结构化数据 -->
@@ -47,10 +47,10 @@
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
@@ -58,14 +58,14 @@
"url": "https://{$DomainModel->d_domain}"
},
"image": "{$arrNovel.n_cover_path ?? ''}",
"url":'https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}',
"url":'https://{$DomainModel->d_domain}{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.og_novel_category ??''}",
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"genre": "{$arrNovel.n_category ??''}",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"hasPart": {
"@type": "CreativeWork",
"name": "{$arrChapter.name ?? ''}",
"url":'https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}',
"name": "{$arrChapter.c_name ?? ''}",
"url":'https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}',
"description": "{$strDescription}"
}
}
@@ -104,12 +104,12 @@
<a href="javascript:" class="btn-normal red" data-size="14" role="button">上一章</a>
{else}
{$arrGRM[4]|raw}
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrPreChapter[c_sort_num]" c_page="0"/}'
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrPreChapter[c_sort_num]" c_page="0"/}'
class="btn-normal red" data-size="14" role="button">上一章</a>
{/if}
{if $arrNextChapter && $arrNextChapter.c_sort_num}
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrNextChapter[c_sort_num]" c_page="0"/}'
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrNextChapter[c_sort_num]" c_page="0"/}'
class="btn-normal red" data-size="14" role="button">下一章</a>
{/if}
<a href="#" class="btn-blank blue" style="display:none">已经是最后一章了 »</a>
@@ -117,7 +117,7 @@
<article id="chapterContent" class="read-article" style="font-size: 1.125rem">
<section class="read-section jsChapterWrapper" data-chapter-id="4b2d5aab58d71">
<script>document.writeln(qsbs.bb('{$arrChapter.content}'));</script>
<script>document.writeln(qsbs.bb('{$arrChapter.c_content}'));</script>
</section>
</article>
{$arrGRM[5]|raw}
@@ -126,12 +126,12 @@
<!-- <a id="j_chapterPrev" href="javascript:void(0);">上一章</a> -->
<a href="javascript:" class="btn-normal red" data-size="14" role="button">上一章</a>
{else}
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrPreChapter[c_sort_num]" c_page="0"/}'
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrPreChapter[c_sort_num]" c_page="0"/}'
class="btn-normal red" data-size="14" role="button">上一章</a>
{/if}
{if $arrNextChapter && $arrNextChapter.c_sort_num}
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrNextChapter[c_sort_num]" c_page="0"/}'
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrNextChapter[c_sort_num]" c_page="0"/}'
class="btn-normal red" data-size="14" role="button">下一章</a>
{/if}
@@ -150,25 +150,25 @@
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<a href='{site:nflurl gender="all" category="$arrNovel[category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_category}</span>
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{site:nflurl gender="all" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_book_name}</span>
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel.n_name}</span>
</a>
<meta itemprop="position" content="2" />
</li>
</ol>
</nav>
<h1 id="chapterTitle" class="read-book-name">
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
{$arrNovel.og_novel_book_name}
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'>
{$arrNovel.n_name}
</a>
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}'>{$arrChapter.name}</a>
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}'>{$arrChapter.c_name}</a>
</h1>
</div>
@@ -202,7 +202,7 @@
<i class="iconfont icon-lixianxiazai"></i>
离线章节
</a> -->
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' class="read-opt-a">
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}' class="read-opt-a">
<i class="iconfont icon-SU"></i>
书籍详情
</a>
@@ -299,7 +299,7 @@
<footer class="read-opt-footer">
<div class="btn-group">
<!-- id="readBtnChapter" -->
<a href='{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="1"/}' class="btn-group-cell"
<a href='{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="1"/}' class="btn-group-cell"
data-rel="asideChapter" role="button" aria-haspopup="true">
<i class="iconfont icon-mulu"></i>
<h4 class="read-opt-footer-h">目录</h4>
@@ -339,28 +339,28 @@
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id' : `{$arrNovel['n_id']}`,
'og_novel_pin_yin' : `{$arrNovel['og_novel_pin_yin']}`,
'n_name_pinyin' : `{$arrNovel['n_name_pinyin']}`,
'n_cover_path' : `{$arrNovel['n_cover_path']}`,
'og_novel_book_name' : `{$arrNovel['og_novel_book_name']}`,
'og_novel_author' : `{$arrNovel['og_novel_author']}`,
'og_novel_status' : `{$arrNovel['og_novel_status']}`,
'n_name' : `{$arrNovel['n_name']}`,
'n_author' : `{$arrNovel['n_author']}`,
'n_status' : `{$arrNovel['n_status']}`,
'c_sort_num' : `{$arrChapter.c_sort_num}`,
'c_name' : `{$arrChapter.name}`,
'c_name' : `{$arrChapter.c_name}`,
};
</script>
<script type="text/javascript">
var book = {};
book.Info = {
"Id": `{$arrNovel['n_id']}`,
"Name": `{$arrNovel['og_novel_book_name']}`,
"authorName": `{$arrNovel['og_novel_author']}`
"Name": `{$arrNovel['n_name']}`,
"authorName": `{$arrNovel['n_author']}`
};
book.chapter = {
//页面进入加载的章节id
id: '{$arrPreChapter.c_sort_num ?? 1}',
//章节源id
source_id: '{$arrPreChapter.c_sort_num ?? 1}',
title: '{$arrPreChapter.name ?? 1}',
title: '{$arrPreChapter.c_name ?? 1}',
content: '',
//章节vip标识
vipStatus: 0,
@@ -369,8 +369,8 @@
//下一章id
nextId: '{$arrNextChapter.c_sort_num ?? 1}'
};
book.chapterUrl = '{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}' ;
book.url = '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'
book.chapterUrl = '{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}' ;
book.url = '{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'
book.nextChapterVip = 0;
book.uid = 0;
</script>

View File

@@ -4,26 +4,26 @@
{block name="description"}{$strDescription??''}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}" />
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" />
<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[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.og_novel_category ?? ''}">
<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: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}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$intFirstChapterSort"/}'>
<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:latest_chapter_name" content="{$arrLatestChapter.name ?? ''}">
content='https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$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="{$arrLatestChapter.c_name ?? ''}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{site:lcpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
content='https://{$DomainModel->d_domain}{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['og_novel_book_name'] ?? '未知小说'}" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
@@ -31,21 +31,21 @@
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"description": "{$arrNovel['og_description'] ??'暂无简介'}",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"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[og_novel_pin_yin]" /}',
"genre": "{$arrNovel.og_novel_category ??''}",
"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": {
@@ -78,20 +78,20 @@
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<a href='{site:nflurl gender="all" category="$arrNovel[category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_category}</span>
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{site:nflurl gender="all" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['og_novel_book_name']}</span>
<a href='{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
</ol>
<h1 class="site-description ">{$arrNovel['og_novel_book_name']}最新章节 - {$arrNovel['og_novel_author']} - {$DomainModel->d_name}</h1>
<h1 class="site-description ">{$arrNovel['n_name']}最新章节 - {$arrNovel['n_author']} - {$DomainModel->d_name}</h1>
</nav>
<!--info-->
@@ -101,15 +101,15 @@
<dl class="base clearfix">
<dt>
<img src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$arrNovel['og_novel_book_name'] ?? ''}小说封面 - {$arrNovel.og_novel_author}最新章节" class="lazy lazyload-img" />
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节" class="lazy lazyload-img" />
<i class='{eq name="arrNovel.og_novel_status" value="连载中"}serial{else}finish {/eq}'>已完结</i>
<i class='{eq name="arrNovel.n_status" value="连载中"}serial{else}finish {/eq}'>已完结</i>
</dt>
<dd>
<h2>{$arrNovel['og_novel_book_name']}</h2>
<h2>{$arrNovel['n_name']}</h2>
<p class="info">
<span>分类:{$arrNovel.og_novel_category}</span>
<span>作者:<a href='{site:souurl key="$arrNovel[og_novel_author]" p="1"/}'>{$arrNovel.og_novel_author}</a></span>
<span>分类:{$arrNovel.n_category}</span>
<span>作者:<a href='{site:souurl key="$arrNovel[n_author]" p="1"/}'>{$arrNovel.n_author}</a></span>
<!-- <span>字数54.20万字</span> -->
<span>阅读:{$arrNovelClicks.total}</span>
</p>
@@ -121,7 +121,7 @@
{if !empty($intFirstChapterSort)}
<li>
{$arrGRM[2]|raw}
<a class="read-online reading" href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$intFirstChapterSort"/}'
<a class="read-online reading" href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$intFirstChapterSort"/}'
>点击阅读</a>
</li>
{/if}
@@ -134,7 +134,7 @@
{$arrGRM[3]|raw}
<div class="content">
<p>
{$arrNovel.og_description ?? ''}
{$arrNovel.n_description ?? ''}
</p>
</div>
</div>
@@ -157,7 +157,7 @@
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
{$arrGRM[$key+20]|raw}
<a
href='{site:nnurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" n_fid="$ForgeNovel[n_forge_id]"/}'>{$ForgeNovel.n_forge_title}</a>
href='{site:nnurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" n_fid="$ForgeNovel[n_forge_id]"/}'>{$ForgeNovel.n_forge_title}</a>
{/volist}
</p>
</div>
@@ -170,23 +170,23 @@
<!-- hot-book -->
<div class="mod mod-attentions">
<div class="mod-head">
<h3>{$arrNovel.og_novel_book_name}最新章节</h3>
<h3>{$arrNovel.n_name}最新章节</h3>
</div>
<div class="attentions">
<ul class="clearfix">
{volist name="arrChapter" id="Chapter" key="key"}
<li>
{$arrGRM[$key]|raw}
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$Chapter[c_sort_num]" c_page="0"/}'
title="{$arrNovel.og_novel_book_name}-{$Chapter.name}">{$Chapter.name}</a>
<a href='{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$Chapter[c_sort_num]" c_page="0"/}'
title="{$arrNovel.n_name}-{$Chapter.c_name}">{$Chapter.c_name}</a>
</li>
{/volist}
</ul>
<div class="chapters-more">
<a href='{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="1"/}'
class="reading btn-bookshelf">{$arrNovel.og_novel_book_name}更多章节</a>
<a href='{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="1"/}'
class="reading btn-bookshelf">{$arrNovel.n_name}更多章节</a>
</div>
</div>
</div>
@@ -200,12 +200,12 @@
{foreach $arrRelateveNovel as $Novel}
<li>
{$arrGRM[$key+10]|raw}
<a href='{site:nurl n_id="Novel.n_id" n_py="Novel.og_novel_pin_yin"/}'>
<a href='{site:nurl n_id="Novel.n_id" n_py="Novel.n_name_pinyin"/}'>
<img class="lazy lazyload-img" data-encrypted="false" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.og_novel_book_name ?? ''}" />
<span>{$Novel.og_novel_book_name ?? ''}</span>
data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.n_name ?? ''}" />
<span>{$Novel.n_name ?? ''}</span>
<em>
<aria>作者:</aria>{$Novel.og_novel_author ?? ''}
<aria>作者:</aria>{$Novel.n_author ?? ''}
</em>
</a>
</li>
@@ -220,12 +220,12 @@
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id' : `{$arrNovel['n_id']}`,
'og_novel_pin_yin' : `{$arrNovel['og_novel_pin_yin']}`,
'n_name_pinyin' : `{$arrNovel['n_name_pinyin']}`,
'n_cover_path' : `{$arrNovel['n_cover_path']}`,
'og_novel_book_name' : `{$arrNovel['og_novel_book_name']}`,
'og_novel_author' : `{$arrNovel['og_novel_author']}`,
'og_novel_status' : `{$arrNovel['og_novel_status']}`,
'og_novel_update_time' : `{$arrNovel['og_novel_update_time']}`,
'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' : `第一章`,
};

View File

@@ -22,7 +22,7 @@
"url": "https://{$DomainModel->d_name}{site:souurl key='$strSearchKeywords' p='1'/}",
"name": "{$DomainModel->d_name} - {$DomainModel->d_name}搜索 第{$intPage}页",
"description": "搜索‘{$strSearchKeywords}’结果第{$intPage}页,提供{$strSearchKeywords}创作的小说免费阅读。",
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"mainEntity": {
"@type": "Book",
"name": "{$DomainModel->d_name}",

View File

@@ -4,48 +4,48 @@
{block name="description"}{$strDescription??''}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}" />
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" />
<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[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.og_novel_category ?? ''}">
<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: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}/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-1">
<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:latest_chapter_name" content="{$arrLatestChapter.name ?? ''}">
content="https://{$DomainModel->d_domain}{$strPcPath}/xiaoshuo/{$arrNovel.n_name_pinyin}-{$arrNovel.n_id}/zhang-1">
<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="{$arrLatestChapter.c_name ?? ''}">
<meta property="og:novel:latest_chapter_url"
content="https://{$DomainModel->d_domain}{$strPcPath}/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-{$arrLatestChapter.c_sort_num ?? 1}">
content="https://{$DomainModel->d_domain}{$strPcPath}/xiaoshuo/{$arrNovel.n_name_pinyin}-{$arrNovel.n_id}/zhang-{$arrLatestChapter.c_sort_num ?? 1}">
<!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['og_novel_book_name'] ?? '未知小说'}" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
<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://{$DomainModel->d_domain}/{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}',
"@type": "book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"description": "{$arrNovel['og_description'] ??'暂无简介'}",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"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 ??''}",
"url": '{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": {
@@ -59,7 +59,7 @@
{/block}
{block name="head-css"}
<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[n_name_pinyin]" /}'>
{/block}
{block name="logo-html"}
<h2>
@@ -79,15 +79,15 @@
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<a href="{$strPcPath}/shuku/all/{$arrNovel.category_pinyin}/all/page1" itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_category}</span>
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href="{$strPcPath}/shuku/all/{$arrNovel.n_category_pinyin}/all/page1" itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['og_novel_book_name']}</span>
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
@@ -97,11 +97,11 @@
<div class="info">
<div class="info_box">
<div class="info_L">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'
title="{$arrNovel['og_novel_book_name']}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'
title="{$arrNovel['n_name']}" class="book_cov">
<img src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel->og_novel_book_name ?? ''}封面" class="lazyload_book_cover lazyload-img">
<i class="serial">{$arrNovel.og_novel_status ?? ''}</i>
alt="{$Novel->n_name ?? ''}封面" class="lazyload_book_cover lazyload-img">
<i class="serial">{$arrNovel.n_status ?? ''}</i>
</a>
<div class="btn">
<a href="javascript:;" class="sc" onclick="addBookshelfFun()">
@@ -114,19 +114,19 @@
<div class="info_C book_inf">
<div class="c01">
<h3><a
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>{$arrNovel['og_novel_book_name']}</a>
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'>{$arrNovel['n_name']}</a>
</h3>
<!-- <span id="mod_book_star">0分</span> -->
</div>
<p class="c02">
<span class="zz">作者:{$arrNovel.og_novel_author}</span>
<span>创建日期:{$arrNovel.og_novel_update_time}</span>
<span class="zz">作者:{$arrNovel.n_author}</span>
<span>创建日期:{$arrNovel.n_update_time}</span>
</p>
<div class="c03">
<p class="jianjie">简介</p>
<div class="c03_box">
<p class="jj_con" id="book_desc">
{$arrNovel.og_description}</p>
{$arrNovel.n_description}</p>
<span class="zk_btn" style="">展开<s></s></span>
<span class="sq_btn" style="display: none;">收起<s></s></span>
</div>
@@ -142,8 +142,8 @@
</div>
<div class="c04">
{if !empty($arrChapter)}
<a href="{$strPcPath}/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/zhang-1" class="read">立即阅读</a>
<a href="{$strPcPath}/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}/mulu/zheng" class="mulu">目录</a>
<a href="{$strPcPath}/xiaoshuo/{$arrNovel.n_name_pinyin}-{$arrNovel.n_id}/zhang-1" class="read">立即阅读</a>
<a href="{$strPcPath}/xiaoshuo/{$arrNovel.n_name_pinyin}-{$arrNovel.n_id}/mulu/zheng" class="mulu">目录</a>
{/if}
</div>
<!-- <div class="c05">
@@ -159,9 +159,9 @@
<div class="inf02">
<h4>小说信息</h4>
<p>类别:
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<a href='{$strPcPath}/shuku/all/{$arrNovel.category_pinyin}/all/page1' title="{$arrNovel.og_novel_category}">
{$arrNovel.og_novel_category}
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{$strPcPath}/shuku/all/{$arrNovel.n_category_pinyin}/all/page1' title="{$arrNovel.n_category}">
{$arrNovel.n_category}
</a>
</p>
<!-- <p>总字数54.20万+</p> -->
@@ -184,8 +184,8 @@
<div class="zj_con">
{volist name="arrChapter" id="Chapter" key="key"}
<p>
<a href="{$strPcPath}/xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$Chapter.n_id}/zhang-{$Chapter.c_sort_num}"
class="zj">{$Chapter.name}</a>
<a href="{$strPcPath}/xiaoshuo/{$arrNovel.n_name_pinyin}-{$Chapter.n_id}/zhang-{$Chapter.c_sort_num}"
class="zj">{$Chapter.c_name}</a>
<span class="time">{$Chapter.created_at ?? '1天前'}</span>
<!-- <span class="time">3天前</span>-->
</p>
@@ -199,7 +199,7 @@
<div class="pl_con">
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
<!-- n_forge_id -->
<a href='{$strPcPath}/kan-xiaoshuo/{$arrNovel.og_novel_pin_yin}-{$arrNovel.n_id}-{$ForgeNovel.n_forge_id}'
<a href='{$strPcPath}/kan-xiaoshuo/{$arrNovel.n_name_pinyin}-{$arrNovel.n_id}-{$ForgeNovel.n_forge_id}'
class="red">{$ForgeNovel.n_forge_title}</a>
{/volist}
@@ -213,23 +213,23 @@
{volist name="arrRelateveNovel" id="Novel" key="key"}
<li>
<h3>
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[og_novel_pin_yin]" /}'
title="{$Novel['og_novel_book_name'] ?? ''}">
{$Novel['og_novel_book_name'] ?? ''}
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[n_name_pinyin]" /}'
title="{$Novel['n_name'] ?? ''}">
{$Novel['n_name'] ?? ''}
</a>
</h3>
<div>
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[og_novel_pin_yin]" /}'
title="$Novel['og_novel_book_name'] ?? ''}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[n_name_pinyin]" /}'
title="$Novel['n_name'] ?? ''}" class="book_cov">
<img src="/template/kuangyu/home/bai_web/images/default.png"
data-src="{$Novel['n_cover_path'] ?? ''}" class="lazyload_book_cover lazyload-img"
alt="{$Novel['og_novel_book_name'] ?? ''}">
alt="{$Novel['n_name'] ?? ''}">
</a>
<div class="book_inf">
<span class="aut">{$Novel['og_novel_author'] ?? ''}</span>
<span class="tag"><a href="/">{$Novel['og_novel_category'] ?? ''}</a></span>
<span class="aut">{$Novel['n_author'] ?? ''}</span>
<span class="tag"><a href="/">{$Novel['n_category'] ?? ''}</a></span>
<p class="int">
{$Novel['og_description'] ?? ''}</p>
{$Novel['n_description'] ?? ''}</p>
</div>
</div>
</li>
@@ -244,11 +244,11 @@
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id' : `{$arrNovel['n_id']}`,
'og_novel_pin_yin' : `{$arrNovel['og_novel_pin_yin']}`,
'n_name_pinyin' : `{$arrNovel['n_name_pinyin']}`,
'n_cover_path' : `{$arrNovel['n_cover_path']}`,
'og_novel_book_name' : `{$arrNovel['og_novel_book_name']}`,
'og_novel_author' : `{$arrNovel['og_novel_author']}`,
'og_novel_status' : `{$arrNovel['og_novel_status']}`,
'n_name' : `{$arrNovel['n_name']}`,
'n_author' : `{$arrNovel['n_author']}`,
'n_status' : `{$arrNovel['n_status']}`,
'c_sort_num' : 1,
'c_name' : `第一章`,
};

View File

@@ -4,26 +4,26 @@
{block name="description"}{$strDescription??''}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}" />
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" />
<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[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.og_novel_category ?? ''}">
<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: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[og_novel_pin_yin]" c_sort="$intFirstChapterSort"/}'>
<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:latest_chapter_name" content="{$arrLatestChapter.name}">
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$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="{$arrLatestChapter.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[og_novel_pin_yin]" /}'>
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['og_novel_book_name'] ?? '未知小说'}" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
@@ -31,28 +31,28 @@
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="$intPage"/}',
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="$intPage"/}',
"inLanguage": "zh-CN",
"genre": "{$arrNovel['og_novel_category'] ?? '未知分类'}",
"genre": "{$arrNovel['n_category'] ?? '未知分类'}",
"hasPart": {
"@type": "WebPage",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}章节目录 第{$intPage}页",
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="$intPage"/}'
"name": "{$arrNovel['n_name'] ?? '未知小说'}章节目录 第{$intPage}页",
"url": 'https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="$intPage"/}'
}
}
</script>
{block name="head-css"}
<link rel="canonical" href='https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="$intPage"/}'>
<link rel="canonical" href='https://{$DomainModel->d_domain}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="$intPage"/}'>
{/block}
{block name="head-js"}{/block}
@@ -75,15 +75,15 @@
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<a href='{$strPcPath}{site:nflurl gender="all" category="$arrNovel[category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_category}</span>
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{$strPcPath}{site:nflurl gender="all" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['og_novel_book_name']}</span>
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}' itemprop="item">
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
@@ -100,11 +100,11 @@
<div class="top">
{$arrGRM[0]|raw}
<h1>
<a href='{$strPcPath}{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 href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}' >
{$arrNovel['n_name']}章节目录 - {$arrNovel['n_author']} - {$DomainModel->d_name} 第{$intPage}页
</a>
</h1>
<p>作者:{$arrNovel.og_novel_author}</p>
<p>作者:{$arrNovel.n_author}</p>
</div>
<div class="fenlei">
@@ -119,7 +119,7 @@
<li>
{$arrGRM[$key]|raw}
<h2>
<a href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$Chapter[c_sort_num]" c_page="0"/}' >{$Chapter.name}</a>
<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>
</h2>
</li>
{/foreach}

View File

@@ -12,30 +12,30 @@
<link rel="stylesheet" href="/public/layer/need/layer.css" type="text/css">
{block name="head-css"}
<link rel="canonical"
href='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]"/}'>
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}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" />
<meta property="og:url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}' />
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.og_novel_category ?? ''}">
<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: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[og_novel_pin_yin]" c_sort="$$arrChapter[c_sort_num]"/}'>
<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:latest_chapter_name" content="{$arrChapter.name}">
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[og_novel_pin_yin]" /}'>
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['og_novel_book_name']??'未知小说'} {$arrChapter.name} - {$DomainModel->d_name}" />
<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 ?? ''}" />
<!-- 结构化数据 -->
@@ -43,10 +43,10 @@
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
@@ -54,14 +54,14 @@
"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[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}',
"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.og_novel_category ??''}",
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"genre": "{$arrNovel.n_category ??''}",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"hasPart": {
"@type": "CreativeWork",
"name": "{$arrChapter.name ?? ''}",
"url":'https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}',
"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": "{$strDescription}"
}
}
@@ -159,26 +159,26 @@
<div class="crumbs-nav">
<a href="{$strPcPath}/">首页</a>
<em class="iconfont"></em>
{if $arrNovel.category_sex && $arrNovel.category_sex == 'man'}
{if $arrNovel.n_category_sex_en && $arrNovel.n_category_sex_en == 'man'}
{$arrGRM[15]|raw}
<a href='{$strPcPath}{site:nflurl gender="$strNanUrlTemp" category="all" status="all" page="1"/}'>男生</a>
<em class="iconfont"></em>
{$arrGRM[14]|raw}
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a
href='{$strPcPath}{site:nflurl gender="$strNanUrlTemp" category="$arrNovel[category_pinyin]" status="all" page="1"/}'>{$arrNovel.og_novel_category}</a>
href='{$strPcPath}{site:nflurl gender="$strNanUrlTemp" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}'>{$arrNovel.n_category}</a>
{else}
<a href='{$strPcPath}{site:nflurl gender="$strNvUrlTemp" category="all" status="all" page="1"/}'>女生</a>
<em class="iconfont"></em>
{$arrGRM[13]|raw}
<a href='{$strPcPath}{site:nflurl gender="$strNvUrlTemp" category="$arrNovel[category_pinyin]" status="all" page="1"/}'>{$arrNovel.og_novel_category}</a>
<a href='{$strPcPath}{site:nflurl gender="$strNvUrlTemp" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}'>{$arrNovel.n_category}</a>
{/if}
<em class="iconfont"></em>
{$arrGRM[12]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>{$arrNovel.og_novel_book_name}</a>
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'>{$arrNovel.n_name}</a>
</div>
<div class="read-main-wrap font-family01" style="font-size:18px" id="j_readMainWrap">
<div id="j_chapterBox">
@@ -188,19 +188,19 @@
<div class="main-text-wrap">
<div class="text-head">
<h1 class="j_chapterName">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
{$arrNovel.og_novel_book_name}
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'>
{$arrNovel.n_name}
</a>
<a href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}'
>{$arrChapter.name}</a>
<a href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}'
>{$arrChapter.c_name}</a>
</h1>
<div class="text-info cf">
<div class="info fl">
{$arrGRM[11]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
<em class="iconfont"></em> {$arrNovel.og_novel_book_name}</a>
<a href="javascript:"> <em class="iconfont"></em> {$arrNovel.og_novel_author}</a>
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'>
<em class="iconfont"></em> {$arrNovel.n_name}</a>
<a href="javascript:"> <em class="iconfont"></em> {$arrNovel.n_author}</a>
<i><em class="iconfont"></em><span class="j_chapterWordCut">2000</span></i>
<i><em class="iconfont"></em><span class="j_updateTime">{$arrChapter.created_at ??
''}</span></i>
@@ -208,8 +208,8 @@
</div>
</div>
<div class="read-content j_readContent">
{if $arrChapter && $arrChapter.content}
<script>document.writeln(qsbs.bb('{$arrChapter.content}'));</script>
{if $arrChapter && $arrChapter.c_content}
<script>document.writeln(qsbs.bb('{$arrChapter.c_content}'));</script>
{/if}
</div>
</div>
@@ -227,13 +227,13 @@
{else}
{$arrGRM[10]|raw}
<a id="j_chapterPrev"
href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrPreChapter[c_sort_num]" c_page="0"/}'>上一章</a>
href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrPreChapter[c_sort_num]" c_page="0"/}'>上一章</a>
{/if}
<span>|</span>
{if $arrNextChapter && $arrNextChapter.c_sort_num}
{$arrGRM[9]|raw}
<a id="j_chapterNext"
href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrNextChapter[c_sort_num]" c_page="0"/}'>下一章</a>
href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrNextChapter[c_sort_num]" c_page="0"/}'>下一章</a>
{/if}
</div>
</div>
@@ -243,7 +243,7 @@
<dl>
<dd id="j_navCatalogBtn">
{$arrGRM[8]|raw}
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="1"/}'>
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="1"/}'>
<i><em class="iconfont"></em><span>目录</span></i>
</a>
</dd>
@@ -260,7 +260,7 @@
</dd>
<dd>
{$arrGRM[6]|raw}
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'>
<i><em class="iconfont"></em><span>详情</span></i>
</a>
</dd>
@@ -375,13 +375,13 @@
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id' : `{$arrNovel['n_id']}`,
'og_novel_pin_yin' : `{$arrNovel['og_novel_pin_yin']}`,
'n_name_pinyin' : `{$arrNovel['n_name_pinyin']}`,
'n_cover_path' : `{$arrNovel['n_cover_path']}`,
'og_novel_book_name' : `{$arrNovel['og_novel_book_name']}`,
'og_novel_author' : `{$arrNovel['og_novel_author']}`,
'og_novel_status' : `{$arrNovel['og_novel_status']}`,
'n_name' : `{$arrNovel['n_name']}`,
'n_author' : `{$arrNovel['n_author']}`,
'n_status' : `{$arrNovel['n_status']}`,
'c_sort_num' : `{$arrChapter.c_sort_num}`,
'c_name' : `{$arrChapter.name}`,
'c_name' : `{$arrChapter.c_name}`,
};
</script>
@@ -390,8 +390,8 @@
var book = {};
book.Info = {
"Id": `{$arrNovel['n_id']}`,
"Name": `{$arrNovel['og_novel_book_name']}`,
"authorName": `{$arrNovel['og_novel_author']}`
"Name": `{$arrNovel['n_name']}`,
"authorName": `{$arrNovel['n_author']}`
};
book.chapter = {
//页面进入加载的章节id
@@ -405,7 +405,7 @@
//下一章id
nextId: '{$arrNextChapter.c_sort_num ?? 1}'
};
book.chapterUrl = '{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}' ;
book.chapterUrl = '{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$arrChapter[c_sort_num]" c_page="0"/}' ;
book.nextChapterVip = 0;
</script>
<script type="text/javascript" src="/template/kuangyu/reader/web/js/global.js"></script>

View File

@@ -4,26 +4,26 @@
{block name="description"}{$strDescription??''}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['og_novel_book_name']??'未知小说'}" />
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content="{$strDescription??'暂无简介'}" />
<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[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.og_novel_category ?? ''}">
<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: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[og_novel_pin_yin]" c_sort="$intFirstChapterSort"/}'>
<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:latest_chapter_name" content="{$arrLatestChapter.name ?? ''}">
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$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="{$arrLatestChapter.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[og_novel_pin_yin]" /}'>
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['og_novel_book_name'] ?? '未知小说'}" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
@@ -31,21 +31,21 @@
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['og_novel_book_name'] ?? '未知小说'}",
"description": "{$arrNovel['og_description'] ??'暂无简介'}",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['og_novel_author'] ??'佚名'}"
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"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[og_novel_pin_yin]" /}',
"genre": "{$arrNovel.og_novel_category ??''}",
"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": {
@@ -60,7 +60,7 @@
{/block}
{block name="head-css"}
<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[n_name_pinyin]" /}'>
{/block}
{block name="logo-html"}
<h2>
@@ -70,7 +70,7 @@
</h2>
{/block}
{block name="main"}
<?php $arrNovel['category_pinyin'] ?? $arrNovel['category_pinyin'] = 'all'?>
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<div class="content">
<nav class="breadcrumb" aria-label="breadcrumb">
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
@@ -81,33 +81,33 @@
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{$strPcPath}{site:nflurl gender="all" category="$arrNovel[category_pinyin]" status="all" page="1"/}'
<a href='{$strPcPath}{site:nflurl gender="all" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}'
itemprop="item">
<span itemprop="name">{$arrNovel.og_novel_category}</span>
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'
itemprop="item">
<span itemprop="name">{$arrNovel['og_novel_book_name']}</span>
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
</ol>
<h1 class="site-description ">{$arrNovel['og_novel_book_name']}最新章节 - {$arrNovel['og_novel_author']} -
<h1 class="site-description ">{$arrNovel['n_name']}最新章节 - {$arrNovel['n_author']} -
{$DomainModel->d_name}</h1>
</nav>
<div class="info">
<div class="info_box">
<div class="info_L">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'
title="{$arrNovel['og_novel_book_name']}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'
title="{$arrNovel['n_name']}" class="book_cov">
<img src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$arrNovel['og_novel_book_name'] ?? ''}小说封面 - {$arrNovel.og_novel_author}最新章节"
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节"
class="lazyload_book_cover lazyload-img">
<i class="serial">{$arrNovel.og_novel_status ?? ''}</i>
<i class="serial">{$arrNovel.n_status ?? ''}</i>
</a>
<div class="btn">
<a href="javascript:;" class="sc" onclick="addBookshelfFun()">
@@ -120,19 +120,19 @@
<div class="info_C book_inf">
<div class="c01">
<h2><a
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" /}'>{$arrNovel['og_novel_book_name']}</a>
href='{$strPcPath}{site:nurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" /}'>{$arrNovel['n_name']}</a>
</h2>
<!-- <span id="mod_book_star">0分</span> -->
</div>
<p class="c02">
<span class="zz">作者:{$arrNovel.og_novel_author}</span>
<span>创建日期:{$arrNovel.og_novel_update_time}</span>
<span class="zz">作者:{$arrNovel.n_author}</span>
<span>创建日期:{$arrNovel.n_update_time}</span>
</p>
<div class="c03">
<p class="jianjie">简介</p>
<div class="c03_box">
<p class="jj_con" id="book_desc">
{$arrNovel.og_description ?? ''}</p>
{$arrNovel.n_description ?? ''}</p>
<span class="zk_btn">展开<s></s></span>
<span class="sq_btn" style="display: none;">收起<s></s></span>
</div>
@@ -148,9 +148,9 @@
</div>
<div class="c04">
{if !empty($arrChapter)}
<a href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$intFirstChapterSort"/}'
<a href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" c_sort="$intFirstChapterSort"/}'
class="read">立即阅读</a>
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" order="zheng" page="1"/}'
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel[n_id]" n_py="$arrNovel[n_name_pinyin]" order="zheng" page="1"/}'
class="mulu">目录</a>
{/if}
</div>
@@ -167,9 +167,9 @@
<div class="inf02">
<h4>小说信息</h4>
<p>类别:
<a href='{$strPcPath}{site:nflurl gender="all" category="$arrNovel[category_pinyin]" status="all" page="1"/}'
title="{$arrNovel.og_novel_category}">
{$arrNovel.og_novel_category}
<a href='{$strPcPath}{site:nflurl gender="all" category="$arrNovel[n_category_pinyin]" status="all" page="1"/}'
title="{$arrNovel.n_category}">
{$arrNovel.n_category}
</a>
</p>
<!-- <p>总字数54.20万+</p> -->
@@ -193,8 +193,8 @@
{volist name="arrChapter" id="Chapter" key="key"}
<p>
{$arrGRM[$key]|raw}
<a href='{$strPcPath}{site:cpurl n_id="$arrNovel[n_id]" n_py="$arrNovel[og_novel_pin_yin]" c_sort="$Chapter[c_sort_num]" c_page="0"/}'
title="{$arrNovel.og_novel_book_name}-{$Chapter.name}" class="zj">{$Chapter.name}</a>
<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"/}'
title="{$arrNovel.n_name}-{$Chapter.c_name}" class="zj">{$Chapter.c_name}</a>
<span class="time">{$Chapter.created_at ?? '1天前'}</span>
<!-- <span class="time">3天前</span>-->
</p>
@@ -208,7 +208,7 @@
<div class="pl_con">
{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[og_novel_pin_yin]" n_fid="$ForgeNovel[n_forge_id]"/}'
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}
@@ -223,23 +223,23 @@
<li>
<h3>
{$arrGRM[$key+10]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[og_novel_pin_yin]" /}'
title="{$Novel['og_novel_book_name'] ?? ''}">
{$Novel['og_novel_book_name'] ?? ''}
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[n_name_pinyin]" /}'
title="{$Novel['n_name'] ?? ''}">
{$Novel['n_name'] ?? ''}
</a>
</h3>
<div>
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[og_novel_pin_yin]" /}'
title="$Novel['og_novel_book_name'] ?? ''}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[n_name_pinyin]" /}'
title="$Novel['n_name'] ?? ''}" class="book_cov">
<img src="/template/kuangyu/home/bai_web/images/default.png"
data-src="{$Novel['n_cover_path'] ?? ''}" class="lazyload_book_cover lazyload-img"
alt="{$Novel['og_novel_book_name'] ?? ''}">
alt="{$Novel['n_name'] ?? ''}">
</a>
<div class="book_inf">
<span class="aut">{$Novel['og_novel_author'] ?? ''}</span>
<span class="tag"><a href="/">{$Novel['og_novel_category'] ?? ''}</a></span>
<span class="aut">{$Novel['n_author'] ?? ''}</span>
<span class="tag"><a href="/">{$Novel['n_category'] ?? ''}</a></span>
<p class="int">
{$Novel['og_description'] ?? ''}</p>
{$Novel['n_description'] ?? ''}</p>
</div>
</div>
</li>
@@ -253,12 +253,12 @@
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id': `{$arrNovel['n_id']}`,
'og_novel_pin_yin': `{$arrNovel['og_novel_pin_yin']}`,
'n_name_pinyin': `{$arrNovel['n_name_pinyin']}`,
'n_cover_path': `{$arrNovel['n_cover_path']}`,
'og_novel_book_name': `{$arrNovel['og_novel_book_name']}`,
'og_novel_author': `{$arrNovel['og_novel_author']}`,
'og_novel_status': `{$arrNovel['og_novel_status']}`,
'og_novel_update_time': `{$arrNovel['og_novel_update_time']}`,
'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': `第一章`,
};

View File

@@ -21,7 +21,7 @@
"url": "https://{$DomainModel->d_name}{site:souurl key='$strSearchKeywords' p='1'/}",
"name": "{$DomainModel->d_name} - {$DomainModel->d_name}搜索 第{$intPage}页",
"description": "搜索‘{$strSearchKeywords}’结果第{$intPage}页,提供{$strSearchKeywords}创作的小说免费阅读。",
"datePublished": "{$arrNovel['og_novel_update_time'] ?? time()}",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"mainEntity": {
"@type": "Book",
"name": "{$DomainModel->d_name}",

View File

@@ -62,13 +62,13 @@
{if $key == 1}
<h3>
{$arrGRM[1]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'
title="{$Novel.og_novel_book_name ?? ''}"
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
title="{$Novel.n_name ?? ''}"
class="zdz">
{$Novel.og_novel_book_name ?? ''}
{$Novel.n_name ?? ''}
</a>
</h3>
<p class="int"> {$Novel.og_description ?? ''}</p>
<p class="int"> {$Novel.n_description ?? ''}</p>
{/if}
{/volist}
</div>

View File

@@ -1,14 +1,14 @@
<li>
{$arrGRM[$key+[start]]|raw}
<h3>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel->og_novel_book_name ?? ''}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel->n_name ?? ''}" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel->n_cover_path ?? ''}"
alt="{$Novel->og_novel_book_name ?? ''}- {$Novel.og_novel_category ?? ''}最新章节在线免费阅读">
alt="{$Novel->n_name ?? ''}- {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</h3>
<div class="book_inf">
<h3><a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel->og_novel_book_name ?? ''}" >{$Novel->og_novel_book_name ?? ''}</a></h3>
<span class="aut">{$Novel->og_novel_author ?? ''}</span>
<h3><a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel->n_name ?? ''}" >{$Novel->n_name ?? ''}</a></h3>
<span class="aut">{$Novel->n_author ?? ''}</span>
</div>
</li>

View File

@@ -1,14 +1,14 @@
<div class="bookLink">
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' >
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' >
<div class="bookImg">
<img class="lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读">
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</div>
<div>
<h2>{$Novel.og_novel_book_name ?? ''}</h2>
<span>{$Novel->og_novel_author ?? ''}</span>
<p>{$Novel.og_description ?? ''}</p>
<h2>{$Novel.n_name ?? ''}</h2>
<span>{$Novel->n_author ?? ''}</span>
<p>{$Novel.n_description ?? ''}</p>
</div>
</a>
</div>

View File

@@ -1,7 +1,7 @@
<div class="bookLink oneLine">
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' >
<em>「{$Novel->og_novel_category ?? ''}」</em>
{$Novel.og_novel_book_name ?? ''}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' >
<em>「{$Novel->n_category ?? ''}」</em>
{$Novel.n_name ?? ''}
</a>
</div>

View File

@@ -1,19 +1,19 @@
<li>
<?php $Novel['category_pinyin'] ?? $Novel['category_pinyin'] = 'all'?>
<?php $Novel['n_category_pinyin'] ?? $Novel['n_category_pinyin'] = 'all'?>
<h3>
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel->og_novel_book_name ?? ''}" >
{$Novel->og_novel_book_name ?? ''}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel->n_name ?? ''}" >
{$Novel->n_name ?? ''}
</a>
</h3>
<div class="book_inf">
<span class="aut">{$Novel->og_novel_author ?? ''}</span>
<span class="tag"><a href="{$strPcPath}/shuku/all/{$Novel->category_pinyin}/all/page1" >{$Novel->og_novel_category ?? ''}</a></span>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel->og_novel_book_name ?? ''}" class="book_cov">
<span class="aut">{$Novel->n_author ?? ''}</span>
<span class="tag"><a href="{$strPcPath}/shuku/all/{$Novel->n_category_pinyin}/all/page1" >{$Novel->n_category ?? ''}</a></span>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel->n_name ?? ''}" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel->og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读">
alt="{$Novel->n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
<p class="int"> {$Novel->og_description ?? ''}</p>
<p class="int"> {$Novel->n_description ?? ''}</p>
</div>
</li>

View File

@@ -1,21 +1,21 @@
<div class="f3_L">
<h3>
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name ?? ''}" >
{$Novel.og_novel_book_name ?? ''}</a></h3>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name ?? ''}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name ?? ''}" >
{$Novel.n_name ?? ''}</a></h3>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name ?? ''}" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读">
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
<div class="book_inf">
<div class="book_inf01">
<span class="aut">作者:{$Novel->og_novel_author ?? ''}</span>
<span class="fr">分类:<a href="/lists/19.html" >{$Novel->og_novel_category ?? ''}</a></span>
<span class="aut">作者:{$Novel->n_author ?? ''}</span>
<span class="fr">分类:<a href="/lists/19.html" >{$Novel->n_category ?? ''}</a></span>
<!-- <span>字数24.20万字+</span> -->
<span class="fr">进度:{$Novel->og_novel_status ?? ''}</span>
<span class="fr">进度:{$Novel->n_status ?? ''}</span>
<span>总点击:{$Novel->og_novel_click ?? 0}</span>
</div>
<p class="int"> {$Novel->og_description ?? ''}</p>
<p class="int"> {$Novel->n_description ?? ''}</p>
</div>
</div>

View File

@@ -2,19 +2,19 @@
<em class="red_bg">{$key+=1}</em>
<h3 class="name">
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name ?? ''}" >
{$Novel.og_novel_book_name ?? ''}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name ?? ''}" >
{$Novel.n_name ?? ''}
</a>
</h3>
<div class="open">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name ?? ''}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name ?? ''}" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.og_novel_book_name ?? ''}">
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.n_name ?? ''}">
</a>
<div class="book_inf">
<span class="aut">作者:{$Novel->og_novel_author ?? ''}</span>
<span>类别:<a href="/lists/19.html" >{$Novel->og_novel_category ?? ''}</a></span>
<p class="int"> {$Novel->og_description ?? ''}</p>
<span class="aut">作者:{$Novel->n_author ?? ''}</span>
<span>类别:<a href="/lists/19.html" >{$Novel->n_category ?? ''}</a></span>
<p class="int"> {$Novel->n_description ?? ''}</p>
</div>
</div>
</li>

View File

@@ -2,17 +2,17 @@
<em class="red_bg">1</em>
<h3 class="name">
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name ?? ''}" >{$Novel.og_novel_book_name ?? ''}</a>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name ?? ''}" >{$Novel.n_name ?? ''}</a>
</h3>
<div class="open">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name ?? ''}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name ?? ''}" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读">
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
<div class="book_inf">
<span class="aut">作者:{$Novel.og_novel_author ?? ''}</span>
<span>类别:<a href="/lists/19.html" >{$Novel.og_novel_category ?? ''}</a></span>
<p class="int"> {$Novel.og_description ?? ''}</p>
<span class="aut">作者:{$Novel.n_author ?? ''}</span>
<span>类别:<a href="/lists/19.html" >{$Novel.n_category ?? ''}</a></span>
<p class="int"> {$Novel.n_description ?? ''}</p>
</div>
</div>
</li>

View File

@@ -1,20 +1,20 @@
<li>
<ul>
<li class="lb">
<?php $Novel['category_pinyin'] ?? $Novel['category_pinyin'] = 'all'?>
<a href='{$strPcPath}{site:nflurl gender="all" category="$Novel[category_pinyin]" status="all" page="1"/}' >{$Novel->og_novel_category ?? ''}</a></li>
<?php $Novel['n_category_pinyin'] ?? $Novel['n_category_pinyin'] = 'all'?>
<a href='{$strPcPath}{site:nflurl gender="all" category="$Novel[n_category_pinyin]" status="all" page="1"/}' >{$Novel->n_category ?? ''}</a></li>
<li class="sm">
<h3>
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name ?? ''}" >
{$Novel.og_novel_book_name ?? ''}</a>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name ?? ''}" >
{$Novel.n_name ?? ''}</a>
</h3>
</li>
<li class="gx">
<a href='{$strPcPath}{site:lcpurl n_id="$Novel[n_id]" n_py="$Novel[og_novel_pin_yin]" /}'
title="{$Novel->og_novel_latest_chapter_name ?? 'null'}"
>{$Novel->og_novel_latest_chapter_name ?? 'null'}</a></li>
<li class="zz"><a href="{$strPcPath}{site:souurl key='$Novel[og_novel_author]' p='1'/}">{$Novel->og_novel_author ?? 'null'}</a></li>
<li class="sj">{$Novel->og_novel_update_time ?? 'null'}</li>
<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></li>
<li class="zz"><a href="{$strPcPath}{site:souurl key='$Novel[n_author]' p='1'/}">{$Novel->n_author ?? 'null'}</a></li>
<li class="sj">{$Novel->n_update_time ?? 'null'}</li>
</ul>
</li>

View File

@@ -1,15 +1,15 @@
<li>
{$arrGRM[$key+[start]]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id ?? 1" n_py="$Novel->og_novel_pin_yin"/}' class="book_cov" title="{$Novel->og_novel_book_name ?? ''}">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id ?? 1" n_py="$Novel->n_name_pinyin"/}' class="book_cov" title="{$Novel->n_name ?? ''}">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel->og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读">
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}" alt="{$Novel->n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
<div class="book_inf">
<h3><a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel->og_novel_book_name ?? ''}" >{$Novel->og_novel_book_name ?? ''}</a></h3>
<h3><a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel->n_name ?? ''}" >{$Novel->n_name ?? ''}</a></h3>
<p>
<span>作者:<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel->og_novel_author ?? ''}">{$Novel->og_novel_author ?? ''}</a></span>
<span>分类:<a href="/lists/4.html" title="{$Novel->og_novel_category ?? ''}">{$Novel->og_novel_category ?? ''}</a></span>
<span>状态:{$Novel->og_novel_status ?? ''}</span>
<span>作者:<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel->n_author ?? ''}">{$Novel->n_author ?? ''}</a></span>
<span>分类:<a href="/lists/4.html" title="{$Novel->n_category ?? ''}">{$Novel->n_category ?? ''}</a></span>
<span>状态:{$Novel->n_status ?? ''}</span>
<!-- <span>总字数43.80万字+</span> -->
</p>
<p class="tags">
@@ -18,10 +18,10 @@
</p>
<p><b>最近更新:</b><a href="{$strPcPath}/chapter/1-1-1.html" title="219 桃花酿" >219 桃花酿</a>
</p>
<p class="int"> {$Novel->og_description ?? ''}</p>
<p class="int"> {$Novel->n_description ?? ''}</p>
</div>
<div class="right">
<span>更新时间2025-03-20 23:59</span>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' class="read_btn btn">立即阅读</a>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' class="read_btn btn">立即阅读</a>
</div>
</li>

View File

@@ -1,10 +1,10 @@
<li>
{$arrGRM[$key+[start]]|raw}
<h3>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}' title="{$Novel.og_novel_book_name}" class="book_cov">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}' title="{$Novel.n_name}" class="book_cov">
<img class="lazyload_lb_nv lazyload-img"
src="/static/img/default.jpg" data-src="{$Novel->n_cover_path ?? '/static/img/default.jpg'}"
alt="{$Novel->og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读">
alt="{$Novel->n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</h3>
</li>

View File

@@ -1,5 +1,5 @@
<li data-desc=" {$Novel.og_description ?? ''}" class="on">
<li data-desc=" {$Novel.n_description ?? ''}" class="on">
<s class="arr"></s>
<s class="xh">{$key}</s>
<i>{$Novel.og_novel_book_name ?? ''}</i>
<i>{$Novel.n_name ?? ''}</i>
</li>

View File

@@ -76,19 +76,19 @@
{volist name="arrRecommendEndNovel" id="Novel" key="key"}
{$arrGRM[$key]|raw}
<li>
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[og_novel_pin_yin]"/}'
title="{$Novel.og_novel_book_name ?? ''}">
<img src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.og_novel_book_name ?? ''}">
<a href='{$strPcPath}{site:nurl n_id="$Novel[n_id]" n_py="$Novel[n_name_pinyin]"/}'
title="{$Novel.n_name ?? ''}">
<img src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.n_name ?? ''}">
</a>
<p>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'>
<span class="bookName other">{$Novel.og_novel_book_name ?? ''}</span>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<span class="bookName other">{$Novel.n_name ?? ''}</span>
</a>
<a href='{$strPcPath}{site:souurl key="$Novel[og_novel_author]" p="1"/}'>
<span class="bookStatus other">{$Novel->og_novel_author ?? ''}</span>
<a href='{$strPcPath}{site:souurl key="$Novel[n_author]" p="1"/}'>
<span class="bookStatus other">{$Novel->n_author ?? ''}</span>
</a>
<span class="bookBrief">
{$Novel.og_description ?? ''}</span>
{$Novel.n_description ?? ''}</span>
</p>
</li>
{/volist}
@@ -125,31 +125,31 @@
const DomBookshelfContainer = document.getElementById('bookshelf-ul');
DomBookshelfContainer.innerHTML = ''
arrBookshelf.forEach(book => {
let strNovelUrl = formatNovelUrl(book.og_novel_pin_yin, book.n_id)
let strNovelChapterUrl = formatNovelChapterUrl(book.og_novel_pin_yin, book.n_id, book.c_sort_num)
let strSearchUrl = formatSearchUrl(book.og_novel_author, 1)
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)
const bookElement = document.createElement('li');
if (isMobile()) {
bookElement.innerHTML = `
<a href="${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<a href="${strNovelUrl}" alt="${book.n_name}" title="${book.n_name}">
<img src="${book.n_cover_path}">
</a>
<p>
<a href="${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span>
<span class="bookName">${book.n_name}</span>
</a>
<span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em>
<b class="authorSt"><em>${book.n_status}</em>
<a href='${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em>
<em class="none">${book.n_author}</em>
</a>
</b>
<b class="authorSt chapterSt">
<a href="${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em>
</a>
<em class="time">${book.og_novel_update_time}</em></b>
<em class="time">${book.n_update_time}</em></b>
</span>
<a href="${strNovelChapterUrl}" >
<i class="goon">阅读</i>
@@ -158,24 +158,24 @@
`;
} else {
bookElement.innerHTML = `
<a href="${strPcPath}${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<a href="${strPcPath}${strNovelUrl}" alt="${book.n_name}" title="${book.n_name}">
<img src="${book.n_cover_path}">
</a>
<p>
<a href="${strPcPath}${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span>
<span class="bookName">${book.n_name}</span>
</a>
<span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em>
<b class="authorSt"><em>${book.n_status}</em>
<a href='${strPcPath}${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em>
<em class="none">${book.n_author}</em>
</a>
</b>
<b class="authorSt chapterSt">
<a href="${strPcPath}${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em>
</a>
<em class="time">${book.og_novel_update_time}</em></b>
<em class="time">${book.n_update_time}</em></b>
</span>
<a href="${strPcPath}${strNovelChapterUrl}" >
<i class="goon">阅读</i>
@@ -203,30 +203,30 @@
const DomBookshelfContainer = document.getElementById('history-ul');
DomBookshelfContainer.innerHTML = ''
arrBookshelf.forEach(book => {
let strNovelUrl = formatNovelUrl(book.og_novel_pin_yin, book.n_id)
let strNovelChapterUrl = formatNovelChapterUrl(book.og_novel_pin_yin, book.n_id, book.c_sort_num)
let strSearchUrl = formatSearchUrl(book.og_novel_author, 1)
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)
const bookElement = document.createElement('li');
if (isMobile()) {
bookElement.innerHTML = `
<a href="${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<a href="${strNovelUrl}" alt="${book.n_name}" title="${book.n_name}">
<img src="${book.n_cover_path}">
</a>
<p>
<a href="${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span>
<span class="bookName">${book.n_name}</span>
</a>
<span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em>
<b class="authorSt"><em>${book.n_status}</em>
<a href='${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em>
<em class="none">${book.n_author}</em>
</a>
</b>
<b class="authorSt chapterSt">
<a href="${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em>
</a>
<em class="time">${book.og_novel_update_time}</em></b>
<em class="time">${book.n_update_time}</em></b>
</span>
<a href="${strNovelChapterUrl}" >
<i class="goon">阅读</i>
@@ -235,24 +235,24 @@
`;
} else {
bookElement.innerHTML = `
<a href="${strPcPath}${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<a href="${strPcPath}${strNovelUrl}" alt="${book.n_name}" title="${book.n_name}">
<img src="${book.n_cover_path}">
</a>
<p>
<a href="${strPcPath}${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span>
<span class="bookName">${book.n_name}</span>
</a>
<span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em>
<b class="authorSt"><em>${book.n_status}</em>
<a href='${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em>
<em class="none">${book.n_author}</em>
</a>
</b>
<b class="authorSt chapterSt">
<a href="${strPcPath}${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em>
</a>
<em class="time">${book.og_novel_update_time}</em></b>
<em class="time">${book.n_update_time}</em></b>
</span>
<a href="${strPcPath}${strNovelChapterUrl}" >
<i class="goon">阅读</i>

View File

@@ -1,5 +1,5 @@
<li class="s2">
<h5 class="tit">
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'>我真是一条龙</a>
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>我真是一条龙</a>
</h5> <i class="num"><em>{$key+=1}</em></i>
</li>

View File

@@ -1,18 +1,18 @@
<li class="s1">
<img class="pic lazy lazyload-img" data-encrypted="false"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读" />
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读" />
{$arrGRM[$key+[start]]|raw}
<h3>
<a class="tit" href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'>{$Novel.og_novel_book_name ?? ''}</a>
<a class="tit" href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name ?? ''}</a>
</h3>
<p class="intro">{$Novel.og_description ?? ''}</p>
<p class="intro">{$Novel.n_description ?? ''}</p>
<p class="info">
<span>
<aria>作者:</aria>{$Novel.og_novel_author ?? ''}
<aria>作者:</aria>{$Novel.n_author ?? ''}
</span>
<em class="type">{$Novel->og_novel_category ?? ''}</em>
<em class='{eq name="$Novel->og_novel_status ?? null " value="连载中"}serial{else}finish {/eq}'>{$Novel->og_novel_status ?? ''}</em>
<em class="type">{$Novel->n_category ?? ''}</em>
<em class='{eq name="$Novel->n_status ?? null " value="连载中"}serial{else}finish {/eq}'>{$Novel->n_status ?? ''}</em>
</p>
</li>

View File

@@ -1,6 +1,6 @@
<li class="s2">
<h5 class="tit">
{$arrGRM[$key+[start]]|raw}
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'>{$Novel.og_novel_book_name ?? ''}</a>
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name ?? ''}</a>
</h5> <i class="num"><em>{$key}</em></i>
</li>

View File

@@ -1,12 +1,12 @@
<li>
{$arrGRM[$key+[start]]|raw}
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->og_novel_pin_yin"/}'>
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<img class="lazy lazyload-img" data-encrypted="false" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.og_novel_book_name ?? ''} - {$Novel.og_novel_category ?? ''}最新章节在线免费阅读" />
<h3>{$Novel.og_novel_book_name ?? ''}</h3>
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读" />
<h3>{$Novel.n_name ?? ''}</h3>
<em>
<aria>作者:</aria>{$Novel.og_novel_author ?? ''}
<aria>作者:</aria>{$Novel.n_author ?? ''}
</em>
</a>
</li>

View File

@@ -139,7 +139,7 @@ class CategoryModel extends MongoModel
* @param string $strZh
* @return string
*/
static public function getPinYinByZh(string $strZh)
static public function getPinYin(string $strZh)
{
$intKey = array_search($strZh, self::$arrCategory);
return self::$arrCategoryPinYin[$intKey];
@@ -151,7 +151,7 @@ class CategoryModel extends MongoModel
* @param string $strName
* @return string
*/
static public function checkSex(string $strName): string
static public function getSexEn(string $strName): string
{
return in_array($strName, self::$arrMan) ? 'man' : 'women';
}
@@ -162,7 +162,7 @@ class CategoryModel extends MongoModel
* @param string $strName
* @return string
*/
static public function checkSexZh(string $strName): string
static public function getSexZh(string $strName): string
{
return in_array($strName, self::$arrMan) ? '男生' : '女生';
}

View File

@@ -37,7 +37,7 @@ class ChapterModel extends MongoModel
'_id' => 0,
'c_source_id' => 0,
'c_site_code' => 0,
'c_site_uuid' => 0,
'c_source_uuid' => 0,
],
];
@@ -120,12 +120,18 @@ class ChapterModel extends MongoModel
$arrChapter = $this->getOne($arrFilter, $arrOptions);
if (!empty($arrChapter)) {
try {
applyToKeys($arrChapter, ['created_at', 'updated_at'], 'formatMongoDate');
} catch (\Exception $e) {
var_dump($arrChapter);
throw $e;
}
if ($boolReadContent) {
$arrChapter['content'] = StorageCore::getInstance()->read($arrChapter['c_content_path']);
$arrChapter['c_content'] = StorageCore::getInstance()->read($arrChapter['c_content_path']);
} else {
$arrChapter['content'] = '';
$arrChapter['c_content'] = '';
}
}
@@ -194,9 +200,9 @@ class ChapterModel extends MongoModel
foreach ($arrResult as &$arrItem) {
applyToKeys($arrItem, ['created_at', 'updated_at'], 'formatMongoDate');
$arrItem['content'] = '';
$arrItem['c_content'] = '';
if ($boolReadContent) {
$arrItem['content'] = StorageCore::getInstance()->read($arrItem['c_content_path']);
$arrItem['c_content'] = StorageCore::getInstance()->read($arrItem['c_content_path']);
}
}

View File

@@ -70,7 +70,7 @@ class NovelClicksModel extends MongoModel
],
[
'$inc' => ['nc_clicks' => 1],
'$set' => ['n_category' => $Novel->og_novel_category]
'$set' => ['n_category' => $Novel->n_category]
],
[
'upsert' => true

View File

@@ -44,7 +44,7 @@ class NovelModel extends MongoModel
'projection' => [
'_id' => 0,
'n_site_code' => 0,
'n_site_uuid' => 0,
'n_source_uuid' => 0,
'n_source_id' => 0,
],
];
@@ -63,7 +63,7 @@ class NovelModel extends MongoModel
try {
$arrConditions = array_map(function ($strKeyword) {
return ['og_novel_book_name' => ['$regex' => trim($strKeyword), '$options' => 'i']];
return ['n_name' => ['$regex' => trim($strKeyword), '$options' => 'i']];
}, $arrKeywords);
$UpdateResult = $this->getCol()->updateMany(
@@ -305,16 +305,16 @@ class NovelModel extends MongoModel
switch ($intType) {
case 1:
$arrCategory = array_values(CategoryModel::getManCategory());
$arrFilter['og_novel_category'] = ['$in' => $arrCategory];
$arrFilter['n_category'] = ['$in' => $arrCategory];
break;
case 2:
$arrCategory = array_values(CategoryModel::getWomenCategory());
$arrFilter['og_novel_category'] = ['$in' => $arrCategory];
$arrFilter['n_category'] = ['$in' => $arrCategory];
break;
}
if ($strStatus !== NULL) {
$arrFilter['og_novel_status'] = $strStatus;
$arrFilter['n_status'] = $strStatus;
}
return $this->findPaginatedWithCache($arrFilter, $intPage, $intLimit, $arrSort, $strKey, $intLifeTime,);
}
@@ -394,11 +394,11 @@ class NovelModel extends MongoModel
$arrFilter = [];
if (in_array($intType, [1, 2])) {
$arrFilter['og_novel_category'] = ['$in' => CategoryModel::getCategoryByType($intType)];
$arrFilter['n_category'] = ['$in' => CategoryModel::getCategoryByType($intType)];
}
if ($strStatus !== NULL) {
$arrFilter['og_novel_status'] = $strStatus;
$arrFilter['n_status'] = $strStatus;
}
return $this->findManyShuffledWithCache($arrFilter, $intCount, $arrSort, $strKey, $intLifeTime);
@@ -434,11 +434,11 @@ class NovelModel extends MongoModel
];
if ($strStatus !== NULL) {
$arrFilter['og_novel_status'] = $strStatus;
$arrFilter['n_status'] = $strStatus;
}
if (in_array($intType, [1, 2])) {
$arrFilter['og_novel_category'] = ['$in' => CategoryModel::getCategoryByType($intType)];
$arrFilter['n_category'] = ['$in' => CategoryModel::getCategoryByType($intType)];
}
$arrOptions = [

View File

@@ -16,9 +16,9 @@ class Scheduler
{
protected $intSlice = 8;
protected $intStartNSourceId = 7377;
protected $intStartNSourceId = 1;
protected $intEndNSourceId = 7377;
protected $intEndNSourceId = 100;
/**
* Undocumented variable
@@ -102,11 +102,9 @@ class Scheduler
$arrCover = [];
foreach ($arrNovelPageList as $NovelPage) {
$arrNovel = $NovelPage->getNovelInfo();
// $boolResult = $NovelPage->saveNovelInfo();
return;
// $arrNovel = $NovelPage->getNovelInfo();
$boolResult = $NovelPage->saveNovelInfo();
// return;
if ($boolResult == false) {
continue;
@@ -129,7 +127,7 @@ class Scheduler
}
$arrChapterList = $NovelPage->getChapters();
$this->fetchChapter($arrNovel['n_id'], $NovelPage->getData()['page'], $arrChapterList);
$this->fetchChapter($NovelPage->intNId, $NovelPage->getData()['page'], $arrChapterList);
}
if ($arrCover) {
@@ -284,7 +282,7 @@ class Scheduler
foreach ($arrData['filter'] as $intKey => $arrChapterFilter) {
$strUUId = sprintf('%s-chapter-%s-%s', $Site->getSiteCode(), $arrChapterFilter['c_source_id'], $arrChapterFilter['c_page']);
$arrChapter = $ChapterModel->findOne(['c_site_uuid' => $strUUId]);
$arrChapter = $ChapterModel->findOne(['c_source_uuid' => $strUUId]);
if (!empty($arrChapter) && !empty($arrChapter['content'])) {
unset($arrData['filter'][$intKey]);

View File

@@ -70,6 +70,22 @@ class ChapterPage extends BasePage
$this->arrChapterInfo['c_page_title'] = $this->getQueryList()->find('title')->text();
$this->arrChapterInfo['c_page_keywords'] = $this->getQueryList()->find('meta[name="keywords"]')->attr('content');
$this->arrChapterInfo['c_page_description'] = $this->getQueryList()->find('meta[name="description"]')->attr('content');
$strPattern = "/lastread\.set\((.*?)\);/";
if (preg_match($strPattern, $this->getContent(), $arrMatches)) {
$strMatch = $arrMatches[1]; // 提取括号内的内容
$arrData = array_map('trim', explode(",", $strMatch));
$arrData = array_map(function ($item) {
return trim($item, "'");
}, $arrData);
$this->arrChapterInfo['c_page_data'] = $arrData;
} else {
$this->arrChapterInfo['c_page_data'] = NULL;
}
}
return $this->arrChapterInfo;
@@ -83,85 +99,78 @@ class ChapterPage extends BasePage
protected $arrChapterInfo;
public function filterOtherFields(&$arrChapter)
/**
* Undocumented function
*
* @param integer $intNId
* @return boolean
*/
public function saveChapter(int $intNId): bool
{
$arrFields = [
'n_id',
'name',
'c_sort_num',
'c_page',
'c_source_id',
'c_site_code',
'c_site_uuid',
'c_content_path',
'created_at',
'updated_at',
$arrPageChapter = $this->getChapterInfo();
];
foreach ($arrChapter as $strKey => $strVal) {
if (!in_array($strKey, $arrFields)) {
unset($arrChapter[$strKey]);
if (
empty($arrPageChapter) ||
empty($arrPageChapter['c_page_title']) ||
empty($arrPageChapter['c_page_data']) ||
count($arrPageChapter['c_page_data']) < 5
) {
return false;
}
}
}
public function saveChapter(int $intNId): array
{
try {
$this->getChapterInfo();
$strUUId = $this->getSite()->getSiteUUId('chapter-' . $this->arrData['c_source_id'] . '-' . $this->arrData['c_page']);
$arrExisting = $this->getChapterModel()->findOne(['c_site_uuid' => $strUUId], $this->arrOptions);
if ($arrExisting) {
$arrChapter = [
'n_id' => $intNId,
'c_name' => $arrPageChapter['c_page_data'][3],
'c_sort_num' => $this->arrData['c_sort_num'],
'c_page' => $this->arrData['c_page'],
'c_source_id' => $this->arrData['c_source_id'],
'c_site_code' => $this->getSite()->getSiteCode(),
'c_source_uuid' => $strUUId,
];
$arrExisting = (array) $arrExisting;
$this->arrChapterInfo = array_merge($arrExisting, $this->getChapterInfo());
$arrExistsChapter = $this->getChapterModel()->findOne(['c_source_uuid' => $strUUId], $this->arrOptions);
$this->arrChapterInfo['updated_at'] = new \MongoDB\BSON\UTCDateTime();
if ($arrExistsChapter) {
$arrUpdate = $this->arrChapterInfo;
$arrExistsChapter = (array) $arrExistsChapter;
$this->filterOtherFields($arrUpdate);
$arrUpdate = [
'updated_at' => new \MongoDB\BSON\UTCDateTime(),
];
$this->getChapterModel()->updateOne(
['c_site_uuid' => $strUUId],
['c_source_uuid' => $strUUId],
['$set' => $arrUpdate],
);
$this->strCContentPath = $arrExistsChapter['c_content_path'];
} else {
$this->arrChapterInfo['n_id'] = $intNId;
$this->arrChapterInfo['name'] = $this->arrData['name'];
$this->arrChapterInfo['c_sort_num'] = $this->arrData['c_sort_num'];
$this->arrChapterInfo['c_page'] = $this->arrData['c_page'];
$this->arrChapterInfo['c_source_id'] = $this->arrData['c_source_id'];
$this->arrChapterInfo['c_site_code'] = $this->getSite()->getSiteCode();
$this->arrChapterInfo['c_site_uuid'] = $strUUId;
$this->arrChapterInfo['c_content_path'] = '/novel/' . ($intNId % 100) . '/' . $intNId . '/' . $this->arrChapterInfo['c_sort_num'] . '_' . $this->arrChapterInfo['c_page'] . '.txt';
$this->arrChapterInfo['created_at'] = new \MongoDB\BSON\UTCDateTime();
$arrInsert = $this->arrChapterInfo;
$arrInsertNovel = $arrChapter;
$this->filterOtherFields($arrInsert);
$this->getChapterModel()->insert($arrInsert);
$arrInsertNovel['c_content_path'] = '/novel/' . ($intNId % 100) . '/' . $intNId . '/' . $arrChapter['c_sort_num'] . '_' . $arrChapter['c_page'] . '.txt';
$arrInsertNovel['created_at'] = new \MongoDB\BSON\UTCDateTime();
try {
$this->getChapterModel()->insert($arrInsertNovel);
$this->updateNovelHaveChapter($intNId);
}
if (mb_strlen($this->strChapterContent) > 20) {
if (!StorageCore::getInstance()->has($this->arrChapterInfo['c_content_path'])) {
StorageCore::getInstance()->set($this->arrChapterInfo['c_content_path'], $this->strChapterContent);
}
}
return $this->arrChapterInfo;
$this->strCContentPath = $arrInsertNovel['c_content_path'];
} catch (\Exception $e) {
throw new \Exception("Upsert failed: " . $e->getMessage());
if ($e->getCode() === 11000) {
return $this->saveChapter($intNId);
} else {
throw $e;
}
}
}
StorageCore::getInstance()->put($this->strCContentPath, $this->strChapterContent);
return true;
}
public $strCContentPath;
/**
* Undocumented function
*
@@ -179,7 +188,7 @@ class ChapterPage extends BasePage
if (!empty($arrLasteChapter)) {
$arrUpdate['$set']['n_have_chapter'] = 1;
$arrUpdate['$set']['og_novel_latest_chapter_name'] = $arrLasteChapter['name'];
$arrUpdate['$set']['n_latest_chapter_name'] = $arrLasteChapter['c_name'];
$this->getMongoBase()->updateOne('novel', $arrFilter, $arrUpdate);
}
}

View File

@@ -7,7 +7,7 @@ namespace app\task\crawler\zw\page;
use app\model\CategoryModel;
use app\model\CountersModel;
use app\model\NovelModel;
use storage\StorageCore;
class NovelPage extends BasePage
{
@@ -71,22 +71,31 @@ class NovelPage extends BasePage
{
$strUUId = $this->getSite()->getSiteUUId($intNSourceId);
$arrExisting = $this->getNovelModel()->findOne(['n_site_uuid' => $strUUId], $this->arrOptions);
$arrExistsNovel = $this->getNovelModel()->findOne(['n_source_uuid' => $strUUId], $this->arrOptions);
if ($arrExisting) {
$arrNovelInfo = (array) $arrExisting;
if ($arrExistsNovel) {
$arrNovelInfo = (array) $arrExistsNovel;
} else {
$arrNovelInfo = [
'og_novel_book_name' => $strName,
'og_novel_pin_yin' => zhToPinYin($strName),
'n_id' => CountersModel::getInstance()->getNextSequence('novel'),
'n_name' => $strName,
'n_name_pinyin' => zhToPinYin($strName),
'n_site_code' => $this->getSite()->getSiteCode(),
'n_site_uuid' => $strUUId,
'n_source_uuid' => $strUUId,
'n_source_id' => $intNSourceId,
'n_level' => 1,
'n_have_chapter' => 0,
'n_id' => CountersModel::getInstance()->getNextSequence('novel'),
'created_at' => new \MongoDB\BSON\UTCDateTime(),
];
try {
$this->getNovelModel()->insert($arrNovelInfo);
} catch (\Exception $e) {
if ($e->getCode() === 11000) {
return $this->findOrCreateNovel($intNSourceId, $strName);
} else {
throw $e;
}
}
}
return $arrNovelInfo;
}
@@ -116,24 +125,8 @@ class NovelPage extends BasePage
});
$this->getReletedNovel();
$this->arrNovelInfo['n_related_novel'] = $this->arrRelatedNovel;
$this->arrNovelInfo['n_forge_novel'] = $this->arrForgeNovel;
// $this->arrNovelInfo['og_novel_pin_yin'] = zhToPinYin($this->arrNovelInfo['og_novel_book_name'] ?? '');
// if (!empty($this->arrNovelInfo['og_novel_category'])) {
// $this->arrNovelInfo['category_pinyin'] = CategoryModel::getPinYinByZh($this->arrNovelInfo['og_novel_category']);
// $this->arrNovelInfo['category_sex'] = CategoryModel::checkSex($this->arrNovelInfo['og_novel_category']);
// $this->arrNovelInfo['category_sex_zh'] = CategoryModel::checkSexZh($this->arrNovelInfo['og_novel_category']);
// }
// $this->arrNovelInfo['n_site_code'] = $this->getSite()->getSiteCode();
// $this->arrNovelInfo['n_source_id'] = $this->arrData['n_source_id'];
}
print_r($this->arrNovelInfo);
return $this->arrNovelInfo;
}
@@ -145,29 +138,31 @@ class NovelPage extends BasePage
*/
public function generateCoverPath($strName): string
{
return sprintf('/img/%s/%s.jpg', date('Y/m/d', time() - 24 * 3600 * 14), $strName);
$intTime = time() - mt_rand(1, 2 * 24 * 3600 * 360);
return sprintf('/img/%s/%s.jpg', date('Y/m/d/H', $intTime), $strName);
}
public function filterOtherFields(&$arrNovel)
{
$arrFields = [
'n_id',
'og_novel_book_name',
'og_novel_pin_yin',
'og_novel_status',
'og_novel_author',
'og_description',
'og_novel_category',
'category_pinyin',
'category_sex',
'category_sex_zh',
'n_name',
'n_name_pinyin',
'n_status',
'n_author',
'n_description',
'n_category',
'n_category_pinyin',
'n_category_sex_en',
'n_category_sex_zh',
'n_cover_path',
'og_novel_latest_chapter_name',
'og_novel_update_time',
'n_latest_chapter_name',
'n_update_time',
'n_forge_novel',
'n_related_novel',
'og_site_code',
'n_site_uuid',
'n_site_code',
'n_source_uuid',
'n_source_id',
'n_have_chapter',
'created_at',
@@ -184,64 +179,122 @@ class NovelPage extends BasePage
/**
* Undocumented function
*
* @return void
* @return bool
*/
public function saveNovelInfo()
public function saveNovelInfo(): bool
{
try {
$this->getNovelInfo();
if (!isset($this->arrNovelInfo['og_novel_book_name'])) {
$arrPageInfo = $this->getNovelInfo();
if (
empty($arrPageInfo) ||
empty($arrPageInfo['og_title']) ||
empty($arrPageInfo['og_image']) ||
empty($arrPageInfo['og_novel_category'])
) {
return false;
}
$arrNovelInfo = [
// 'n_id'=> $arrPageInfo['xxxxx'],
'n_name' => $arrPageInfo['og_title'],
'n_name_pinyin' => zhToPinYin($arrPageInfo['og_title']),
'n_status' => $arrPageInfo['og_novel_status'],
'n_author' => $arrPageInfo['og_novel_author'],
'n_description' => $arrPageInfo['og_description'],
'n_category' => $arrPageInfo['og_novel_category'],
// 'n_category_pinyin' => $arrPageInfo['xxxxx'],
// 'n_category_sex_en' => $arrPageInfo['xxxxx'],
// 'n_category_sex_zh' => $arrPageInfo['xxxxx'],
// 'n_cover_path' => $arrPageInfo['xxxxx'],
'n_latest_chapter_name' => $arrPageInfo['og_novel_latest_chapter_name'],
'n_update_time' => $arrPageInfo['og_novel_update_time'],
'n_forge_novel' => $this->arrForgeNovel,
'n_related_novel' => $this->arrRelatedNovel,
$strUUId = $this->getSite()->getSiteUUId($this->arrData['n_source_id']);
'n_site_code' => $this->getSite()->getSiteCode(),
'n_source_id' => $this->arrData['n_source_id'],
'n_source_uuid' => $this->getSite()->getSiteUUId($this->arrData['n_source_id']),
$arrExisting = $this->getNovelModel()->findOne(['n_site_uuid' => $strUUId], $this->arrOptions);
// 'n_have_chapter' => $arrPageInfo['xxxxx'],
// 'created_at' => $arrPageInfo['xxxxx'],
// 'updated_at' => $arrPageInfo['xxxxx'],
if ($arrExisting) {
];
$arrExisting = (array) $arrExisting;
$this->arrNovelInfo = array_merge($arrExisting, $this->arrNovelInfo);
$arrExistsNovel = $this->getNovelModel()->findOne(['n_source_uuid' => $arrNovelInfo['n_source_uuid']], $this->arrOptions);
if (
!isset($this->arrNovelInfo['n_cover_path']) ||
empty($this->arrNovelInfo['n_cover_path']) ||
!file_exists($this->arrNovelInfo['n_cover_path']) ||
if ($arrExistsNovel) {
(basename($this->arrNovelInfo['n_cover_path']) == '.jpg')
) {
$this->arrNovelInfo['n_cover_path'] = $this->generateCoverPath($this->arrNovelInfo['og_novel_pin_yin']);
$arrExistsNovel = (array) $arrExistsNovel;
$arrUpdate = [
'n_latest_chapter_name' => $arrNovelInfo['n_latest_chapter_name'],
'n_update_time' => $arrNovelInfo['n_update_time'],
'updated_at' => new \MongoDB\BSON\UTCDateTime(),
];
# 如果没有分类说明这条数据是最初从关联shu那里采集的需要补全全部信息
if (empty($arrExistsNovel['n_category'])) {
$arrUpdate = array_merge($arrUpdate, $arrNovelInfo);
$arrUpdate['n_related_novel'] = $this->arrRelatedNovel;
$arrUpdate['n_forge_novel'] = $this->arrForgeNovel;
$arrUpdate['n_category_pinyin'] = CategoryModel::getPinYin($this->arrNovelInfo['og_novel_category']);
$arrUpdate['n_category_sex_en'] = CategoryModel::getSexEn($this->arrNovelInfo['og_novel_category']);
$arrUpdate['n_category_sex_zh'] = CategoryModel::getSexZh($this->arrNovelInfo['og_novel_category']);
$arrUpdate['n_related_novel'] = $this->arrRelatedNovel;
$arrUpdate['n_forge_novel'] = $this->arrForgeNovel;
}
$this->arrNovelInfo['updated_at'] = new \MongoDB\BSON\UTCDateTime();
$arrUpdate = $this->arrNovelInfo;
$this->filterOtherFields($arrUpdate);
# 图片不存在的时候,需要重新生成
if (
!isset($arrExistsNovel['n_cover_path']) ||
empty($arrExistsNovel['n_cover_path']) ||
!StorageCore::getInstance()->has($arrExistsNovel['n_cover_path']) ||
(basename($arrExistsNovel['n_cover_path']) == '.jpg')
) {
$arrUpdate['n_cover_path'] = $this->generateCoverPath($arrNovelInfo['n_name_pinyin']);
$this->strCoverLocalPath = $arrUpdate['n_cover_path'];
} else {
$this->strCoverLocalPath = $arrExistsNovel['n_cover_path'];
}
$this->getNovelModel()->updateOne(
['n_site_uuid' => $strUUId],
['n_source_uuid' => $arrNovelInfo['n_source_uuid']],
['$set' => $arrUpdate],
);
$this->intNId = $arrExistsNovel['n_id'];
} else {
$this->arrNovelInfo['n_site_uuid'] = $strUUId;
$this->arrNovelInfo['n_id'] = CountersModel::getInstance()->getNextSequence('novel');
$this->arrNovelInfo['n_level'] = 1;
$this->arrNovelInfo['n_have_chapter'] = 0;
$this->arrNovelInfo['n_cover_path'] = $this->generateCoverPath($this->arrNovelInfo['og_novel_pin_yin']);
$arrInsert = $this->arrNovelInfo;
$this->filterOtherFields($arrInsert);
$arrNovelInfo['n_category_pinyin'] = CategoryModel::getPinYin($this->arrNovelInfo['og_novel_category']);
$arrNovelInfo['n_category_sex_en'] = CategoryModel::getSexEn($this->arrNovelInfo['og_novel_category']);
$arrNovelInfo['n_category_sex_zh'] = CategoryModel::getSexZh($this->arrNovelInfo['og_novel_category']);
$arrNovelInfo['n_id'] = CountersModel::getInstance()->getNextSequence('novel');
$arrNovelInfo['n_level'] = 1;
$arrNovelInfo['n_have_chapter'] = 0;
$arrNovelInfo['n_cover_path'] = $this->generateCoverPath($arrNovelInfo['n_name_pinyin']);
$arrNovelInfo['n_related_novel'] = $this->arrRelatedNovel;
$arrNovelInfo['n_forge_novel'] = $this->arrForgeNovel;
$arrNovelInfo['created_at'] = new \MongoDB\BSON\UTCDateTime();
$this->getNovelModel()->insert($arrInsert);
}
return $this->arrNovelInfo;
try {
$this->getNovelModel()->insert($arrNovelInfo);
$this->intNId = $arrNovelInfo['n_id'];
$this->strCoverLocalPath = $arrNovelInfo['n_cover_path'];
} catch (\Exception $e) {
throw new \Exception("Upsert failed: " . $e->getMessage());
if ($e->getCode() === 11000) {
return $this->saveNovelInfo();
} else {
throw $e;
}
}
}
return true;
}
public $strCoverLocalPath = '';
public $intNId;
/**
* Undocumented function
@@ -250,14 +303,9 @@ class NovelPage extends BasePage
*/
public function getDownCoverInfo(): array
{
if (!key_exists('og_image', $this->arrNovelInfo)) {
print_r($this->arrNovelInfo);
echo $this->getContent();
}
return [
'uri' => $this->arrNovelInfo['og_image'],
'local_path' => $this->arrNovelInfo['n_cover_path'],
'local_path' => $this->strCoverLocalPath,
];
}

View File

@@ -42,7 +42,71 @@ class Site
$this->initClient();
}
/**
* Undocumented function
*/
public function initClient()
{
$arrConfig = [
'http_version' => '1.1', // 强制用 HTTP/1.1,已有,保持
'base_uri' => $this->strDomain, // 基础域名,已有,保持
'http_errors' => false, // 不抛 HTTP 错误,已有,保持
'timeout' => 60, // 从 160 秒改为 60 秒
'connect_timeout' => 10, // 从 30 秒改为 10 秒
'curl' => [
CURLOPT_TCP_KEEPALIVE => 1, // 启用 TCP Keep-Alive已有保持
CURLOPT_TCP_KEEPIDLE => 120, // Keep-Alive 空闲时间
CURLOPT_TCP_KEEPINTVL => 60, // Keep-Alive 探测间隔
// CURLOPT_SSL_VERIFYPEER => true, // 验证 SSL已有保持
],
'headers' => [
'User-Agent' => 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Language' => 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Referer' => $this->strDomain,
'Connection' => 'keep-alive',
'sec-ch-ua' => '"Not/A)Brand";v="8", "Chromium";v="130", "Google Chrome";v="130"',
'sec-ch-ua-mobile' => '?1',
'sec-ch-ua-platform' => '"Android"',
'sec-fetch-dest' => 'document',
'sec-fetch-mode' => 'navigate',
'sec-fetch-site' => 'same-origin',
'sec-fetch-user' => '?1',
'upgrade-insecure-requests' => '1',
],
'pool_size' => 10,
'verify' => false,
];
$arrProxy = config('proxy');
if ($arrProxy['proxy_status']) {
$strCode = $arrProxy['proxy_code'];
$strProxyHost = $arrProxy['proxy_host'];
$strKey = $arrProxy['proxy_key'];
$strSecret = $arrProxy['proxy_secret'];
switch ($strCode) {
case 'XIONGMAO':
$intTime = time();
$strTxt = "orderno=" . $strKey . ",secret=" . $strSecret . ",timestamp=" . $intTime;
$strSign = strtoupper(md5($strTxt));
$strAuth = 'sign=' . $strSign . '&orderno=' . $strKey . '&timestamp=' . $intTime;
$arrConfig['proxy'] = $strProxyHost;
$arrConfig['headers']['Proxy-Authorization'] = $strAuth;
break;
case 'KUAI':
$arrConfig['proxy'] = $strProxyHost;
$arrConfig['curl'][CURLOPT_PROXYAUTH] = CURLAUTH_BASIC;
$arrConfig['curl'][CURLOPT_PROXYUSERPWD] = "$strKey:$strSecret";
break;
}
}
$this->Client = new Client($arrConfig);
}
/**
* Undocumented function

View File

@@ -28,7 +28,7 @@ class NovelPage extends ZwNovelPage
$this->arrRelatedNovel[] = [
"n_id" => $arrNovelInfo["n_id"],
"n_source_id" => $arrNovelInfo["n_source_id"],
"og_novel_book_name" => $arrNovelInfo["og_novel_book_name"],
"n_name" => $arrNovelInfo["n_name"],
];
} elseif (is_numeric(strpos($strUri, 'kan'))) {
$intNForgeId = (int)supperExtractFilename($strUri);

View File

@@ -39,7 +39,7 @@ class NovelPage extends ZwNovelPage
$this->arrRelatedNovel[] = [
"n_id" => $arrNovelInfo["n_id"],
"n_source_id" => $arrNovelInfo["n_source_id"],
"og_novel_book_name" => $arrNovelInfo["og_novel_book_name"],
"n_name" => $arrNovelInfo["n_name"],
];
}
});

View File

@@ -34,13 +34,13 @@
"aws/aws-sdk-php": "^3.337",
"league/flysystem": "^1.1",
"league/flysystem-aws-s3-v3": "^1.0",
"mongodb/mongodb": "^1.21",
"topthink/think-throttle": "^2.0",
"phpoffice/phpspreadsheet": "^4.1"
},
"require-dev": {
"topthink/think-dumper": "^1.0",
"topthink/think-trace": "^1.0"
"topthink/think-trace": "^1.0",
"mongodb/mongodb": "^1.21"
},
"autoload": {
"psr-4": {

154
code/composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "feae02549eadbd38bfb677ca95107ab0",
"content-hash": "b478b1d55a2646f40e59782fcccfd100",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -1231,82 +1231,6 @@
},
"time": "2022-12-02T22:17:43+00:00"
},
{
"name": "mongodb/mongodb",
"version": "1.21.1",
"source": {
"type": "git",
"url": "https://github.com/mongodb/mongo-php-library.git",
"reference": "37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a",
"reference": "37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.0",
"ext-mongodb": "^1.21.0",
"php": "^8.1",
"psr/log": "^1.1.4|^2|^3"
},
"replace": {
"mongodb/builder": "*"
},
"require-dev": {
"doctrine/coding-standard": "^12.0",
"phpunit/phpunit": "^10.5.35",
"rector/rector": "^1.2",
"squizlabs/php_codesniffer": "^3.7",
"vimeo/psalm": "6.5.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"files": [
"src/functions.php"
],
"psr-4": {
"MongoDB\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Andreas Braun",
"email": "andreas.braun@mongodb.com"
},
{
"name": "Jeremy Mikola",
"email": "jmikola@gmail.com"
},
{
"name": "Jérôme Tamarelle",
"email": "jerome.tamarelle@mongodb.com"
}
],
"description": "MongoDB driver library",
"homepage": "https://jira.mongodb.org/browse/PHPLIB",
"keywords": [
"database",
"driver",
"mongodb",
"persistence"
],
"support": {
"issues": "https://github.com/mongodb/mongo-php-library/issues",
"source": "https://github.com/mongodb/mongo-php-library/tree/1.21.1"
},
"time": "2025-02-28T17:24:20+00:00"
},
{
"name": "mtdowling/jmespath.php",
"version": "2.8.0",
@@ -3000,6 +2924,82 @@
}
],
"packages-dev": [
{
"name": "mongodb/mongodb",
"version": "1.21.1",
"source": {
"type": "git",
"url": "https://github.com/mongodb/mongo-php-library.git",
"reference": "37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a",
"reference": "37bc8df3a67ddf8380704a5ba5dbd00e92ec1f6a",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.0",
"ext-mongodb": "^1.21.0",
"php": "^8.1",
"psr/log": "^1.1.4|^2|^3"
},
"replace": {
"mongodb/builder": "*"
},
"require-dev": {
"doctrine/coding-standard": "^12.0",
"phpunit/phpunit": "^10.5.35",
"rector/rector": "^1.2",
"squizlabs/php_codesniffer": "^3.7",
"vimeo/psalm": "6.5.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"files": [
"src/functions.php"
],
"psr-4": {
"MongoDB\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Andreas Braun",
"email": "andreas.braun@mongodb.com"
},
{
"name": "Jeremy Mikola",
"email": "jmikola@gmail.com"
},
{
"name": "Jérôme Tamarelle",
"email": "jerome.tamarelle@mongodb.com"
}
],
"description": "MongoDB driver library",
"homepage": "https://jira.mongodb.org/browse/PHPLIB",
"keywords": [
"database",
"driver",
"mongodb",
"persistence"
],
"support": {
"issues": "https://github.com/mongodb/mongo-php-library/issues",
"source": "https://github.com/mongodb/mongo-php-library/tree/1.21.1"
},
"time": "2025-02-28T17:24:20+00:00"
},
{
"name": "topthink/think-dumper",
"version": "v1.0.4",

View File

@@ -3,7 +3,7 @@ return [
'collection' => 'chapter',
'indexes' => [
[
'key' => ['c_site_uuid' => 1],
'key' => ['c_source_uuid' => 1],
'options' => ['unique' => true]
],

View File

@@ -10,12 +10,16 @@ return [
'key' => ['n_name' => 1],
'options' => ['unique' => false]
],
[
'key' => ['n_category' => 1],
'options' => ['unique' => false]
],
[
'key' => ['n_status' => 1],
'options' => ['unique' => false]
],
[
'key' => ['n_site_uuid' => 1],
'key' => ['n_source_uuid' => 1],
'options' => ['unique' => true]
],
[

View File

@@ -76,17 +76,17 @@ class NovelManage extends Command
foreach ($arrDocs as $arrDoc) {
$arrUpdateData = [];
if (!empty($arrDoc['og_novel_category'])) {
$arrUpdateData['category_pinyin'] = CategoryModel::getPinYinByZh($arrDoc['og_novel_category']);
$arrUpdateData['category_sex'] = CategoryModel::checkSex($arrDoc['og_novel_category']);
$arrUpdateData['category_sex_zh'] = CategoryModel::checkSexZh($arrDoc['og_novel_category']);
if (!empty($arrDoc['n_category'])) {
$arrUpdateData['n_category_pinyin'] = CategoryModel::getPinYin($arrDoc['n_category']);
$arrUpdateData['n_category_sex_en'] = CategoryModel::getSexEn($arrDoc['n_category']);
$arrUpdateData['n_category_sex_zh'] = CategoryModel::getSexZh($arrDoc['n_category']);
}
$arrLasteChapter = $ChapterModel->getLatestChapterByNId($arrDoc['n_id'], false);
if (!empty($arrLasteChapter)) {
$arrUpdateData['n_have_chapter'] = 1;
$arrUpdateData['og_novel_latest_chapter_name'] = $arrLasteChapter['name'];
$arrUpdateData['n_latest_chapter_name'] = $arrLasteChapter['name'];
}
if (!empty($arrUpdateData)) {

View File

@@ -61,6 +61,12 @@ class StorageCore
$this->Filesystem->writeStream($strPath, $Resource);
}
public function put($strKey, $strContent, array $arrConfig = [])
{
$strContent = zstd_compress($strContent);
return $this->Filesystem->put($strKey, $strContent, $arrConfig);
}
public function write($strKey, $strContent, array $arrConfig = [])
{
$strContent = zstd_compress($strContent);

View File

@@ -219,9 +219,9 @@ function displayBookshelf() {
const DomBookshelfContainer = document.getElementById('bookshelfMod-head');
const DomBookshelfContainerH5 = document.getElementById('list');
arrBookshelf.forEach(book => {
let strNovelUrl = formatNovelUrl(book.og_novel_pin_yin, book.n_id)
let strNovelChapterUrl = formatNovelChapterUrl(book.og_novel_pin_yin, book.n_id, book.c_sort_num)
let strSearchUrl = formatSearchUrl(book.og_novel_author, 1)
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)
if (isMobile()) {
const bookElement = document.createElement('li');
bookElement.classList.add('book-shelf'); // 添加类名
@@ -232,13 +232,13 @@ function displayBookshelf() {
<img class="lazyload-img" src="${book.n_cover_path}" >
</div>
<div class="rightBlock">
<span class="rightBlock_title">${book.og_novel_book_name}</span>
<span class="rightBlock_name">${book.og_novel_author}</span>
<span class="rightBlock_title">${book.n_name}</span>
<span class="rightBlock_name">${book.n_author}</span>
<span class="rightBlock_con rightBlock_con2">
<span class="con">
<span class="spanLi">${book.c_name}</span>
</span>
<span class="spanLi Time">${book.og_novel_update_time ?? ''}</span>
<span class="spanLi Time">${book.n_update_time ?? ''}</span>
<span class="rightJustTime" onclick="javascript:window.location.href='${strNovelChapterUrl}';return false;">
继续阅读
</span>
@@ -259,17 +259,17 @@ function displayBookshelf() {
</a>
</td>
<td class="t2">
<a href="${strPcPath}${strNovelUrl}" >${book.og_novel_book_name}</a>
<a href="${strPcPath}${strNovelUrl}" >${book.n_name}</a>
</td>
<td class="t3">
<a href="${strPcPath}${strNovelChapterUrl}" >${book.c_name}</a>
</td>
<td class="t4">
<a href="${strPcPath}${strSearchUrl}" >${book.og_novel_author}</a>
<a href="${strPcPath}${strSearchUrl}" >${book.n_author}</a>
</td>
<td class="t5">${book.og_novel_update_time}</td>
<td class="t5">${book.n_update_time}</td>
<td class="t6">${book.og_novel_status}</td>
<td class="t6">${book.n_status}</td>
<td class="t7">
<a href="${strPcPath}${strNovelChapterUrl}" class="goon" >阅读</a>
<i><span class="Collection" ajax-get="" onclick="delBookshelfFun(${book.n_id})">删除</span></i>
@@ -348,9 +348,9 @@ function displayHistory() {
const DomHistoryContainer = document.getElementById('bookshelfMod-head');
const DomBookshelfContainerH5 = document.getElementById('list');
arrHistory.forEach(book => {
let strNovelUrl = formatNovelUrl(book.og_novel_pin_yin, book.n_id)
let strNovelChapterUrl = formatNovelChapterUrl(book.og_novel_pin_yin, book.n_id, book.c_sort_num)
let strSearchUrl = formatSearchUrl(book.og_novel_author, 1)
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)
if (isMobile()) {
const bookElement = document.createElement('li');
bookElement.classList.add('book-history'); // 添加类名
@@ -361,13 +361,13 @@ function displayHistory() {
<img class="lazyload-img" src="${book.n_cover_path}" >
</div>
<div class="rightBlock">
<span class="rightBlock_title">${book.og_novel_book_name}</span>
<span class="rightBlock_name">${book.og_novel_author}</span>
<span class="rightBlock_title">${book.n_name}</span>
<span class="rightBlock_name">${book.n_author}</span>
<span class="rightBlock_con rightBlock_con2">
<span class="con">
<span class="spanLi">${book.c_name}</span>
</span>
<span class="spanLi Time">${book.og_novel_update_time ?? ''}</span>
<span class="spanLi Time">${book.n_update_time ?? ''}</span>
<span class="rightJustTime" onclick="javascript:window.location.href='${strNovelChapterUrl}';return false;"
>继续阅读</span>
</span>
@@ -386,17 +386,17 @@ function displayHistory() {
</a>
</td>
<td class="t2">
<a href="${strPcPath}${strNovelUrl}" >${book.og_novel_book_name}</a>
<a href="${strPcPath}${strNovelUrl}" >${book.n_name}</a>
</td>
<td class="t3">
<a href="${strPcPath}${strNovelChapterUrl}" >${book.c_name}</a>
</td>
<td class="t4">
<a href="${strPcPath}${strSearchUrl}" >${book.og_novel_author}</a>
<a href="${strPcPath}${strSearchUrl}" >${book.n_author}</a>
</td>
<td class="t5">${book.og_novel_update_time ?? ''}</td>
<td class="t5">${book.n_update_time ?? ''}</td>
<td class="t6">${book.og_novel_status}</td>
<td class="t6">${book.n_status}</td>
<td class="t7">
<a href="${strNovelChapterUrl}" class="goon" >阅读</a>
<i><span class="Collection" ajax-get="" onclick="delHistoryFun(${book.n_id})">删除</span></i>