This commit is contained in:
make
2025-04-16 16:32:03 +08:00
parent f63eec8a10
commit 13e3a44cd8
8 changed files with 237 additions and 124 deletions

View File

@@ -113,6 +113,22 @@ abstract class BaseController
View::assign("strHistoryUrlTemp", $strHistoryUrlTemp);
View::assign("strBookShelfUrlTemp", $strBookShelfUrlTemp);
View::assign("strUserUrlTemp", $strUserUrlTemp);
$strTemplatesModel = $this->request->TemplatesModel->t_code;
switch ($strTemplatesModel) {
case 'default':
$arrForgeNovel = [];
View::assign([
'arrForgeNovel' => $arrForgeNovel,
]);
break;
case 'kuangYu':
break;
}
return View::fetch($strTemplate);
}

View File

@@ -139,7 +139,7 @@ class Index extends BaseController
case 'default':
// 默认模板 630zw
// TODO 1.获取所有分类数据,
// 2.然后 每个分类 随机获取 10个小说 ,
// 2.然后 每个分类 随机获取 13个小说 ,
// 3.所有分类数据 放到一个数组里, 前端一个循环渲染,排版都是一样的
$arrAllCategoryNovel = [];

View File

@@ -100,13 +100,13 @@ class Novel extends BaseController
* @param integer $intPage 分页
* @return void
*/
public function getLibrary(Request $Request, $strGender = 'all', $strCategory = 'all', $strStatus = 'all', $intPage = 1)
public function getLibrary(Request $Request, $strGender = 'all', $strCategory = 'all', $strStatus = 'all', $strSort = 'all',$intPage = 1)
{
$boolIsMobile = $Request->param('boolIsMobile');
$strChannel = $Request->param('strChannel') ?? 'all';
$strNanUrlTemp = $this->request->DomainModel->getFomartSubject('NAN_SHENG_URL','',false);
$strNvUrlTemp = $this->request->DomainModel->getFomartSubject('NV_SHENG_URL','',false);
$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);
// 性别
@@ -158,6 +158,40 @@ class Novel extends BaseController
$intLimit = 20;
$intLifeTime = 24 * 3600;
$strTemplatesModel = $Request->TemplatesModel->t_code;
switch ($strTemplatesModel) {
case 'default':
$arrSort = [
['key'=>'all','name'=>'全部'],
['key'=>10,'name'=>'日排行'],
['key'=>11,'name'=>'周排行'],
['key'=>2,'name'=>'月排行'],
['key'=>3,'name'=>'总排行'],
// ['key'=>4,'name'=>'日推荐'],
// ['key'=>5,'name'=>'周推荐'],
// ['key'=>6,'name'=>'月推荐'],
// ['key' => 'shouchang', 'name' => '收藏'],
['key' => 'tuijian', 'name' => '推荐'],
['key' => 'renqi', 'name' => '人气'],
['key' => 'news', 'name' => '最新入库'],
['key' => 'update', 'name' => '最新更新'],
];
// TODO 当前筛选条件(除了分页)随机6条
$arrTopNovel = [];
View::assign([
'arrSort' => $arrSort,
'strSort' => $strSort,
'arrTopNovel' => $arrTopNovel,
]);
break;
case 'kuangYu':
}
$strKey = sprintf("Novel:Library:%s:%s:%s:%s", $intGender, $strSearchCategory, $strSearchStatus, $intPage);
$NovelModel = NovelModel::getInstance();
@@ -170,7 +204,7 @@ class Novel extends BaseController
$strTemplate = 'pc/getLibrary';
}
$strBaseUrl = sprintf('/shuku/%s/%s/%s/page{page}', $strGender, $strCategory, $strStatus);
$strBaseUrl = NovelModel::getNovelCategoryUrl($strGender, $strCategory, $strStatus, '{page}');
$arrPaginator = CusteomPage02::generate($intPage, $arrPage['total'], $intLimit, $strBaseUrl, $intButtomNum);
// 更新值
@@ -402,7 +436,7 @@ class Novel extends BaseController
$arrLatestChapter = $ChapterModel->getLatestChapterByNId($intNId);
// 第一章
$arrFirstChapter = $ChapterModel->getFirstChapterByNId($intNId,false);
$arrFirstChapter = $ChapterModel->getFirstChapterByNId($intNId, false);
$intFirstChapterSort = null;
if ($arrFirstChapter) {
$intFirstChapterSort = $arrFirstChapter['c_sort_num'];
@@ -447,9 +481,9 @@ class Novel extends BaseController
'strNovelDescription' => $arrNovel['n_description'],
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@TITLE',$intForgeId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@KEYWORDS',$intForgeId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@DESCRIPTION',$intForgeId);
$strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@TITLE', $intForgeId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@KEYWORDS', $intForgeId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELINFO@DESCRIPTION', $intForgeId);
$strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -506,7 +540,7 @@ class Novel extends BaseController
$arrLatestChapter = $ChapterModel->getLatestChapterByNId($intNId);
// 第一章
$arrFirstChapter = $ChapterModel->getFirstChapterByNId($intNId,false);
$arrFirstChapter = $ChapterModel->getFirstChapterByNId($intNId, false);
$intFirstChapterSort = null;
if ($arrFirstChapter) {
$intFirstChapterSort = $arrFirstChapter['c_sort_num'];
@@ -551,9 +585,9 @@ class Novel extends BaseController
'strNovelDescription' => $arrNovel['n_description'],
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION',$intNId);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE', $intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS', $intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION', $intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -634,9 +668,9 @@ class Novel extends BaseController
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@DESCRIPTION',$intNId);
$strTitleTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@TITLE', $intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@KEYWORDS', $intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject('NOVEL@GETNOVELCHAPTER@DESCRIPTION', $intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -722,9 +756,9 @@ class Novel extends BaseController
'strNovelChapterSort' => $arrChapter['c_sort_num'],
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION',$intNId);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE', $intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS', $intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION', $intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -806,9 +840,9 @@ class Novel extends BaseController
'strNovelDescription' => $arrNovel['n_description'],
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE',$intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS',$intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION',$intNId);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE', $intNId);
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS', $intNId);
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION', $intNId);
$strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
@@ -877,7 +911,7 @@ class Novel extends BaseController
// $strSearchInfoUrlTemp = $Request->DomainModel->getFomartSubject('SEARCH_INFO_URL','',false);
// $strBaseUrl = sprintf('/search.html?keyword=%s&page={page}', $strSearchKeywords);
$strBaseUrl = NovelModel::getNovelSearchUrl($strSearchKeywords,'{page}');
$strBaseUrl = NovelModel::getNovelSearchUrl($strSearchKeywords, '{page}');
$arrPaginator = CusteomPage02::generate($intPage, $arrPage['total'], $intLimit, $strBaseUrl, $intButtomNum);
// 更新值

View File

@@ -1,11 +1,36 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="title"}{$strTitle??''}{/block}
{block name="keywords"}{$strKeywords??''}{/block}
{block name="description"}{$strDescription??''}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$strTitle??''}" />
<meta property="og:description" content="{$strDescription??''}" />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="book" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://{$DomainModel->d_domain}",
"@type": "book",
"name": "{$DomainModel->d_name}",
"headline": "{$strTitle??''}",
"description": "{$strDescription??''}",
"datePublished": "{:date('Y-m-d')}"
"url": "https://{$DomainModel->d_domain}",
"potentialAction": {
"@type": "SearchAction",
"target": 'https://https://{$DomainModel->d_domain}{site:souurl key="search_term_string" p="1"/}',
"query-input": "required name=search_term_string"
}
}
</script>
{/block}
{block name="head-js"}{/block}
{block name='nav-active-class'}home{/block}
{block name='head-name'}630{/block}
{block name='head-href'}/{/block}

