This commit is contained in:
make
2025-04-12 22:45:39 +08:00
parent 23b082e3c1
commit f740eed79f
14 changed files with 310 additions and 835 deletions

View File

@@ -105,17 +105,21 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile'); $boolIsMobile = $Request->param('boolIsMobile');
$strChannel = $Request->param('strChannel') ?? 'all'; $strChannel = $Request->param('strChannel') ?? 'all';
$strNanUrlTemp = $this->request->DomainModel->getFomartSubject('NAN_SHENG_URL','',false);
$strNvUrlTemp = $this->request->DomainModel->getFomartSubject('NV_SHENG_URL','',false);
$strNanUrl = str_replace("/", "", $strNanUrlTemp);
$strNvUrl = str_replace("/", "", $strNvUrlTemp);
// 性别 // 性别
$arrSex = [ $arrSex = [
'all' => 0, 'all' => 0,
'nansheng-xiaoshuo' => 1, $strNanUrl => 1,
'nvsheng-xiaoshuo' => 1, $strNvUrl => 1,
]; ];
$arrSexChinese = [ $arrSexChinese = [
'all' => '', 'all' => '',
'nansheng-xiaoshuo' => '男生', $strNanUrl => '男生',
'nvsheng-xiaoshuo' => '女生', $strNvUrl => '女生',
]; ];
if (!key_exists($strGender, $arrSex)) { if (!key_exists($strGender, $arrSex)) {
@@ -199,6 +203,8 @@ class Novel extends BaseController
'strSearchCategory' => $strSearchCategory, 'strSearchCategory' => $strSearchCategory,
'strSearchStatus' => $strSearchStatus, 'strSearchStatus' => $strSearchStatus,
'strNovelSex' => $arrSexChinese[$strGender], 'strNovelSex' => $arrSexChinese[$strGender],
'strNanUrl' => $strNanUrl,
'strNvUrl' => $strNvUrl,
'strChannel' => $strChannel, 'strChannel' => $strChannel,
'strTitle' => $strTitle, 'strTitle' => $strTitle,
'strKeywords' => $strKeywords, 'strKeywords' => $strKeywords,
@@ -394,6 +400,13 @@ class Novel extends BaseController
$ChapterModel = ChapterModel::getInstance(); $ChapterModel = ChapterModel::getInstance();
$arrLatestChapter = $ChapterModel->getLatestChapterByNId($intNId); $arrLatestChapter = $ChapterModel->getLatestChapterByNId($intNId);
// 第一章
$arrFirstChapter = $ChapterModel->getFirstChapterByNId($intNId,false);
$intFirstChapterSort = null;
if ($arrFirstChapter) {
$intFirstChapterSort = $arrFirstChapter['c_sort_num'];
}
$strFocus = ''; $strFocus = '';
// 要点 // 要点
if ($arrLatestChapter) { if ($arrLatestChapter) {
@@ -433,9 +446,9 @@ class Novel extends BaseController
'strNovelDescription' => $arrNovel['og_description'], 'strNovelDescription' => $arrNovel['og_description'],
]); ]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@TITLE'); $strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@TITLE',$intForgeId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@KEYWORDS'); $strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@KEYWORDS',$intForgeId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@DESCRIPTION'); $strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@DESCRIPTION',$intForgeId);
$strTitle = ConverterMovel::convert($strTitleTemplate); $strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate); $strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -453,6 +466,7 @@ class Novel extends BaseController
'arrLatestChapter' => $arrLatestChapter, 'arrLatestChapter' => $arrLatestChapter,
'arrNovelClicks' => $arrNovelClicks, 'arrNovelClicks' => $arrNovelClicks,
'strFocus' => $strFocus, 'strFocus' => $strFocus,
'intFirstChapterSort' => $intFirstChapterSort,
'strPageCode' => 'boy', 'strPageCode' => 'boy',
'strTitle' => $strTitle, 'strTitle' => $strTitle,
'strKeywords' => $strKeywords, 'strKeywords' => $strKeywords,
@@ -535,9 +549,9 @@ class Novel extends BaseController
'strNovelDescription' => $arrNovel['og_description'], 'strNovelDescription' => $arrNovel['og_description'],
]); ]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE'); $strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS'); $strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION'); $strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION',$intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate); $strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate); $strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -613,9 +627,9 @@ class Novel extends BaseController
]); ]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@TITLE'); $strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@KEYWORDS'); $strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@DESCRIPTION'); $strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@DESCRIPTION',$intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate); $strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate); $strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -697,9 +711,9 @@ class Novel extends BaseController
'strNovelChapterSort' => $arrChapter['c_sort_num'], 'strNovelChapterSort' => $arrChapter['c_sort_num'],
]); ]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE'); $strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS'); $strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION'); $strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION',$intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate); $strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate); $strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -778,9 +792,9 @@ class Novel extends BaseController
'strNovelDescription' => $arrNovel['og_description'], 'strNovelDescription' => $arrNovel['og_description'],
]); ]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE'); $strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS'); $strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION'); $strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION',$intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate); $strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate); $strKeywords = ConverterMovel::convert($strKeywordsTemplate);

View File