View File

@@ -3,88 +3,121 @@
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
<h1 class="logo">
<a href="/">狂雨小说</a>/书库
</h1>
{/block}
{block name="body-class"}novel_home{/block}
{block name='head-name'}{$DomainModel->d_name}{/block}
{block name='head-href'}/{/block}
{block name="main"}
<div class="wrap">
<!-- book-nav -->
<div class="mod mod-nav">
<div id="book-nav" class="book-nav">
<ul class="clearfix">
<li class="on"><a href="/shuku.html" title="全部">全部</a></li>
<li><a href="/shuku/boys------.html" title="男生">男生</a></li>
<li><a href="/shuku/girls------.html" title="女生">女生</a></li>
</ul>
</div>
<div id="book-nav" class="book-nav">
<ul class="clearfix">
<li class="on"><a href="/shuku.html" title="全部">全部</a></li>
<li><a href="/shuku/-1-----.html" btn="search_category">都市修仙</a></li>
<li><a href="/shuku/-2-----.html" btn="search_category">玄幻修真</a></li>
<li><a href="/shuku/-3-----.html" btn="search_category">玄幻修真</a></li>
<li><a href="/shuku/-4-----.html" btn="search_category">玄幻修真</a></li>
</ul>
</div>
<div id="book-nav" class="book-nav">
<ul class="clearfix">
<li class="on"><a href="/shuku.html" title="全部">全部</a></li>
<li><a href="/shuku/--update----.html" btn="search_category">连载</a></li>
<li><a href="/shuku/--end----.html" btn="search_category">完本</a></li>
</ul>
</div>
<div id="book-nav" class="book-nav">
<ul class="clearfix">
<li class="on"><a href="/shuku.html" title="全部">全部</a></li>
<li><a href="/shuku/---30---.html" btn="search_category">30万字以下</a></li>
<li><a href="/shuku/---50---.html" btn="search_category">30-50万字</a></li>
<li><a href="/shuku/---100---.html" btn="search_category">50-100万字</a></li>
<li><a href="/shuku/---200---.html" btn="search_category">100-200万字</a></li>
<li><a href="/shuku/---201---.html" btn="search_category">200万字以上</a></li>
</ul>
</div>
<div id="book-nav" class="book-nav">
<ul class="clearfix">
<li class="on"><a href="/shuku.html" title="全部">全部</a></li>
<li><a href="/shuku/----3day--.html" btn="search_category">三日内</a></li>
<li><a href="/shuku/----7day--.html" btn="search_category">七日内</a></li>
<li><a href="/shuku/----halfmoon--.html" btn="search_category">半月内</a></li>
<li><a href="/shuku/----moon--.html" btn="search_category">一月内</a></li>
</ul>
</div>
<div id="book-nav" class="book-nav">
<ul class="clearfix">
<li><a class="on" href="/shuku.html">默认</a></li>
<li><a href="/shuku/-----click-.html">热度</a></li>
<li><a href="/shuku/-----updatetime-.html">更新时间</a></li>
<li><a href="/shuku/-----word-.html" btn="search_params" data-key="order" data-val="char">字数</a>
</li>
</ul>
</div>
</div>
<div class="mod new-book">
<div class="book-list">
<ul class="clearfix">
<div class="navpf">
<nav class="sortChannel_nav">
<a class="on">分类:</a>
<a class='{eq name="strCategory" value="all"}on on2 {/eq}'
href='{site:nflurl gender="$strGender" category="all" status="$strStatus" sort="$strSort" page="$intPage"/}'>全部</a>
{foreach $arrNovel as $category}
{include file="Public/novelListH" /}
{/foreach}
{foreach $arrCategoryAll.man as $key=>$vo }
<a class='{eq name="strCategory" value="$vo"}on on2 {/eq}'
href='{site:nflurl gender="$strGender" category="$key" status="$strStatus" sort="$strSort" page="$intPage"/}'>{$vo}</a>
{/foreach}
{foreach $arrCategoryAll.women as $key=>$vo }
<a class='{eq name="strCategory" value="$vo"}on on2 {/eq}'
href='{site:nflurl gender="$strGender" category="$key" status="$strStatus" sort="$strSort" page="$intPage"/}'>{$vo}</a>
{/foreach}
</ul>
</div>
<div class="pages">
<ul class="pager">
<li class="disabled"><span>«</span></li>
<li><a href="/all.html?page=2">»</a></li>
</ul>
</div>
</div>
<!-- hot-book -->
</nav>
<nav class="sortChannel_nav">
<a class="on">排序:</a>
{foreach $arrSort as $key=>$Sort }
<a href='{site:nflurl gender="$strGender" category="$strCategory" status="$strStatus" sort="$Sort.key" page="$intPage"/}'
class='{eq name="strSort" value="$Sort.key"}on on2 {/eq}'>{$Sort.name}</a>
{/foreach}
</nav>
<nav class="sortChannel_nav">
<a class="on">状态:</a>
<a href='{site:nflurl gender="$strGender" category="$strCategory" status="all" sort="$strSort" page="$intPage"/}'
class='{eq name="strStatus" value="all"}on on2 {/eq}' btn="search_category">全部</a>
<a href='{site:nflurl gender="$strGender" category="$strCategory" status="lianzai" sort="$strSort" page="$intPage"/}'
class='{eq name="strStatus" value="lianzai"}on on2 {/eq}' btn="search_category">连载</a>
<a href='{site:nflurl gender="$strGender" category="$strCategory" status="wanjie" sort="$strSort" page="$intPage"/}'
class='{eq name="strStatus" value="wanjie"}on on2 {/eq}' btn="search_category">完本</a>
</nav>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>更新列表</span></h3>
<ul class="sort_list">
{foreach $arrNovel as $key=>$Novel }
<li>
<span class="s1">[{$Novel.n_category}]</span>
<span class="s2">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
data-toggle="tooltip" data-placement="right" title="{$Novel.n_name}">
{$Novel.n_name}
</a>
</span>
<span class="s4">{$Novel.n_author}</span>
<span class="s5">{$Novel.n_update_time|date='m-d'}</span>
</li>
{/foreach}
</ul>
</div>
<div class="row sort_page_num">
{volist name="arrPaginator" id="vo" key="k"}
{switch $vo.label}
{case value="上一页"}
{if $intPage == 1}
<span>«</span>
{else}
<a href="{$vo.url}">«</a>
{/if}
{/case}
{case value="下一页"}
{if $intPage >= $intTotalPage}
<span>»</span>
{else}
<a href="{$vo.url}">»</a>
{/if}
{/case}
{default /}
{if preg_match('/^\d+$/', $vo.label)}
<a href="{$vo.url}">{$vo.label}</a>
{/if}
{/switch}
{/volist}
</div>
<div class="wrap-box">
<h3 class="wrap-title">
<span>封面推荐</span>
</h3>
<div class="rec-focus">
{foreach $arrTopNovel as $key=>$Novel }
<dl class="rec-focus-book">
<dt class="book-img">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<img height="100" width="80" class="lazyload-img" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</dt>
<dd class="book-info">
<h2>
<a href='{$strPcPath}{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}
</div>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -43,8 +43,8 @@
<!-- <li><a href="/">首 页</a></li>
<li><a href="/nindex">小说首页</a></li> -->
<li><a href="/">首 页</a></li>
<li><a href="//0-0-0-1.html">小说分类</a></li>
<li><a href="/shujia">阅读记录</a></li>
<li><a href="{$strCategoryIndexUrlTemp}">小说分类</a></li>
<li><a href="{$strHistoryUrlTemp}">阅读记录</a></li>
</ul>
</div>
<div class="clear"></div>
@@ -58,17 +58,21 @@
{block name="main"} {/block}
<div class="novel_search">
<form id="novel_search" class="search-form" method="post" action="{$strSearchIndexUrlTemp}"><input type="text"
class="input-text input-key" name="keyword" placeholder="输入书名/作者进行搜索"><button type="submit"
class="btn-tosearch" form="novel_search" value="submit">搜 索</button></form>
<form id="novel_search" class="search-form" method="post" action="{$strSearchIndexUrlTemp}">
<input type="text"
class="input-text input-key" name="keyword" placeholder="输入书名/作者进行搜索">
<button type="submit"
class="btn-tosearch" form="novel_search" value="submit">搜 索</button>
</form>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>最新标签</span></h3>
<h3 class="wrap-title">
<span>最新标签</span>
</h3>
<div class="rec-focus" style="font-size:12px;">
{foreach $arrRecommendNovel as $key=>$vo }
<a href="/">{$vo.n_name}</a>&nbsp;&nbsp;
{foreach $arrForgeNovel as $key=>$Novel }
<a href="/">{$Novel.n_name}</a>&nbsp;&nbsp;
{/foreach}
<a href="/sitemap_index.xml">XML地图</a>&nbsp;&nbsp;
</div>
@@ -79,9 +83,9 @@
<div class="footer">
<ul>
<li><a href="/">网站首页</a></li>
<li><a href="/0-0-0-1.html">小说分类</a></li>
<li><a href="{$strCategoryIndexUrlTemp}">小说分类</a></li>
<li><a href="/sitemap_index.xml">XML地图</a></li>
<li><a href="/shujia">阅读记录</a></li>
<li><a href="{$strHistoryUrlTemp}">阅读记录</a></li>
</ul>
</div>
@@ -89,7 +93,7 @@
<script src="/template/default/h5/js/jquery.min.js"></script>
<script src="/public/layer/layer.js" type="module" charset="utf-8"></script>
<script src="/template/default/h5/js/common.js"></script>
<script src="/template/default/js/index.js"></script>
<script src="/template/default/js/common.js"></script>
{block name="customize"}

View File

@@ -82,10 +82,11 @@
</div>
</div>
<div id="shuqian"></div>
<script src="/static/001/pc/js/jquery.min.js"></script>
<script src="/assets/vendor/layer/layer.js" type="module" charset="utf-8"></script>
<script src="/static/001/pc/js/common.js"></script>
<script src="/static/001/js/index.js"></script>
<script src="/template/default/pc/js/jquery.min.js"></script>
<script src="/public/layer/layer.js" type="module" charset="utf-8"></script>
<script src="/template/default/pc/js/common.js"></script>
<script src="/template/default/js/common.js"></script>
{block name="customize"}

View File

@@ -98,7 +98,7 @@ c{clear: both;display: none;}
.sortChannelG_nav a.on{color:#ff77a5;}
.sortChannelP_nav a.on{color:#67c3a6;}
.sortChannel_nav{padding-left:115px;border-bottom: 1px solid #FBFBFB;}
.sortChannel_nav{padding-left:80px;border-bottom: 1px solid #FBFBFB;}
.sortChannel_nav a.on{color:#C3C3C3}
.sortChannel_nav a.on2{left:45px;color:#03a9f4;}