@@ -15,6 +15,10 @@ class User extends BaseController
{ {
$boolIsMobile = $Request->param('boolIsMobile'); $boolIsMobile = $Request->param('boolIsMobile');
$strNovelUrlTemp = $Request->DomainModel->getFomartSubject('NOVEL_INFO_URL','',false);
$strNovelChapterUrlTemp = $Request->DomainModel->getFomartSubject('CONTENT_INFO_URL','',false);
$strSearchUrlTemp = $Request->DomainModel->getFomartSubject('SEARCH_INFO_URL','',false);
$NovelModel = NovelModel::getInstance(); $NovelModel = NovelModel::getInstance();
// 推荐等级为9的完结 随机15个小说 // 推荐等级为9的完结 随机15个小说
@@ -29,6 +33,9 @@ class User extends BaseController
View::assign([ View::assign([
'arrRecommendEndNovel' => $arrRecommendEndNovel, 'arrRecommendEndNovel' => $arrRecommendEndNovel,
'arrMoonRankNovel' => $arrMoonRankNovel, 'arrMoonRankNovel' => $arrMoonRankNovel,
'strNovelUrlTemp' => $strNovelUrlTemp,
'strNovelChapterUrlTemp' => $strNovelChapterUrlTemp,
'strSearchUrlTemp' => $strSearchUrlTemp,
]); ]);
if ($boolIsMobile) { if ($boolIsMobile) {
@@ -46,8 +53,15 @@ class User extends BaseController
$boolIsMobile = $Request->param('boolIsMobile'); $boolIsMobile = $Request->param('boolIsMobile');
$strNovelUrlTemp = $Request->DomainModel->getFomartSubject('NOVEL_INFO_URL','',false);
$strNovelChapterUrlTemp = $Request->DomainModel->getFomartSubject('CONTENT_INFO_URL','',false);
$strSearchUrlTemp = $Request->DomainModel->getFomartSubject('SEARCH_INFO_URL','',false);
View::assign([ View::assign([
'strPageCode' => 'BookShelf' 'strPageCode' => 'BookShelf',
'strNovelUrlTemp' => $strNovelUrlTemp,
'strNovelChapterUrlTemp' => $strNovelChapterUrlTemp,
'strSearchUrlTemp' => $strSearchUrlTemp,
]); ]);
if ($boolIsMobile) { if ($boolIsMobile) {
@@ -65,8 +79,15 @@ class User extends BaseController
$boolIsMobile = $Request->param('boolIsMobile'); $boolIsMobile = $Request->param('boolIsMobile');
$strNovelUrlTemp = $Request->DomainModel->getFomartSubject('NOVEL_INFO_URL','',false);
$strNovelChapterUrlTemp = $Request->DomainModel->getFomartSubject('CONTENT_INFO_URL','',false);
$strSearchUrlTemp = $Request->DomainModel->getFomartSubject('SEARCH_INFO_URL','',false);
View::assign([ View::assign([
'strPageCode' => 'history' 'strPageCode' => 'history',
'strNovelUrlTemp' => $strNovelUrlTemp,
'strNovelChapterUrlTemp' => $strNovelChapterUrlTemp,
'strSearchUrlTemp' => $strSearchUrlTemp,
]); ]);
if ($boolIsMobile) { if ($boolIsMobile) {

View File

@@ -7,9 +7,10 @@
<meta property="og:title" content="{$strTitle??''}" /> <meta property="og:title" content="{$strTitle??''}" />
<meta property="og:description" content="{$strDescription??''}" /> <meta property="og:description" content="{$strDescription??''}" />
{if $strGender == 'all' && $strCategory == 'all' && $strStatus == 'all'} {if $strGender == 'all' && $strCategory == 'all' && $strStatus == 'all'}
<meta property="og:url" content="https://{$DomainModel->d_domain}/shuku/all" /> <meta property="og:url" content="https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}" />
{else} {else}
<meta property="og:url" content="https://{$DomainModel->d_domain}/shuku/{$strGender}/{$strCategory}/{$strStatus}/page{$intPage}" /> <meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nflurl gender="$strGender" category="$strCategory" status="$strStatus" page="$intPage"/}' />
{/if} {/if}
<meta property="og:type" content="book" /> <meta property="og:type" content="book" />
@@ -17,7 +18,7 @@
{if $strGender == 'all' && $strCategory == 'all' && $strStatus == 'all'} {if $strGender == 'all' && $strCategory == 'all' && $strStatus == 'all'}
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://{$DomainModel->d_domain}/shuku/all", "@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
"@type": "book", "@type": "book",
"headline": "{$strTitle??''}", "headline": "{$strTitle??''}",
"description": "{$strDescription??''}", "description": "{$strDescription??''}",
@@ -27,7 +28,7 @@
{else} {else}
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://{$DomainModel->d_domain}/shuku/{$strGender}/{$strCategory}/{$strStatus}/page{$intPage}", "@context": "https://{$DomainModel->d_domain}{site:nflurl gender="$strGender" category="$strCategory" status="$strStatus" page="$intPage"/}",
"@type": "book", "@type": "book",
"headline": "{$strTitle??''}", "headline": "{$strTitle??''}",
"description": "{$strDescription??''}", "description": "{$strDescription??''}",
@@ -69,24 +70,55 @@
<div class="mod mod-nav"> <div class="mod mod-nav">
<div id="book-nav" class="book-nav"> <div id="book-nav" class="book-nav">
<ul class="clearfix"> <ul class="clearfix">
<li class='{eq name="strGender" value="all"}on {/eq}'><a href='/shuku/all/{$strCategory}/{$strStatus}/page{$intPage}' title="全部">全部</a></li> <li class='{eq name="strGender" value="all"}on {/eq}'>
<li class='{eq name="strGender" value="nansheng-xiaoshuo"}on {/eq}'><a href='/shuku/nansheng-xiaoshuo/{$strCategory}/{$strStatus}/page{$intPage}' title="男生">男生</a></li> <a href='{site:nflurl gender="all" category="$strCategory" status="$strStatus" page="$intPage"/}'
<li class='{eq name="strGender" value="nvsheng-xiaoshuo"}on {/eq}'><a href='/shuku/nvsheng-xiaoshuo/{$strCategory}/{$strStatus}/page{$intPage}' title="女生">女生</a></li> title="全部">全部</a>
</li>
<li class='{eq name="strGender" value="nansheng-xiaoshuo"}on {/eq}'>
<a href='{site:nflurl gender="$strNanUrlTemp" category="$strCategory" status="$strStatus" page="$intPage"/}'
title="男生">男生</a>
</li>
<li class='{eq name="strGender" value="nvsheng-xiaoshuo"}on {/eq}'>
<a href='{site:nflurl gender="$strNvUrlTemp" category="$strCategory" status="$strStatus" page="$intPage"/}'
title="女生">女生</a>
</li>
</ul> </ul>
</div> </div>
<div id="book-nav" class="book-nav"> <div id="book-nav" class="book-nav">
<ul class="clearfix"> <ul class="clearfix">
<li class='{eq name="strCategory" value="all"}on {/eq}'> <li class='{eq name="strCategory" value="all"}on {/eq}'>
<a href="/shuku/{$strGender}/all/{$strStatus}/page{$intPage}" btn="search_category">全部</a> <a href='{site:nflurl gender="$strGender" category="all" status="$strStatus" page="$intPage"/}'
btn="search_category">全部</a>
</li> </li>
{eq name="strGender" value="nansheng-xiaoshuo"} {eq name="strGender" value="all"}
{foreach $arrCategoryAll.man as $key=>$vo } {foreach $arrCategoryAll.man as $key=>$vo }
<li class='{eq name="key" value="$strCategory"}on {/eq}'><a href="/shuku/{$strGender}/{$key}/{$strStatus}/page{$intPage}" btn="search_category">{$vo}</a></li> <li class='{eq name="key" value="$strCategory"}on {/eq}'>
<a href='{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a>
</li>
{/foreach} {/foreach}
{else}
{foreach $arrCategoryAll.women as $key=>$vo } {foreach $arrCategoryAll.women as $key=>$vo }
<li class='{eq name="key" value="$strCategory"}on {/eq}' ><a href="/shuku/{$strGender}/{$key}/{$strStatus}/page{$intPage}" btn="search_category">{$vo}</a></li> <li class='{eq name="key" value="$strCategory"}on {/eq}'>
<a href='{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a>
</li>
{/foreach}
{/eq}
{eq name="strGender" value="$strNanUrl"}
{foreach $arrCategoryAll.women as $key=>$vo }
<li class='{eq name="key" value="$strCategory"}on {/eq}'>
<a href='{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a>
</li>
{/foreach}
{/eq}
{eq name="strGender" value="$strNvUrl"}
{foreach $arrCategoryAll.women as $key=>$vo }
<li class='{eq name="key" value="$strCategory"}on {/eq}'>
<a href='{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a>
</li>
{/foreach} {/foreach}
{/eq} {/eq}
@@ -96,13 +128,16 @@
<div id="book-nav" class="book-nav"> <div id="book-nav" class="book-nav">
<ul class="clearfix"> <ul class="clearfix">
<li class='{eq name="strStatus" value="all"}on {/eq}'> <li class='{eq name="strStatus" value="all"}on {/eq}'>
<a href="/shuku/{$strGender}/{$strCategory}/all/page{$intPage}" btn="search_category">全部</a> <a href='{site:nflurl gender="$strGender" category="$strCategory" status="all" page="$intPage"/}'
btn="search_category">全部</a>
</li> </li>
<li class='{eq name="strStatus" value="lianzai"}on {/eq}'> <li class='{eq name="strStatus" value="lianzai"}on {/eq}'>
<a href="/shuku/{$strGender}/{$strCategory}/lianzai/page{$intPage}" btn="search_category">连载</a> <a href='{site:nflurl gender="$strGender" category="$strCategory" status="lianzai" page="$intPage"/}'
btn="search_category">连载</a>
</li> </li>
<li class='{eq name="strStatus" value="wanjie"}on {/eq}'> <li class='{eq name="strStatus" value="wanjie"}on {/eq}'>
<a href="/shuku/{$strGender}/{$strCategory}/wanjie/page{$intPage}" btn="search_category">完本</a> <a href='{site:nflurl gender="$strGender" category="$strCategory" status="wanjie" page="$intPage"/}'
btn="search_category">完本</a>
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -10,10 +10,10 @@
</h3> </h3>
</li> </li>
<li class="gx"> <li class="gx">
<a href='{$strPcPath}/books/{$Novel->og_novel_pin_yin}-{$Novel->n_id}/chapter/latest.html' <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'}" title="{$Novel->og_novel_latest_chapter_name ?? 'null'}"
>{$Novel->og_novel_latest_chapter_name ?? 'null'}</a></li> >{$Novel->og_novel_latest_chapter_name ?? 'null'}</a></li>
<li class="zz">{$Novel->og_novel_author ?? 'null'}</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> <li class="sj">{$Novel->og_novel_update_time ?? 'null'}</li>
</ul> </ul>
</li> </li>

View File

@@ -56,6 +56,9 @@
</div> </div>
{$arrGRM[2]|raw} {$arrGRM[2]|raw}
<script> <script>
const strNovelUrlTemp = `{$strNovelUrlTemp}`;
const strNovelChapterUrlTemp = `{$strNovelChapterUrlTemp}`;
const strSearchUrlTemp = `{$strSearchUrlTemp}`;
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
displayBookshelf() displayBookshelf()

View File

@@ -54,6 +54,9 @@
</div> </div>
{$arrGRM[3]|raw} {$arrGRM[3]|raw}
<script> <script>
const strNovelUrlTemp = `{$strNovelUrlTemp}`;
const strNovelChapterUrlTemp = `{$strNovelChapterUrlTemp}`;
const strSearchUrlTemp = `{$strSearchUrlTemp}`;
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
displayHistory() displayHistory()

View File

@@ -76,15 +76,15 @@
{volist name="arrRecommendEndNovel" id="Novel" key="key"} {volist name="arrRecommendEndNovel" id="Novel" key="key"}
{$arrGRM[$key]|raw} {$arrGRM[$key]|raw}
<li> <li>
<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[og_novel_pin_yin]"/}'
alt="{$Novel.og_novel_book_name ?? ''}" title="{$Novel.og_novel_book_name ?? ''}"> title="{$Novel.og_novel_book_name ?? ''}">
<img src="{$Novel.n_cover_path ?? ''}"> <img src="{$Novel.n_cover_path ?? ''}" alt="{$Novel.og_novel_book_name ?? ''}">
</a> </a>
<p> <p>
<a href="/novel/332.html"> <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> <span class="bookName other">{$Novel.og_novel_book_name ?? ''}</span>
</a> </a>
<a href='{site:souurl key="$arrNovel.og_novel_author" p="1"/}'> <a href='{$strPcPath}{site:souurl key="$Novel[og_novel_author]" p="1"/}'>
<span class="bookStatus other">{$Novel->og_novel_author ?? ''}</span> <span class="bookStatus other">{$Novel->og_novel_author ?? ''}</span>
</a> </a>
<span class="bookBrief"> <span class="bookBrief">
@@ -100,9 +100,12 @@
</div> </div>
<script> <script>
const strNovelUrlTemp = `{$strNovelUrlTemp}`;
const strNovelChapterUrlTemp = `{$strNovelChapterUrlTemp}`;
const strSearchUrlTemp = `{$strSearchUrlTemp}`;
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
displayBookshelfInUser() displayBookshelfInUser()
displayHistoryInUser() displayHistoryInUser()
}) })
@@ -122,55 +125,59 @@
const DomBookshelfContainer = document.getElementById('bookshelf-ul'); const DomBookshelfContainer = document.getElementById('bookshelf-ul');
DomBookshelfContainer.innerHTML = '' DomBookshelfContainer.innerHTML = ''
arrBookshelf.forEach(book => { 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)
const bookElement = document.createElement('li'); const bookElement = document.createElement('li');
if (isMobile()) { if (isMobile()) {
bookElement.innerHTML = ` bookElement.innerHTML = `
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}"> <a href="${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<img src="${book.n_cover_path}"> <img src="${book.n_cover_path}">
</a> </a>
<p> <p>
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" > <a href="${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span> <span class="bookName">${book.og_novel_book_name}</span>
</a> </a>
<span class="bookStatus"> <span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em> <b class="authorSt"><em>${book.og_novel_status}</em>
<a href='{site:souurl key="$arrNovel.og_novel_author" p="1"/}'> <a href='${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em> <em class="none">${book.og_novel_author}</em>
</a> </a>
</b> </b>
<b class="authorSt chapterSt"> <b class="authorSt chapterSt">
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em> <em class="ct">${book.c_name}</em>
</a> </a>
<em class="time">${book.og_novel_update_time}</em></b> <em class="time">${book.og_novel_update_time}</em></b>
</span> </span>
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strNovelChapterUrl}" >
<i class="goon">阅读</i> <i class="goon">阅读</i>
</a> </a>
</p> </p>
`; `;
} else { } else {
bookElement.innerHTML = ` bookElement.innerHTML = `
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}"> <a href="${strPcPath}${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<img src="${book.n_cover_path}"> <img src="${book.n_cover_path}">
</a> </a>
<p> <p>
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" > <a href="${strPcPath}${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span> <span class="bookName">${book.og_novel_book_name}</span>
</a> </a>
<span class="bookStatus"> <span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em> <b class="authorSt"><em>${book.og_novel_status}</em>
<a href='{site:souurl key="$arrNovel.og_novel_author" p="1"/}'> <a href='${strPcPath}${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em> <em class="none">${book.og_novel_author}</em>
</a> </a>
</b> </b>
<b class="authorSt chapterSt"> <b class="authorSt chapterSt">
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strPcPath}${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em> <em class="ct">${book.c_name}</em>
</a> </a>
<em class="time">${book.og_novel_update_time}</em></b> <em class="time">${book.og_novel_update_time}</em></b>
</span> </span>
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strPcPath}${strNovelChapterUrl}" >
<i class="goon">阅读</i> <i class="goon">阅读</i>
</a> </a>
</p> </p>
@@ -196,55 +203,58 @@
const DomBookshelfContainer = document.getElementById('history-ul'); const DomBookshelfContainer = document.getElementById('history-ul');
DomBookshelfContainer.innerHTML = '' DomBookshelfContainer.innerHTML = ''
arrBookshelf.forEach(book => { 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)
const bookElement = document.createElement('li'); const bookElement = document.createElement('li');
if (isMobile()) { if (isMobile()) {
bookElement.innerHTML = ` bookElement.innerHTML = `
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}"> <a href="${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<img src="${book.n_cover_path}"> <img src="${book.n_cover_path}">
</a> </a>
<p> <p>
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" > <a href="${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span> <span class="bookName">${book.og_novel_book_name}</span>
</a> </a>
<span class="bookStatus"> <span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em> <b class="authorSt"><em>${book.og_novel_status}</em>
<a href='{site:souurl key="$arrNovel.og_novel_author" p="1"/}'> <a href='${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em> <em class="none">${book.og_novel_author}</em>
</a> </a>
</b> </b>
<b class="authorSt chapterSt"> <b class="authorSt chapterSt">
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em> <em class="ct">${book.c_name}</em>
</a> </a>
<em class="time">${book.og_novel_update_time}</em></b> <em class="time">${book.og_novel_update_time}</em></b>
</span> </span>
<a href="/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strNovelChapterUrl}" >
<i class="goon">阅读</i> <i class="goon">阅读</i>
</a> </a>
</p> </p>
`; `;
} else { } else {
bookElement.innerHTML = ` bookElement.innerHTML = `
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}"> <a href="${strPcPath}${strNovelUrl}" alt="${book.og_novel_book_name}" title="${book.og_novel_book_name}">
<img src="${book.n_cover_path}"> <img src="${book.n_cover_path}">
</a> </a>
<p> <p>
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" > <a href="${strPcPath}${strNovelUrl}" >
<span class="bookName">${book.og_novel_book_name}</span> <span class="bookName">${book.og_novel_book_name}</span>
</a> </a>
<span class="bookStatus"> <span class="bookStatus">
<b class="authorSt"><em>${book.og_novel_status}</em> <b class="authorSt"><em>${book.og_novel_status}</em>
<a href='{site:souurl key="$arrNovel.og_novel_author" p="1"/}'> <a href='${strSearchUrl}'>
<em class="none">${book.og_novel_author}</em> <em class="none">${book.og_novel_author}</em>
</a> </a>
</b> </b>
<b class="authorSt chapterSt"> <b class="authorSt chapterSt">
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strPcPath}${strNovelChapterUrl}" >
<em class="ct">${book.c_name}</em> <em class="ct">${book.c_name}</em>
</a> </a>
<em class="time">${book.og_novel_update_time}</em></b> <em class="time">${book.og_novel_update_time}</em></b>
</span> </span>
<a href="{$strPcPath}/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" > <a href="${strPcPath}${strNovelChapterUrl}" >
<i class="goon">阅读</i> <i class="goon">阅读</i>
</a> </a>
</p> </p>

View File

@@ -85,10 +85,10 @@
<li><a class='{eq name="strGender" value="all"}on {/eq}' <li><a class='{eq name="strGender" value="all"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="all" category="$strCategory" status="$strStatus" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="all" category="$strCategory" status="$strStatus" page="$intPage"/}'
btn="search_category">全部</a></li> btn="search_category">全部</a></li>
<li><a class='{eq name="strGender" value="$strNanUrlTemp"}on {/eq}' <li><a class='{eq name="strGender" value="$strNanUrl"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strNanUrlTemp" category="$strCategory" status="$strStatus" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strNanUrlTemp" category="$strCategory" status="$strStatus" page="$intPage"/}'
btn="search_category">男生</a></li> btn="search_category">男生</a></li>
<li><a class='{eq name="strGender" value="$strNvUrlTemp"}on {/eq}' <li><a class='{eq name="strGender" value="$strNvUrl"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strNvUrlTemp" category="$strCategory" status="$strStatus" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strNvUrlTemp" category="$strCategory" status="$strStatus" page="$intPage"/}'
btn="search_category">女生</a></li> btn="search_category">女生</a></li>
@@ -100,22 +100,32 @@
<li><a class='{eq name="strCategory" value="all"}on {/eq}' <li><a class='{eq name="strCategory" value="all"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strGender" category="all" status="$strStatus" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strGender" category="all" status="$strStatus" page="$intPage"/}'
btn="search_category">全部</a></li> btn="search_category">全部</a></li>
{eq name="strGender" value="all"}
{eq name="strGender" value="$strNanUrlTemp"}
{foreach $arrCategoryAll.man as $key=>$vo } {foreach $arrCategoryAll.man as $key=>$vo }
<li><a class='{eq name="key" value="$strCategory"}on {/eq}' <li><a class='{eq name="key" value="$strCategory"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a></li> btn="search_category">{$vo}</a></li>
{/foreach} {/foreach}
{else}
{foreach $arrCategoryAll.women as $key=>$vo } {foreach $arrCategoryAll.women as $key=>$vo }
<li><a class='{eq name="key" value="$strCategory"}on {/eq}' <li><a class='{eq name="key" value="$strCategory"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a></li> btn="search_category">{$vo}</a></li>
{/foreach} {/foreach}
{/eq} {/eq}
{eq name="strGender" value="$strNanUrl"}
{foreach $arrCategoryAll.man as $key=>$vo }
<li><a class='{eq name="key" value="$strCategory"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a></li>
{/foreach}
{/eq}
{eq name="strGender" value="$strNvUrl"}
{foreach $arrCategoryAll.women as $key=>$vo }
<li><a class='{eq name="key" value="$strCategory"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strGender" category="$key" status="$strStatus" page="$intPage"/}'
btn="search_category">{$vo}</a></li>
{/foreach}
{/eq}
</ul> </ul>
</div> </div>
<div class="optCl"> <div class="optCl">
@@ -125,11 +135,9 @@
href='{$strPcPath}{site:nflurl gender="$strGender" category="$strCategory" status="all" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strGender" category="$strCategory" status="all" page="$intPage"/}'
btn="search_category">全部</a></li> btn="search_category">全部</a></li>
<li><a class='{eq name="strStatus" value="lianzai"}on {/eq}' <li><a class='{eq name="strStatus" value="lianzai"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strGender" category="$strCategory" status="lianzai" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strGender" category="$strCategory" status="lianzai" page="$intPage"/}'
btn="search_category">连载</a></li> btn="search_category">连载</a></li>
<li><a class='{eq name="strStatus" value="wanjie"}on {/eq}' <li><a class='{eq name="strStatus" value="wanjie"}on {/eq}'
href='{$strPcPath}{site:nflurl gender="$strGender" category="$strCategory" status="wanjie" page="$intPage"/}' href='{$strPcPath}{site:nflurl gender="$strGender" category="$strCategory" status="wanjie" page="$intPage"/}'
btn="search_category">完本</a></li> btn="search_category">完本</a></li>
</ul> </ul>
@@ -154,14 +162,14 @@
{if $intPage == 1} {if $intPage == 1}
<li class="disabled"><span>«</span></li> <li class="disabled"><span>«</span></li>
{else} {else}
<li><a href="{$strPcPath}/shuku/{$strGender}/{$strCategory}/{$strStatus}/page{$intPage-1}">«</a></li> <li><a href="{$strPcPath}{$vo.url}">«</a></li>
{/if} {/if}
{/case} {/case}
{case value="下一页"} {case value="下一页"}
{if $intPage >= $intTotalPage} {if $intPage >= $intTotalPage}
<li class="disabled"><span>»</span></li> <li class="disabled"><span>»</span></li>
{else} {else}
<li><a href="{$strPcPath}/shuku/{$strGender}/{$strCategory}/{$strStatus}/page{$intPage+1}">»</a></li> <li><a href="{$strPcPath}{$vo.url}">»</a></li>
{/if} {/if}
{/case} {/case}
{case value="..."} {case value="..."}

View File

@@ -42,6 +42,9 @@
</div> </div>
</div> </div>
<script> <script>
const strNovelUrlTemp = `{$strNovelUrlTemp}`;
const strNovelChapterUrlTemp = `{$strNovelChapterUrlTemp}`;
const strSearchUrlTemp = `{$strSearchUrlTemp}`;
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
displayBookshelf() displayBookshelf()

View File

@@ -44,6 +44,9 @@
</div> </div>
<script> <script>
const strNovelUrlTemp = `{$strNovelUrlTemp}`;
const strNovelChapterUrlTemp = `{$strNovelChapterUrlTemp}`;
const strSearchUrlTemp = `{$strSearchUrlTemp}`;
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
displayHistory() displayHistory()

View File

@@ -40,7 +40,7 @@
</li> </li>
</ul> </ul>
<div class="searchbox"> <div class="searchbox">
<form action="/search" method="get"> <form action="{$strSearchIndexUrlTemp}" method="get">
<div class="searchbox-inner"> <div class="searchbox-inner">
<input type="text" name="keyword" placeholder="找书" class="searchinput" value=""> <input type="text" name="keyword" placeholder="找书" class="searchinput" value="">
<i class="search-icon"></i> <i class="search-icon"></i>

View File

@@ -89,7 +89,7 @@ class TemplateSeeder
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName} - {strNovelAuthor}- {strNovelCategoryName} - 免费在线阅读 - {strSiteName}', '{strNovelName} - {strNovelAuthor}- {strNovelCategoryName} - 免费在线阅读 - {strSiteName}',
'{strNovelName} - {strNovelAuthor} - {strSiteName} - 免费阅读', '{strNovelName} - {strNovelAuthor} - {strSiteName} - 免费阅读',
'《strNovelName}》strNovelName}全文阅读 - {strNovelCategoryName} - {strSiteName}', '《{strNovelName}》{strNovelName}全文阅读 - {strNovelCategoryName} - {strSiteName}',
'{strNovelName}{strNovelCategoryName} - {strNovelName}阅读 - {strSiteName}', '{strNovelName}{strNovelCategoryName} - {strNovelName}阅读 - {strSiteName}',
'{strNovelName}完整版免费阅读 |{strNovelName}最新章节免费阅读 - {strSiteName}', '{strNovelName}完整版免费阅读 |{strNovelName}最新章节免费阅读 - {strSiteName}',
'{strNovelName}全文免费阅读 | {strNovelName}最新章节更新 - {strSiteName}', '{strNovelName}全文免费阅读 | {strNovelName}最新章节更新 - {strSiteName}',
@@ -117,7 +117,6 @@ class TemplateSeeder
'{strNovelName} - {strNovelAuthor}全集 - {strSiteName}免费小说', '{strNovelName} - {strNovelAuthor}全集 - {strSiteName}免费小说',
'{strNovelName}在线阅读全本 - {strNovelCategoryName} - {strSiteName}', '{strNovelName}在线阅读全本 - {strNovelCategoryName} - {strSiteName}',
'{strNovelName}免费小说章节 - {strNovelAuthor}更新 - {strSiteName}', '{strNovelName}免费小说章节 - {strNovelAuthor}更新 - {strSiteName}',
] ]
], ],
'NOVEL@GETNOVELINFO@KEYWORDS' => [ 'NOVEL@GETNOVELINFO@KEYWORDS' => [
@@ -184,6 +183,29 @@ class TemplateSeeder
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName} {strNovelChapterName} - {strNovelAuthor} - 免费阅读 - {strSiteName}', '{strNovelName} {strNovelChapterName} - {strNovelAuthor} - 免费阅读 - {strSiteName}',
'{strNovelName} {strNovelChapterName} - {strSiteName}', '{strNovelName} {strNovelChapterName} - {strSiteName}',
'「{strNovelName}」第{strNovelChapterSort}章 {strNovelChapterName}最新章节 _ {strNovelChapterName}最新章节列表 - {strSiteName}',
'{strNovelName}_ 第{strNovelChapterSort}章{strNovelChapterName} _ {strNovelName}免费阅读更新 - {strSiteName}',
'{strNovelName}第{strNovelChapterSort}章{strNovelChapterName}{strNovelName}小说免费阅读 - {strSiteName}',
'{strNovelName}免费阅读-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}全集-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}全文阅读-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}无弹窗-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}在线阅读-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}全文免费阅读-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}全集阅读-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}免费阅读全文-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}无弹窗阅读-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'{strNovelName}免费在线阅读-第{strNovelChapterSort}章 {strNovelChapterName}最新章节 - {strSiteName}',
'「{strNovelName}」免费阅读_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」全集_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」全文阅读_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」无弹窗_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」在线阅读_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」全文免费阅读_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」全集阅读_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」免费阅读全文_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」无弹窗阅读_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
'「{strNovelName}」免费在线阅读_第{strNovelChapterSort}章 {strNovelChapterName}最新章节更新 - {strSiteName}',
] ]
], ],
'NOVEL@GETNOVELCHAPTER@KEYWORDS' => [ 'NOVEL@GETNOVELCHAPTER@KEYWORDS' => [
@@ -191,6 +213,15 @@ class TemplateSeeder
'sfg_id' => 17, 'sfg_id' => 17,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName}, {strNovelChapterName}, {strNovelAuthor}, {strSiteKeywords}, 免费阅读, {strSiteName}', '{strNovelName}, {strNovelChapterName}, {strNovelAuthor}, {strSiteKeywords}, 免费阅读, {strSiteName}',
'{strNovelName}, {strNovelAuthor}, {strNovelCategoryName}, {strNovelSex}小说, {strNovelStatus}小说, {strSiteName}, 免费阅读',
'{strNovelName},{strNovelName}免费全文阅读,{strNovelName}免费阅读无弹窗,{strNovelName}下载TXT',
'{strNovelName},{strNovelName}全文阅读,{strNovelName}免费无弹窗,{strNovelName}最新章节目录',
'{strNovelName},{strNovelName}完整版免费阅读,{strNovelName}小说最新章节免费阅读,{strNovelName}免费阅读全文',
'{strNovelName},{strNovelName}全文免费阅读,{strNovelName}最新章节更新,{strNovelName}全文免费',
'{strNovelName},{strNovelName}全文免费,{strNovelName}免费阅读更新,{strNovelName}最新章节',
'{strNovelName},{strNovelName}小说最新章节免费阅读,{strNovelName}免费阅读全文,{strNovelName}全文阅读',
'{strNovelName},{strNovelName}最新章节,{strNovelName}最新章节列表,{strNovelName}最新更新免费阅读',
'{strNovelName},{strNovelName}免费无弹窗,{strNovelName}最新章节目录,{strNovelName}无弹窗',
] ]
], ],
'NOVEL@GETNOVELCHAPTER@DESCRIPTION' => [ 'NOVEL@GETNOVELCHAPTER@DESCRIPTION' => [
@@ -198,6 +229,19 @@ class TemplateSeeder
'sfg_id' => 18, 'sfg_id' => 18,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'{strNovelName}{strNovelChapterName}免费在线阅读,{strNovelAuthor}著。{strChapterDescription},快来{strSiteName}畅读精彩章节!', '{strNovelName}{strNovelChapterName}免费在线阅读,{strNovelAuthor}著。{strChapterDescription},快来{strSiteName}畅读精彩章节!',
'{strSiteName}提供{strNovelName}免费在线阅读,{strNovelAuthor}创作的{strNovelCategoryName}{strNovelStatus}小说,{strNovelDescription},欢迎体验{strSiteDomain}',
'{strSiteName}提供{strNovelName}免费全文阅读,本站支持手机和电脑在线阅读{strNovelName}免费阅读无弹窗,{strNovelName}简介:{strNovelDescription}',
'{strNovelName}资源由{strSiteName}为广大网友收集而来,还免费提供{strNovelName}免费在线阅读,同时还提供{strNovelName}免费全文阅读介绍简介等小说信息。',
'本书又名《{strNovelName}》{strNovelDescription}',
'{strSiteName}提供{strNovelAuthor}最新章节更新,本站支持手机和电脑在线阅读{strNovelName}全文免费,{strNovelName}简介:{strNovelDescription},。',
'{strNovelName}{strNovelAuthor}由{strSiteName}为您提供,包括{strSiteName}下载TXT,{strSiteName}下载,{strNovelDescription}',
'{strSiteName}为广大网友收集《{strNovelName}》全文阅读,{strNovelDescription}',
'【{strSiteName}】为您提供《{strNovelName}》完整版免费阅读【免费无弹窗阅读资源】。该小说由{strNovelAuthor}创作:{strNovelDescription}',
'《{strNovelName}》{strNovelCategoryName}由{strNovelAuthor}创作,讲述了{strNovelDescription}',
'{strSiteName}提供{strNovelName}小说最新章节免费阅读,本站支持手机和电脑在线阅读{strNovelName}免费阅读全文,{strNovelName}简介:{strNovelDescription}',
'{strNovelName}资源由{strSiteName}为广大网友收集而来,还免费提供{strNovelName}最新章节,同时还提供{strNovelName}最新章节列表介绍简介等小说信息。',
'【{strSiteName}】为您提供《{strNovelName}》免费无弹窗【免费无弹窗阅读资源】。该小说由{strNovelAuthor}创作:{strNovelDescription}',
'{strNovelName}全文阅读:{strNovelDescription}',
] ]
], ],
@@ -306,7 +350,7 @@ class TemplateSeeder
'description' => '最新章节特殊页URL 模板1', 'description' => '最新章节特殊页URL 模板1',
'sfg_id' => 33, 'sfg_id' => 33,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/books/{strPinYin}-{intNId}/chapter/latest', '/xiaoshuo/{strPinYin}-{intNId}/chapter/latest',
] ]
], ],
'SEARCH_INFO_URL' => [ 'SEARCH_INFO_URL' => [
@@ -644,35 +688,35 @@ class TemplateSeeder
], ],
// 小说章节 url // 小说章节 url
'CONTENT_INFO_T2' => [ 'CONTENT_INFO_URL_T2' => [
'description' => '内容章节URL 模板2', 'description' => '内容章节URL 模板2',
'sfg_id' => 74, 'sfg_id' => 74,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/novel/{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}', '/novel/{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}',
] ]
], ],
'CONTENT_INFO_T3' => [ 'CONTENT_INFO_URL_T3' => [
'description' => '内容章节URL 模板3', 'description' => '内容章节URL 模板3',
'sfg_id' => 75, 'sfg_id' => 75,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/book/{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}', '/book/{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}',
] ]
], ],
'CONTENT_INFO_T4' => [ 'CONTENT_INFO_URL_T4' => [
'description' => '内容章节URL 模板4', 'description' => '内容章节URL 模板4',
'sfg_id' => 76, 'sfg_id' => 76,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/xiaoshuo-{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}', '/xiaoshuo-{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}',
] ]
], ],
'CONTENT_INFO_T5' => [ 'CONTENT_INFO_URL_T5' => [
'description' => '内容章节URL 模板5', 'description' => '内容章节URL 模板5',
'sfg_id' => 77, 'sfg_id' => 77,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/novel-{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}', '/novel-{strPinYin}-{intNId}/zhang-{intChapterSort}/{intChapterPage}',
] ]
], ],
'CONTENT_INFO_T6' => [ 'CONTENT_INFO_URL_T6' => [
'description' => '内容章节URL 模板6', 'description' => '内容章节URL 模板6',
'sfg_id' => 78, 'sfg_id' => 78,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
@@ -689,35 +733,35 @@ class TemplateSeeder
* '/novel-{strPinYin}-{intNId}/chapter/latest', * '/novel-{strPinYin}-{intNId}/chapter/latest',
* '/book-{strPinYin}-{intNId}/chapter/latest', * '/book-{strPinYin}-{intNId}/chapter/latest',
*/ */
'NEWS_CONTENT_INFO_T2' => [ 'NEWS_CONTENT_INFO_URL_T2' => [
'description' => '最新内容章节URL 模板2', 'description' => '最新内容章节URL 模板2',
'sfg_id' => 79, 'sfg_id' => 79,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/novel/{strPinYin}-{intNId}/chapter/latest', '/novel/{strPinYin}-{intNId}/chapter/latest',
] ]
], ],
'NEWS_CONTENT_INFO_T3' => [ 'NEWS_CONTENT_INFO_URL_T3' => [
'description' => '最新内容章节URL 模板3', 'description' => '最新内容章节URL 模板3',
'sfg_id' => 80, 'sfg_id' => 80,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/book/{strPinYin}-{intNId}/chapter/latest', '/book/{strPinYin}-{intNId}/chapter/latest',
] ]
], ],
'NEWS_CONTENT_INFO_T4' => [ 'NEWS_CONTENT_INFO_URL_T4' => [
'description' => '最新内容章节URL 模板4', 'description' => '最新内容章节URL 模板4',
'sfg_id' => 81, 'sfg_id' => 81,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/xiaoshuo-{strPinYin}-{intNId}/chapter/latest', '/xiaoshuo-{strPinYin}-{intNId}/chapter/latest',
] ]
], ],
'NEWS_CONTENT_INFO_T5' => [ 'NEWS_CONTENT_INFO_URL_T5' => [
'description' => '最新内容章节URL 模板5', 'description' => '最新内容章节URL 模板5',
'sfg_id' => 82, 'sfg_id' => 82,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [
'/novel-{strPinYin}-{intNId}/chapter/latest', '/novel-{strPinYin}-{intNId}/chapter/latest',
] ]
], ],
'NEWS_CONTENT_INFO_T6' => [ 'NEWS_CONTENT_INFO_URL_T6' => [
'description' => '最新内容章节URL 模板6', 'description' => '最新内容章节URL 模板6',
'sfg_id' => 83, 'sfg_id' => 83,
'arrSubjectFomart' => [ 'arrSubjectFomart' => [

View File

@@ -30,6 +30,25 @@
// ); // );
// } catch (err) { } // } catch (err) { }
// })(); // })();
function formatNovelUrl(strPinYin, intNId) {
return strNovelUrlTemp
.replace('{strPinYin}', encodeURIComponent(strPinYin))
.replace('{intNId}', intNId);
}
function formatNovelChapterUrl(strPinYin, intNId, intSort,intPage=0) {
return strNovelChapterUrlTemp
.replace('{strPinYin}', encodeURIComponent(strPinYin))
.replace('{intNId}', intNId)
.replace('{intChapterPage}', intPage)
.replace('{intChapterSort}', intSort);
}
function formatSearchUrl(strKey,intPage=1) {
return strSearchUrlTemp
.replace('{strSearchKeywords}', strKey)
.replace('{intPage}', intPage);
}
function isMobile() { function isMobile() {
@@ -73,31 +92,31 @@ document.addEventListener("DOMContentLoaded", function () {
} }
}); });
}); });
function handleRedirect() { function handleRedirect() {
const { pathname, origin, search } = window.location; const { pathname, origin, search } = window.location;
// Normalize pathname by replacing multiple slashes with a single slash // 规范化路径名,将多个斜杠替换为单个斜杠
const normalizedPath = pathname.replace(/\/+/g, '/'); const normalizedPath = pathname.replace(/\/+/g, '/');
const strCurrentPath = normalizedPath || '/index.html'; const strCurrentPath = normalizedPath || '/index.html';
// Build URL with proper slash handling // 构建URL确保斜杠正确
const buildUrl = (path) => { const buildUrl = (path) => {
// Ensure path starts with a single slash and remove duplicate slashes // 确保路径以单个斜杠开头,并移除多余斜杠
const cleanPath = `/${path.replace(/\/+/g, '/')}`.replace(/^\/+/, '/'); const cleanPath = `/${path.replace(/\/+/g, '/')}`.replace(/^\/+/, '/');
return `${origin}${cleanPath}${search}`; return `${origin}${cleanPath}${search}`;
}; };
if (isMobile()) { if (isMobile()) {
// Mobile logic: Redirect PC paths to mobile paths // 移动端逻辑将PC路径重定向到移动端路径
if (strCurrentPath.startsWith(strPcPath)) { if (strCurrentPath.startsWith(strPcPath)) {
const newPath = strCurrentPath.replace(strPcPath, '') || '/'; const newPath = strCurrentPath.replace(strPcPath, '') || '/';
window.location.href = buildUrl(newPath); window.location.href = buildUrl(newPath);
} }
} else { } else {
// PC logic: Redirect non-PC paths to PC paths // PC端逻辑将非PC路径重定向到PC路径
if (!strCurrentPath.startsWith(strPcPath)) { if (!strCurrentPath.startsWith(strPcPath)) {
const newPath = `${strPcPath}${strCurrentPath === '/' ? '' : strCurrentPath}`; // 确保 PC 首页以斜杠结尾
const newPath = strCurrentPath === '/' ? `${strPcPath}/` : `${strPcPath}${strCurrentPath}`;
window.location.href = buildUrl(newPath); window.location.href = buildUrl(newPath);
} }
} }
@@ -200,13 +219,15 @@ function displayBookshelf() {
const DomBookshelfContainer = document.getElementById('bookshelfMod-head'); const DomBookshelfContainer = document.getElementById('bookshelfMod-head');
const DomBookshelfContainerH5 = document.getElementById('list'); const DomBookshelfContainerH5 = document.getElementById('list');
arrBookshelf.forEach(book => { arrBookshelf.forEach(book => {
console.log(isMobile()) 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)
if (isMobile()) { if (isMobile()) {
const bookElement = document.createElement('li'); const bookElement = document.createElement('li');
bookElement.classList.add('book-shelf'); // 添加类名 bookElement.classList.add('book-shelf'); // 添加类名
bookElement.classList.add('li2'); // 添加类名 bookElement.classList.add('li2'); // 添加类名
bookElement.innerHTML = ` bookElement.innerHTML = `
<a href='/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}'> <a href='${strNovelUrl}'>
<div class="leftImage2 "> <div class="leftImage2 ">
<img class="lazyload-img" src="${book.n_cover_path}" > <img class="lazyload-img" src="${book.n_cover_path}" >
</div> </div>
@@ -218,8 +239,7 @@ function displayBookshelf() {
<span class="spanLi">${book.c_name}</span> <span class="spanLi">${book.c_name}</span>
</span> </span>
<span class="spanLi Time">${book.og_novel_update_time ?? ''}</span> <span class="spanLi Time">${book.og_novel_update_time ?? ''}</span>
<span class="rightJustTime" <span class="rightJustTime" onclick="javascript:window.location.href='${strNovelChapterUrl}';return false;">
onclick="javascript:window.location.href='/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}';return false;">
继续阅读 继续阅读
</span> </span>
</span> </span>
@@ -234,24 +254,24 @@ function displayBookshelf() {
bookElement.classList.add('book-shelf'); // 添加类名 bookElement.classList.add('book-shelf'); // 添加类名
bookElement.innerHTML = ` bookElement.innerHTML = `
<td> <td>
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" > <a href="${strPcPath}${strNovelUrl}" >
<img src="${book.n_cover_path}" > <img src="${book.n_cover_path}" >
</a> </a>
</td> </td>
<td class="t2"> <td class="t2">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" >${book.og_novel_book_name}</a> <a href="${strPcPath}${strNovelUrl}" >${book.og_novel_book_name}</a>
</td> </td>
<td class="t3"> <td class="t3">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" >${book.c_name}</a> <a href="${strPcPath}${strNovelChapterUrl}" >${book.c_name}</a>
</td> </td>
<td class="t4"> <td class="t4">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" >${book.og_novel_author}</a> <a href="${strPcPath}${strSearchUrl}" >${book.og_novel_author}</a>
</td> </td>
<td class="t5">${book.og_novel_update_time}</td> <td class="t5">${book.og_novel_update_time}</td>
<td class="t6">${book.og_novel_status}</td> <td class="t6">${book.og_novel_status}</td>
<td class="t7"> <td class="t7">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" class="goon" >阅读</a> <a href="${strPcPath}${strNovelChapterUrl}" class="goon" >阅读</a>
<i><span class="Collection" ajax-get="" onclick="delBookshelfFun(${book.n_id})">删除</span></i> <i><span class="Collection" ajax-get="" onclick="delBookshelfFun(${book.n_id})">删除</span></i>
</td> </td>
@@ -328,12 +348,15 @@ function displayHistory() {
const DomHistoryContainer = document.getElementById('bookshelfMod-head'); const DomHistoryContainer = document.getElementById('bookshelfMod-head');
const DomBookshelfContainerH5 = document.getElementById('list'); const DomBookshelfContainerH5 = document.getElementById('list');
arrHistory.forEach(book => { 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)
if (isMobile()) { if (isMobile()) {
const bookElement = document.createElement('li'); const bookElement = document.createElement('li');
bookElement.classList.add('book-history'); // 添加类名 bookElement.classList.add('book-history'); // 添加类名
bookElement.classList.add('li2'); // 添加类名 bookElement.classList.add('li2'); // 添加类名
bookElement.innerHTML = ` bookElement.innerHTML = `
<a href='/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}'> <a href='${strNovelUrl}'>
<div class="leftImage2 "> <div class="leftImage2 ">
<img class="lazyload-img" src="${book.n_cover_path}" > <img class="lazyload-img" src="${book.n_cover_path}" >
</div> </div>
@@ -345,8 +368,8 @@ function displayHistory() {
<span class="spanLi">${book.c_name}</span> <span class="spanLi">${book.c_name}</span>
</span> </span>
<span class="spanLi Time">${book.og_novel_update_time ?? ''}</span> <span class="spanLi Time">${book.og_novel_update_time ?? ''}</span>
<span class="rightJustTime" <span class="rightJustTime" onclick="javascript:window.location.href='${strNovelChapterUrl}';return false;"
onclick="javascript:window.location.href='/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}';return false;">继续阅读</span> >继续阅读</span>
</span> </span>
</div> </div>
</a> </a>
@@ -358,24 +381,24 @@ function displayHistory() {
bookElement.classList.add('book-history'); // 添加类名 bookElement.classList.add('book-history'); // 添加类名
bookElement.innerHTML = ` bookElement.innerHTML = `
<td> <td>
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" > <a href="${strPcPath}${strNovelUrl}" >
<img src="${book.n_cover_path}" > <img src="${book.n_cover_path}" >
</a> </a>
</td> </td>
<td class="t2"> <td class="t2">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" >${book.og_novel_book_name}</a> <a href="${strPcPath}${strNovelUrl}" >${book.og_novel_book_name}</a>
</td> </td>
<td class="t3"> <td class="t3">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" >${book.c_name}</a> <a href="${strPcPath}${strNovelChapterUrl}" >${book.c_name}</a>
</td> </td>
<td class="t4"> <td class="t4">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}" >${book.og_novel_author}</a> <a href="${strPcPath}${strSearchUrl}" >${book.og_novel_author}</a>
</td> </td>
<td class="t5">${book.og_novel_update_time ?? ''}</td> <td class="t5">${book.og_novel_update_time ?? ''}</td>
<td class="t6">${book.og_novel_status}</td> <td class="t6">${book.og_novel_status}</td>
<td class="t7"> <td class="t7">
<a href="/pc/xiaoshuo/${book.og_novel_pin_yin}-${book.n_id}/zhang-${book.c_sort_num}" class="goon" >阅读</a> <a href="${strNovelChapterUrl}" class="goon" >阅读</a>
<i><span class="Collection" ajax-get="" onclick="delHistoryFun(${book.n_id})">删除</span></i> <i><span class="Collection" ajax-get="" onclick="delHistoryFun(${book.n_id})">删除</span></i>
</td> </td>

View File

@@ -1,692 +0,0 @@
<?php
declare(strict_types=1);
use app\home\controller\Index;
use app\home\controller\Novel;
use app\home\controller\User;
use think\facade\Route;
/**
* 首页 - h5
*/
Route::get("/", [Index::class, 'index'])->ext('html')->append(['boolIsMobile' => true]);
/**
* 首页 - pc
*/
Route::get("/pc/", [Index::class, 'getPcIndex'])->append(['boolIsMobile' => false]);
Route::get("/web/", [Index::class, 'getPcIndex'])->append(['boolIsMobile' => false]);
Route::get("/desktop/", [Index::class, 'getPcIndex'])->append(['boolIsMobile' => false]);
Route::get("/index/", [Index::class, 'getPcIndex'])->append(['boolIsMobile' => false]);
Route::get("/shouye/", [Index::class, 'getPcIndex'])->append(['boolIsMobile' => false]);
/**
* 排行榜 - h5
*/
Route::get('/paihang/all', [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => true]);
Route::get('/rank/all', [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => true]);
Route::get('/paihang-quan', [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => true]);
Route::get('/top/all', [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => true]);
Route::get('/paihang-bang', [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => true]);
Route::get('/ranks/all', [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => true]);
/**
* 排行榜 - pc
*/
Route::get("/pc/paihang/all", [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => false]);
Route::get("/pc/rank/all", [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => false]);
Route::get("/pc/paihang-quan", [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => false]);
Route::get("/pc/top/all", [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => false]);
Route::get("/pc/paihang-bang", [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => false]);
Route::get("/pc/ranks/all", [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => false]);
/**
* 男生 - h5
*/
Route::get('/nansheng-xiaoshuo', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'boys']);
Route::get('/boys-novel', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'boys']);
Route::get('/nansheng-shu', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'boys']);
Route::get('/man-read', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'boys']);
Route::get('/nansheng-book', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'boys']);
Route::get('/male-novels', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'boys']);
/**
* 男生 - pc
*/
Route::get('/pc/nansheng-xiaoshuo', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'boys']);
Route::get('/pc/boys-novel', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'boys']);
Route::get('/pc/nansheng-shu', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'boys']);
Route::get('/pc/man-read', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'boys']);
Route::get('/pc/nansheng-book', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'boys']);
Route::get('/pc/male-novels', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'boys']);
/**
* 女生 - h5
*/
Route::get('/nvsheng-xiaoshuo', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'girls']);
Route::get('/girls-novel', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'girls']);
Route::get('/nvsheng-shu', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'girls']);
Route::get('/woman-read', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'girls']);
Route::get('/nvsheng-book', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'girls']);
Route::get('/female-novels', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => true, 'strChannel' => 'girls']);
/**
* 女生 - pc
*/
Route::get('/pc/nvsheng-xiaoshuo', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'girls']);
Route::get('/pc/girls-novel', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'girls']);
Route::get('/pc/nvsheng-shu', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'girls']);
Route::get('/pc/woman-read', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'girls']);
Route::get('/pc/nvsheng-book', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'girls']);
Route::get('/pc/female-novels', [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => false, 'strChannel' => 'girls']);
/**
* 书库 h5
*/
Route::get('/shuku/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => true]);
Route::get('/books/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => true]);
Route::get('/library/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => true]);
Route::get('/fenlei/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => true]);
Route::get('/class/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => true]);
Route::get('/category/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => true]);
/**
* 书库 - pc
*/
Route::get('/pc/shuku/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => false]);
Route::get('/pc/books/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => false]);
Route::get('/pc/library/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => false]);
Route::get('/pc/fenlei/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => false]);
Route::get('/pc/class/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => false]);
Route::get('/pc/category/:strGender/:strCategory/:strStatus/page:intPage', [Novel::class, 'getLibrary'])
->pattern([
'strGender' => 'nansheng-xiaoshuo|nvsheng-xiaoshuo|all',
'strCategory' => '[a-z\-]+',
'strStatus' => 'all|lianzai|wanjie',
'intPage' => '\d+'
])
->append(['boolIsMobile' => false]);
/**
* 书库首页-h5
*/
Route::get('/shuku/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => true]);
Route::get('/books/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => true]);
Route::get('/library/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => true]);
Route::get('/fenlei/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => true]);
Route::get('/class/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => true]);
Route::get('/category/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => true]);
/**
* 书库首页-pc
*/
Route::get('/pc/shuku/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => false]);
Route::get('/pc/books/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => false]);
Route::get('/pc/library/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => false]);
Route::get('/pc/fenlei/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => false]);
Route::get('/pc/class/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => false]);
Route::get('/pc/category/all', [Novel::class, 'getLibrary'])->append(['boolIsMobile' => false]);
/**
* 小说章节 - h5
* /xiaoshuo/小说拼音-小说id/zhang-章节排序/章节分页
* /xiaoshuo/小说拼音-小说id/di-章节排序-zhang/章节分页
*/
Route::get('/xiaoshuo/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/novel/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/book/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/xiaoshuo-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/novel-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/book-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
/**
* 小说章节 - pc
*/
Route::get('/pc/xiaoshuo/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/pc/novel/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/pc/book/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/pc/xiaoshuo-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/pc/novel-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
Route::get('/pc/book-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]', [Novel::class, 'getNovelChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
/**
* 最新章节-特殊页面处理-pc
*/
Route::get('/pc/xiaoshuo/:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/novel/:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/book/:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/xiaoshuo-:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/novel-:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/book-:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
/**
* 最新章节-特殊页面处理-h5
*/
Route::get('/xiaoshuo/:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/novel/:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/book/:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/xiaoshuo-:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/novel-:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/book-:name-:n_id/chapter/latest', [Novel::class, 'getNovelLatestChapter'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
/**
* 小说目录页面-h5
* /xiaoshuo/[小说拼音]-[小说id]/mulu/order/[page]
*/
Route::get('/xiaoshuo/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/novel/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/book/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/xiaoshuo/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/novel/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/book/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
/**
* 小说目录页面-pc
*/
Route::get('/pc/xiaoshuo/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/pc/novel/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/pc/book/:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/pc/xiaoshuo-:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/pc/novel-:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
Route::get('/pc/book-:name-:intNovelId/mulu/:strOrder/[:intPage]', [Novel::class, 'getNovelChapterAll'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
/**
* 伪小说详情-pc
*/
Route::get('/pc/kan-xiaoshuo/:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/kan-novel/:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/kan-book/:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/kan-xiaoshuo-:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/kan-novel-:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/kan-book-:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
/**
* 伪小说详情-h5
*/
Route::get('/kan-xiaoshuo/:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/kan-novel/:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/kan-book/:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/kan-xiaoshuo-:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/kan-novel-:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/kan-book-:name-:n_id-:n_forge_id', [Novel::class, 'getKanNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
/**
* 小说详情-pc
* /xiaoshuo/{strPinYin}-{intNId}
* /novel/{strPinYin}-{intNId}
* /book/{strPinYin}-{intNId}
* /xiaoshuo-{strPinYin}-{intNId}
* /novel-{strPinYin}-{intNId}
* /book-{strPinYin}-{intNId}
*/
Route::get('/pc/xiaoshuo/:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/novel/:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/book/:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/xiaoshuo-:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 3])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/novel-:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 3])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/pc/book-:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => false, 'intUriType' => 3])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
/**
* 小说详情-h5
*/
Route::get('/xiaoshuo/:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/novel/:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 2])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/book/:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 1])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/xiaoshuo-:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 3])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/novel-:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 3])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
Route::get('/book-:name-:n_id', [Novel::class, 'getNovelInfo'])
->append(['boolIsMobile' => true, 'intUriType' => 3])
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
/**
* 搜索小说 - h5
*/
Route::get('/search', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => true]);
Route::get('/explore', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => true]);
Route::get('/sousuo', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => true]);
Route::get('/find', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => true]);
Route::get('/query', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => true]);
Route::get('/keywords', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => true]);
/**
* 搜索小说 - pc
*/
Route::get('/pc/search', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => false]);
Route::get('/pc/explore', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => false]);
Route::get('/pc/sousuo', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => false]);
Route::get('/pc/find', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => false]);
Route::get('/pc/query', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => false]);
Route::get('/pc/keywords', [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => false]);
/**
* 小说用户中心 - h5
*/
Route::get('/user', [User::class, 'Index'])->append(['boolIsMobile' => true]);
Route::get('/my-account', [User::class, 'Index'])->append(['boolIsMobile' => true]);
Route::get('/profile', [User::class, 'Index'])->append(['boolIsMobile' => true]);
Route::get('/yonghu', [User::class, 'Index'])->append(['boolIsMobile' => true]);
Route::get('/wode-zhongxin', [User::class, 'Index'])->append(['boolIsMobile' => true]);
Route::get('/personal-center', [User::class, 'Index'])->append(['boolIsMobile' => true]);
/**
* 小说用户中心 - pc
*/
Route::get('/pc/user', [User::class, 'Index'])->append(['boolIsMobile' => false]);
Route::get('/pc/my-account', [User::class, 'Index'])->append(['boolIsMobile' => false]);
Route::get('/pc/profile', [User::class, 'Index'])->append(['boolIsMobile' => false]);
Route::get('/pc/yonghu', [User::class, 'Index'])->append(['boolIsMobile' => false]);
Route::get('/pc/wode-zhongxin', [User::class, 'Index'])->append(['boolIsMobile' => false]);
Route::get('/pc/personal-center', [User::class, 'Index'])->append(['boolIsMobile' => false]);
/**
* 书架 - h5
*/
Route::get('/bookshelf', [User::class, 'getBookShelf'])->append(['boolIsMobile' => true]);
Route::get('/book-shelf', [User::class, 'getBookShelf'])->append(['boolIsMobile' => true]);
Route::get('/reading-shelf', [User::class, 'getBookShelf'])->append(['boolIsMobile' => true]);
Route::get('/shujia', [User::class, 'getBookShelf'])->append(['boolIsMobile' => true]);
Route::get('/yuedu-shujia', [User::class, 'getBookShelf'])->append(['boolIsMobile' => true]);
Route::get('/book-collection', [User::class, 'getBookShelf'])->append(['boolIsMobile' => true]);
/**
* 书架 - pc
*/
Route::get('/pc/bookshelf', [User::class, 'getBookShelf'])->append(['boolIsMobile' => false]);
Route::get('/pc/book-shelf', [User::class, 'getBookShelf'])->append(['boolIsMobile' => false]);
Route::get('/pc/reading-shelf', [User::class, 'getBookShelf'])->append(['boolIsMobile' => false]);
Route::get('/pc/shujia', [User::class, 'getBookShelf'])->append(['boolIsMobile' => false]);
Route::get('/pc/yuedu-shujia', [User::class, 'getBookShelf'])->append(['boolIsMobile' => false]);
Route::get('/pc/book-collection', [User::class, 'getBookShelf'])->append(['boolIsMobile' => false]);
/**
* 历史记录 - h5
*/
Route::get('/history', [User::class, 'getHistory'])->append(['boolIsMobile' => true]);
Route::get('/reading-history', [User::class, 'getHistory'])->append(['boolIsMobile' => true]);
Route::get('/read-record', [User::class, 'getHistory'])->append(['boolIsMobile' => true]);
Route::get('/lishi', [User::class, 'getHistory'])->append(['boolIsMobile' => true]);
Route::get('/yuedu-lishi', [User::class, 'getHistory'])->append(['boolIsMobile' => true]);
Route::get('/browse-past', [User::class, 'getHistory'])->append(['boolIsMobile' => true]);
/**
* 历史记录 - pc
*/
Route::get('/pc/history', [User::class, 'getHistory'])->append(['boolIsMobile' => false]);
Route::get('/pc/reading-history', [User::class, 'getHistory'])->append(['boolIsMobile' => false]);
Route::get('/pc/read-record', [User::class, 'getHistory'])->append(['boolIsMobile' => false]);
Route::get('/pc/lishi', [User::class, 'getHistory'])->append(['boolIsMobile' => false]);
Route::get('/pc/yuedu-lishi', [User::class, 'getHistory'])->append(['boolIsMobile' => false]);
Route::get('/pc/browse-past', [User::class, 'getHistory'])->append(['boolIsMobile' => false]);
// 文章 列表
// Route::get('/article/list-[:intCategoryId]-[:intPage]', [Novel::class, 'getArticleList'])->append(['boolIsMobile' => true]);
// Route::get('/pc/article/list-[:intCategoryId]-[:intPage]', [Novel::class, 'getArticleList'])->append(['boolIsMobile' => false]);
// Route::get('/article/list', [Novel::class, 'getArticleList'])->append(['boolIsMobile' => true]);
// Route::get('/pc/article/list', [Novel::class, 'getArticleList'])->append(['boolIsMobile' => false]);
// // 文章 详情
// Route::get('/article/info-:intArticleId', [Novel::class, 'getArticleInfo'])->append(['boolIsMobile' => true]);
// Route::get('/pc/article/info-:intArticleId', [Novel::class, 'getArticleInfo'])->append(['boolIsMobile' => false]);
//分类 - 其它模板
// Route::get('class', 'Novel/getNovelCategory')->ext('html')->append(['boolIsMobile' => true]);
// Route::get('/pc/class', 'Novel/getNovelCategory')->ext('html')->append(['boolIsMobile' => false]);
// // //分类 使用模板:xmttxs
// // Route::get('/books', 'Novel/getNovelCategory')->ext('html')->append(['boolIsMobile' => true]);
// // Route::get('/pc/books', 'Novel/getNovelCategory')->ext('html')->append(['boolIsMobile' => false]);
// // Route::get('/books/[:intCategoryId]-[:intPage]', 'Novel/getNovelCategory')->ext('html')->append(['boolIsMobile' => true]);
// Route::get('/pc/fenlei/<intCategoryId]-[:intPage]', 'Novel/getNovelCategory')
// ->append(['boolIsMobile' => false])
// ->pattern(['intCategoryId' => '\d+','intPage' => '\d+',])
// ->ext('html');
// if(config('app.default_index_info_isopen')){
// # SEO首页-此为了 那些那详情页做首页推广的站点
// Route::get("/", "Novel/getDetail")->name("Novel@getDetail")->cache('/index.html', 600, 'index');
// // 影视首页
// Route::get("/nindex", "Novel/Index")->name("Novel@Index")->cache('/nindex.html', 600, 'nindex');
// }else{
// Route::get("/", "Novel/Index")->name("Novel@Index")->cache('/index.html', 600, 'index');
// }
// # 定义所有分类路由
// $arrRoutes = [
// # 小说推荐
// [
// 'class'=>[Novel::class,'getRankList'],
// 'name'=>'Novel@getTuijianList',
// 'path'=>[
// [::class,'tj/:intTjdj-[:intPage]'],
// [::class,'tuijian/:intTjdj-[:intPage]'],
// [::class,'recommend/:intTjdj-[:intPage]'],
// [::class,'nice/:intTjdj-[:intPage]'],
// [::class,'good/:intTjdj-[:intPage]'],
// [::class,'推荐/:intTjdj-[:intPage]'],
// ],
// ],
// # 小说分类
// [
// 'class'=>[Novel::class,'getCategoryList'],
// 'name'=>'Novel@getCategoryList',
// 'path'=>[
// [::class,'list/:intCId-:intSort-:intStatus-[:intPage]'],
// [::class,'fenlei/:intCId-:intSort-:intStatus-[:intPage]'],
// [::class,'class/:intCId-:intSort-:intStatus-[:intPage]'],
// [::class,'type/:intCId-:intSort-:intStatus-[:intPage]'],
// [::class,'leixin/:intCId-:intSort-:intStatus-[:intPage]'],
// [::class,'小说分类/:intCId-:intSort-:intStatus-[:intPage]'],
// ],
// ],
// # 小说排行
// [
// 'class'=>[Novel::class,'getNovelRankList'],
// 'name'=>'Novel@getNovelRankList',
// 'path'=>[
// [::class,'paihang/:intCId-:intSort-[:intPage]'],
// [::class,'paihanbang/:intCId-:intSort-[:intPage]'],
// [::class,'rank/:intCId-:intSort-[:intPage]'],
// [::class,'sort/:intCId-:intSort-[:intPage]'],
// [::class,'pb/:intCId-:intSort-[:intPage]'],
// [::class,'排行榜/:intCId-:intSort-[:intPage]'],
// ],
// ],
// # 小说章节
// [
// 'class'=>[Novel::class,'getReader'],
// 'name'=>'Novel@getReader',
// 'path'=>[
// [::class,'xq/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'xiaoshuo/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'novel/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'info/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'shu/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'小说/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'book/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'kan/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'show/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'yuedu/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'see/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// [::class,'相关/:intNovelId/:intZhangJiePaiXu-[:strSort]'],
// ],
// ],
// # 小说详情
// [
// 'class'=>[Novel::class,'getDetail'],
// 'name'=>'Novel@getDetail',
// 'path'=>[
// [::class,'xq/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'xiaoshuo/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'novel/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'info/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'shu/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'小说/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'book/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'kan/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'show/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'yuedu/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'see/:intNovelId-[:intCurrentPage]-[:strSort]'],
// [::class,'相关/:intNovelId-[:intCurrentPage]-[:strSort]'],
// ],
// ],
// # 搜索 - 小说
// [
// [class'=>'Search::class,'getNovel'],
// 'name'=>'Search@getNovel',
// 'path'=>[
// [::class,'search'],
// ],
// ],
// # 书架
// [
// [class'=>'Search::class,'getShujia'],
// [name'=>'Search::class,'getShujia'],
// 'path'=>[
// [::class,'shujia'],
// ],
// ],
// # 收藏
// [
// [class'=>'Search::class,'addSc'],
// [name'=>'Search::class,'addSc'],
// 'path'=>[
// [::class,'sc'],
// ],
// ],
// ];
// // Route::get('/sc', [Novel::class,'addSc'])
// // ->middleware('Throttle:5,60') // 限制 1 分钟内最多 5 次
// // ->name('Novel@addSc');
// # 遍历所有分类,注册路由
// foreach ($arrRoutes as $Routes) {
// foreach ($Routes['path'] as $strPath) {
// Route::get($strPath, $Routes['class'])
// ->name($Routes['name'])
// ->pattern([
// 'intTjdj' => '\d+', # 推荐等级
// 'intPage' => '\d+', # 分页
// 'intCId' => '\d+',
// 'intSort' => '\d+',
// 'intNovelId' => '\d+',
// 'intZhangJiePaiXu' => '\d+',
// 'strSort' => '\w+',
// 'intStatus' => '\d+',
// ])
// ->cache([$strPath, 3600, strtoupper($strPath) . '_PAGE']);
// }
// }