This commit is contained in:
make
2025-04-21 17:47:12 +08:00
parent 24cef96a26
commit 7ef217c1b9
523 changed files with 0 additions and 93250 deletions

View File

@@ -1 +0,0 @@
deny from all

View File

@@ -1,22 +0,0 @@
<?php
declare (strict_types = 1);
namespace app;
use think\Service;
/**
* 应用服务类
*/
class AppService extends Service
{
public function register()
{
// 服务注册
}
public function boot()
{
// 服务启动
}
}

View File

@@ -1,58 +0,0 @@
<?php
namespace app;
use think\db\exception\DataNotFoundException;
use think\db\exception\ModelNotFoundException;
use think\exception\Handle;
use think\exception\HttpException;
use think\exception\HttpResponseException;
use think\exception\ValidateException;
use think\Response;
use Throwable;
/**
* 应用异常处理类
*/
class ExceptionHandle extends Handle
{
/**
* 不需要记录信息(日志)的异常类列表
* @var array
*/
protected $ignoreReport = [
HttpException::class,
HttpResponseException::class,
ModelNotFoundException::class,
DataNotFoundException::class,
ValidateException::class,
];
/**
* 记录异常信息(包括日志或者其它方式记录)
*
* @access public
* @param Throwable $exception
* @return void
*/
public function report(Throwable $exception): void
{
// 使用内置的方式记录异常日志
parent::report($exception);
}
/**
* Render an exception into an HTTP response.
*
* @access public
* @param \think\Request $request
* @param Throwable $e
* @return Response
*/
public function render($request, Throwable $e): Response
{
// 添加自定义异常处理机制
// 其他错误交给系统处理
return parent::render($request, $e);
}
}

View File

@@ -1,8 +0,0 @@
<?php
namespace app;
// 应用请求对象类
class Request extends \think\Request
{
}

View File

@@ -1,36 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin;
use app\model\AdminUserModel;
use app\admin\service\AdminUserAuth;
use app\Request;
use think\Container;
class AdminServiceProvider extends \think\Service
{
/**
* 注册服务
*
* @return mixed
*/
public function register()
{
Container::getInstance()->bind(AdminUserModel::class, function (Request $Request) {
return AdminUserModel::getUserByToken($Request->header("admin-token"));
});
}
/**
* 执行服务
*
* @return mixed
*/
public function boot()
{
//
}
}

View File

@@ -1,107 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin;
use app\admin\middleware\AdminResponse;
use think\App;
use think\exception\ValidateException;
use think\Validate;
/**
* 控制器基础类
*/
abstract class BaseController
{
/**
* Request实例
* @var \think\Request
*/
protected $request;
/**
* 应用实例
* @var \think\App
*/
protected $app;
/**
* 是否批量验证
* @var bool
*/
protected $batchValidate = false;
/**
* 控制器中间件
* @var array
*/
protected $middleware = [];
/**
* 构造方法
* @access public
* @param App $app 应用对象
*/
public function __construct(App $app)
{
$this->app = $app;
$this->request = $this->app->request;
// 控制器初始化
$this->initialize();
}
// 初始化
protected function initialize()
{
}
/**
* 验证数据
* @access protected
* @param array $data 数据
* @param string|array $validate 验证器名或者验证规则数组
* @param array $message 提示信息
* @param bool $batch 是否批量验证
* @return array|string|true
* @throws ValidateException
*/
protected function validate(array $data, $validate, array $message = [], bool $batch = false)
{
if (is_array($validate)) {
$v = new Validate();
$v->rule($validate);
} else {
if (strpos($validate, '.')) {
// 支持场景
[$validate, $scene] = explode('.', $validate);
}
$class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
$v = new $class();
if (!empty($scene)) {
$v->scene($scene);
}
}
$v->message($message);
// 是否批量验证
if ($batch || $this->batchValidate) {
$v->batch(true);
}
return $v->failException(true)->check($data);
}
public function success($arrData = [], $strMsg = "", $strCode = "1000")
{
return AdminResponse::create($strCode, $strMsg, $arrData);
}
public function error($strCode = "9999", $strMsg = "", $arrData = [])
{
return AdminResponse::create($strCode, $strMsg, $arrData);
}
}

View File

@@ -1,2 +0,0 @@
<?php
// 这是系统自动生成的公共文件

View File

@@ -1,38 +0,0 @@
<?php
declare(strict_types=1);
return [
#用户组
'1000' => '成功',
'1001' => '用户不存在!',
'1002' => '密码错误!',
'1003' => '用户名不能为空!',
'1004' => '密码不能为空!',
#权限节点组
'1011' => '权限节点路径不能为空!',
'1012' => '权限节点名不能为空!',
'1013' => '权限节点是否显示不能为空!',
'1014' => '权限节点ID不能为空',
'1015' => '权限节点集合不能为空!',
'1016' => '该部门下存在成员无法删除!',
'1017' => '角色名不能为空!',
'1018' => '角色ID不能为空',
#其他组
'9900' => '参数错误!',
'9901' => '获取PHP程序位置失败',
'9991' => '你没有这个权限!',
'9992' => '远程密钥错误!',
'9993' => '未查询到相关数据!',
'9994' => '信息输入有误!',
'9995' => '请先登录!',
'9996' => '无效令牌!',
'9997' => '地址错误!',
'9998' => '请求对象未定义!',
'9999' => '系统异常!',
];

View File

@@ -1,66 +0,0 @@
<?php
declare(strict_types=1);
use app\admin\controller\AdminUser;
use app\admin\controller\Domain;
use app\admin\controller\Novel;
use app\admin\controller\Site;
use app\admin\controller\SystemConfig;
use app\admin\middleware\AdminAuth;
use think\facade\Route;
Route::group("/guest", function () {
Route::post("/login", "Guest/Login")->name("Guest@Login");
Route::post("/logout", "Guest/Logout")->name("Guest@Logout");
});
# 系统配置
Route::group("/system", function () {
Route::get("/user/info", [AdminUser::class, "info"])->name("AdminUser@info");
Route::get("/user/list", [AdminUser::class, "getAdminUserList"])->name("AdminUser@getAdminUserList");
Route::post("/user/save", [AdminUser::class, "saveAdminUser"])->name("AdminUser@saveAdminUser");
Route::post("/user/del", [AdminUser::class, "delAdminUser"])->name("AdminUser@delAdminUser");
Route::get("/config/list", [SystemConfig::class, "getSystemConfigList"])->name("SystemConfig@getSystemConfigList");
Route::post("/config/save", [SystemConfig::class, "saveSystemConfig"])->name("SystemConfig@saveSystemConfig");
Route::get("/cjpz/list", [SystemConfig::class, "getCaiJiPeiZhiList"])->name("SystemConfig@getCaiJiPeiZhiList");
Route::post("/cjpz/save", [SystemConfig::class, "saveCaiJiPeiZhi"])->name("SystemConfig@saveCaiJiPeiZhi");
Route::get("/plan/list", [SystemConfig::class, "getPlanTaskList"])->name("SystemConfig@getPlanTaskList");
Route::post("/plan/save", [SystemConfig::class, "savePlanTask"])->name("SystemConfig@savePlanTask");
Route::post("/cache/flush", [SystemConfig::class, "flushCache"])->name("SystemConfig@flushCache");
})->middleware(AdminAuth::class);
# 小说
Route::group("/novel", function () {
Route::get("/list", [Novel::class, "getNovelList"])->name("Domain@getNovelList");
Route::post("/level/set", [Novel::class, "updateNovelLevel"])->name("Novel@updateNovelLevel");
Route::get("/category/list", [Novel::class, "getCategory"])->name("Domain@getCategory");
})->middleware(AdminAuth::class);
# 站点
Route::group("/site", function () {
# 域名管理
Route::get("/domain/list", [Site::class, "getDomainList"])->name("Site@getDomainList");
Route::post("/domain/upload", [Site::class, "uploadDomain"])->name("Site@uploadDomain");
Route::post("/domain/save", [Site::class, "saveDomain"])->name("Site@saveDomain");
# TKD 参数模板
Route::get("/tkdarg/list", [Site::class, "getTKDArgList"])->name("Site@getTKDArgList");
# 视图模板
Route::get("/template/list", [Site::class, "getTemplateList"])->name("Site@getTKDArgList");
# 替换模板管理
Route::get("/subject/fomart/group/list", [Site::class, "getSubjectFomartGroupList"])->name("Site@getSubjectFomartGroupList");
Route::post("/subject/fomart/group/save", [Site::class, "saveSubjectFomartGroup"])->name("Site@saveSubjectFomartGroup");
Route::post("/subject/fomart/group/del", [Site::class, "delSubjectFomartGroup"])->name("Site@delSubjectFomartGroup");
Route::get("/subject/fomart/list", [Site::class, "getSubjectFomartList"])->name("Site@getSubjectFomartList");
Route::post("/subject/fomart/save", [Site::class, "saveSubjectFomart"])->name("Site@saveSubjectFomart");
Route::post("/subject/fomart/del", [Site::class, "delSubjectFomart"])->name("Site@delSubjectFomart");
})->middleware(AdminAuth::class);

View File

@@ -1,153 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\admin\service\AdminUserAuth;
use app\Request;
use think\facade\Cache;
use think\Response;
class AdminUser extends BaseController
{
/**
* 详情
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function info(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrResult = [
'admin_user' => $AdminUserModel,
];
return $this->success($arrResult);
}
/**
* 列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getAdminUserList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$AdminUserModel = AdminUserModel::alias('au');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$AdminUserModel->where(function ($AdminUserModel) use ($strKey) {
$AdminUserModel->whereOr([
['au.au_name', 'like', "%" . $strKey . "%"],
['au.au_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $AdminUserModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置管理员
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveAdminUser(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"au_id" => $Request->post('au_id'),
"au_status" => $Request->post('au_status'),
"au_name" => $Request->post('au_name'),
"au_pwd" => $Request->post('au_pwd'),
];
$arrRule = [
// 'au_id' => 'require',
'au_status' => 'require',
'au_name' => 'require',
];
$this->validate($arrData, $arrRule);
if ($arrData['au_id'] == NULL) {
$AdminUserModel = new AdminUserModel;
} else {
$AdminUserModel = AdminUserModel::where('au_id', $arrData['au_id'])->find();
if (empty($AdminUserModel)) {
return $this->error('9993');
}
}
if (isset($arrData['au_pwd']) && !empty($arrData['au_pwd'])) {
$arrData['au_pwd'] = md5($arrData['au_pwd']);
} else {
unset($arrData['au_pwd']);
}
$AdminUserModel->fill($arrData);
$AdminUserModel->save();
return $this->success();
}
/**
* 删除管理员
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function delAdminUser(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"au_id" => $Request->post('au_id'),
];
$arrRule = [
'au_id' => 'require',
];
$this->validate($arrData, $arrRule);
$arrData['au_id'] = explode(',', $arrData['au_id']);
AdminUserModel::whereIn('au_id', $arrData['au_id'])->delete();
return $this->success();
}
}

View File

@@ -1,359 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\model\FenLeiModel;
use app\model\GuangGaoFenZuModel;
use app\model\GuangGaoModel;
use app\model\GuangGaoPeiZhiModel;
use app\model\NvYouModel;
use app\model\ShiPinModel;
use app\Request;
use think\Response;
class GuangGao extends BaseController
{
/**
* 廣告分組列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getGuangGaoFenZuList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$GuangGaoFenZuModel = GuangGaoFenZuModel::alias('ggfz');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$GuangGaoFenZuModel->where(function ($GuangGaoFenZuModel) use ($strKey) {
$GuangGaoFenZuModel->whereOr([
['ggfz.ggfz_name', 'like', "%" . $strKey . "%"],
['ggfz.ggfz_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $GuangGaoFenZuModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置广告分组
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveGuangGaoFenZu(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"ggfz_id" => $Request->post('ggfz_id'),
"ggfz_code" => $Request->post('ggfz_code'),
"ggfz_name" => $Request->post('ggfz_name'),
];
$arrRule = [
// 'ggfz_id' => 'require',
'ggfz_code' => 'require',
'ggfz_name' => 'require',
];
$this->validate($arrData, $arrRule);
if ($arrData['ggfz_id'] == NULL) {
$GuangGaoFenZuModel = new GuangGaoFenZuModel;
} else {
$GuangGaoFenZuModel = GuangGaoFenZuModel::where('ggfz_id', $arrData['ggfz_id'])->find();
if (empty($GuangGaoFenZuModel)) {
return $this->error('9993');
}
}
$GuangGaoFenZuModel->fill($arrData);
$GuangGaoFenZuModel->save();
GuangGaoModel::flushCache();
return $this->success();
}
/**
* 删除广告分组
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function delGuangGaoFenZu(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"ggfz_id" => $Request->post('ggfz_id'),
];
$arrRule = [
'ggfz_id' => 'require',
];
$this->validate($arrData, $arrRule);
$arrData['ggfz_id'] = explode(',', $arrData['ggfz_id']);
GuangGaoFenZuModel::whereIn('ggfz_id', $arrData['ggfz_id'])->delete();
GuangGaoModel::whereIn('ggfz_id', $arrData['ggfz_id'])->delete();
GuangGaoModel::flushCache();
return $this->success();
}
/**
* 列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getGuangGaoList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
"ggfz_id" => $Request->get('ggfz_id'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$GuangGaoModel = GuangGaoModel::alias('gg')
->leftJoin('guang_gao_fen_zu ggfz', 'ggfz.ggfz_id = gg.ggfz_id')
->field(['gg.*', 'ggfz.ggfz_name'])
->order('ggfz.ggfz_id','desc')
->order('gg.gg_sort','desc');
if ($arrData['ggfz_id'] !== NULL) {
$GuangGaoModel = $GuangGaoModel->where('gg.ggfz_id', $arrData['ggfz_id']);
}
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$GuangGaoModel->where(function ($GuangGaoModel) use ($strKey) {
$GuangGaoModel = $GuangGaoModel->whereOr([
['gg.gg_wen_zi', 'like', "%" . $strKey . "%"],
['gg.gg_id', 'like', "%" . $strKey . "%"],
['ggfz.ggfz_name', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $GuangGaoModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置广告
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveGuangGao(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"gg_id" => $Request->post('gg_id'),
"ggfz_id" => $Request->post('ggfz_id'),
"gg_lei_xing" => $Request->post('gg_lei_xing'),
"gg_tu_pian" => $Request->post('gg_tu_pian'),
"gg_wen_zi" => $Request->post('gg_wen_zi'),
"gg_tiao_zhuan_di_zhi" => $Request->post('gg_tiao_zhuan_di_zhi'),
"gg_sort" => $Request->post('gg_sort'),
"gg_status" => $Request->post('gg_status'),
];
$arrRule = [
// 'gg_id' => 'require',
'ggfz_id' => 'require',
'gg_lei_xing' => 'require',
'gg_status' => 'require',
];
$this->validate($arrData, $arrRule);
if ($arrData['gg_id'] == NULL) {
$GuangGaoModel = new GuangGaoModel;
} else {
$GuangGaoModel = GuangGaoModel::where('gg_id', $arrData['gg_id'])->find();
if (empty($GuangGaoModel)) {
return $this->error('9993');
}
}
$GuangGaoModel->fill($arrData);
$GuangGaoModel->save();
GuangGaoModel::flushCache();
return $this->success();
}
/**
* 删除广告
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function delGuangGao(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"gg_id" => $Request->post('gg_id'),
];
$arrRule = [
'gg_id' => 'require',
];
$this->validate($arrData, $arrRule);
$arrData['gg_id'] = explode(',', $arrData['gg_id']);
GuangGaoModel::whereIn('gg_id', $arrData['gg_id'])->delete();
GuangGaoModel::flushCache();
return $this->success();
}
/**
* 广告配置列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getGuangGaoPeiZhiList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$GuangGaoPeiZhiModel = GuangGaoPeiZhiModel::alias('ggpz');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$GuangGaoPeiZhiModel->where(function ($GuangGaoPeiZhiModel) use ($strKey) {
$GuangGaoPeiZhiModel->whereOr([
['ggpz.ggpz_code', 'like', "%" . $strKey . "%"],
['ggpz.ggpz_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $GuangGaoPeiZhiModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置广告配置
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveGuangGaoPeiZhi(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"ggpz_id" => $Request->post('ggpz_id'),
"ggpz_val" => $Request->post('ggpz_val'),
];
$arrRule = [
'ggpz_id' => 'require',
'ggpz_val' => 'require',
];
$this->validate($arrData, $arrRule);
$GuangGaoPeiZhiModel = GuangGaoPeiZhiModel::where('ggpz_id', $arrData['ggpz_id'])->find();
if (empty($GuangGaoPeiZhiModel)) {
return $this->error('9993');
}
$GuangGaoPeiZhiModel->fill($arrData);
$GuangGaoPeiZhiModel->save();
GuangGaoPeiZhiModel::flushCache();
return $this->success();
}
}

View File

@@ -1,70 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\admin\service\AdminUserAuth;
use app\Request;
use think\facade\Cache;
use think\Response;
class Guest extends BaseController
{
/**
* 登录
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function Login(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"au_name" => $Request->post('au_name'),
"au_pwd" => $Request->post('au_pwd'),
];
$arrRule = [
'au_name' => 'require|max:25',
'au_pwd' => 'require|min:6',
];
$this->validate($arrData, $arrRule);
$arrData['au_pwd'] = md5(trim($arrData['au_pwd']));
$AdminUserModel = AdminUserModel::where('au_name', $arrData['au_name'])
->where('au_pwd', $arrData['au_pwd'])
->where('au_status', 0)
->find();
if (empty($AdminUserModel)) {
return $this->error("1002");
}
$arrResult = [
'admin-token' => $AdminUserModel->createToken(),
];
return $this->success($arrResult);
}
/**
* 退出
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function Logout(Request $Request, ?AdminUserModel $AdminUserModel)
{
$strToken = $Request->header("admin-token");
if ($strToken) {
Cache::delete($strToken);
}
}
}

View File

@@ -1,12 +0,0 @@
<?php
declare (strict_types = 1);
namespace app\admin\controller;
class Index
{
public function index()
{
return '您好!这是一个[admin]示例应用';
}
}

View File

@@ -1,113 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\model\CategoryModel;
use app\model\FenLeiModel;
use app\model\GuangGaoFenZuModel;
use app\model\GuangGaoModel;
use app\model\GuangGaoPeiZhiModel;
use app\model\NovelModel;
use app\model\NvYouModel;
use app\model\ShiPinModel;
use app\Request;
use think\Response;
class Novel extends BaseController
{
/**
* 根据关键词修改小说评级
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function updateNovelLevel(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"keywords" => $Request->post('keywords'),
"n_level" => (int)$Request->post('n_level'),
];
$arrRule = [
'keywords' => 'require',
'n_level' => 'require',
];
$this->validate($arrData, $arrRule);
$arrKeywords = explode(',', $arrData['keywords']);
$NovelModel = NovelModel::getInstance();
$NovelModel->updateByKeywords($arrKeywords, $arrData['n_level']);
return $this->success();
}
/**
* 小说分页
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getNovelList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$intPage = $Request->param('page', 1, 'intval');
$intLimit = $Request->param('limit', 10, 'intval');
try {
$NovelModel = NovelModel::getInstance();
$Col = $NovelModel->getCol();
// 查询条件(可选)
$arrFilter = [];
// 示例:如果需要筛选,例如 status=1
// $arrFilter['status'] = 1;
$arrOptions = [
'sort' => ['_id' => -1],
'skip' => ($intPage - 1) * $intLimit,
'limit' => $intLimit,
];
$Cursor = $Col->find($arrFilter, $arrOptions);
$arrData = iterator_to_array($Cursor);
$intTotal = $Col->countDocuments($arrFilter);
$arrResult = [
'data' => $arrData,
'total' => $intTotal,
'page' => $intPage,
'limit' => $intLimit,
'pages' => ceil($intTotal / $intLimit)
];
return $this->success($arrResult);
} catch (\Exception $e) {
return $this->error("9999", $e->getMessage());
}
}
/**
* get category data
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return void
*/
public function getCategory(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrResult = [
'all' => CategoryModel::getCategory(),
'man' => CategoryModel::getManCategory(),
'women' => CategoryModel::getWomenCategory(),
];
return $this->success($arrResult);
}
}

View File

@@ -1,481 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\model\ConverterMovel;
use app\model\DomainModel;
use app\model\SubjectFomartGroupModel;
use app\model\SubjectFomartModel;
use app\model\TemplatesModel;
use app\Request;
use PhpOffice\PhpSpreadsheet\IOFactory;
use think\Response;
class Site extends BaseController
{
/**
* upload site domain info file
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getTKDArgList(Request $Request, ?AdminUserModel $AdminUserModel)
{
return $this->success(ConverterMovel::$arrDescription);
}
/**
* upload site domain info file
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function uploadDomain(Request $Request, ?AdminUserModel $AdminUserModel)
{
$File = $Request->file('excel_file');
if (!$File) {
return $this->error("9999", '请上传 Excel 文件');
}
try {
$arrAllowedExt = ['xls', 'xlsx'];
$strExt = $File->getOriginalExtension();
if (!in_array($strExt, $arrAllowedExt)) {
return $this->error("9999", '仅支持 xls 或 xlsx 文件');
}
$FilePath = $File->getPathname();
$Spreadsheet = IOFactory::load($FilePath);
$Sheet = $Spreadsheet->getActiveSheet();
$arrData = $Sheet->toArray();
array_shift($arrData);
foreach ($arrData as $arrRows) {
$arrDomain = [
'd_domain' => $arrRows[0],
't_id' => $arrRows[1],
'd_name' => $arrRows[2],
'd_keywords' => $arrRows[3],
'd_index_title' => $arrRows[4],
'd_index_keywords' => $arrRows[5],
'd_index_description' => $arrRows[6],
'd_description' => $arrRows[7],
'd_statis' => $arrRows[8],
'd_logo_type' => (int)$arrRows[9],
'd_text_logo' => $arrRows[10],
'd_img_logo' => $arrRows[11],
'd_content_encode' => $arrRows[12],
];
$TCfgTemplate = TemplatesModel::where('t_id', $arrDomain['t_id'])->find()->t_cfg_template;
$arrDomain['t_cfg'] = json_encode($TCfgTemplate, JSON_UNESCAPED_UNICODE);
/** @var DomainModel **/
$DomainModel = DomainModel::where('d_domain', $arrDomain['d_domain'])->findOrEmpty();
$DomainModel->fill($arrDomain);
$DomainModel->save();
DomainModel::flushAllDomianOnCache();
}
return $this->success();
} catch (\Exception $e) {
return $this->error("9999", '导入失败: ' . $e->getMessage());
}
}
/**
* 列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getDomainList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$DomainModel = DomainModel::alias('d');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$DomainModel->where(function ($DomainModel) use ($strKey) {
$DomainModel->whereOr([
['d.d_domain', 'like', "%" . $strKey . "%"],
['d.d_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $DomainModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 添加|修改 域名
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveDomain(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"d_id" => $Request->post('d_id'),
"d_domain" => $Request->post('d_domain'),
"t_id" => $Request->post('t_id'),
"d_name" => $Request->post('d_name'),
"d_keywords" => $Request->post('d_keywords'),
"d_description" => $Request->post('d_description'),
"d_index_title" => $Request->post('d_index_title'),
"d_index_keywords" => $Request->post('d_index_keywords'),
"d_index_description" => $Request->post('d_index_description'),
"d_statis" => $Request->post('d_statis'),
"d_logo_type" => $Request->post('d_logo_type'),
"d_text_logo" => $Request->post('d_text_logo'),
"d_img_log" => $Request->post('d_img_log'),
"d_content_encode" => $Request->post('d_content_encode'),
"t_cfg" => $Request->post('t_cfg'),
];
$arrRule = [
// 'd_id' => 'require|number',
'd_domain' => 'require',
'd_logo_type' => 'require|number',
'd_content_encode' => 'require|number',
't_cfg' => 'require',
];
$this->validate($arrData, $arrRule);
if ($arrData['d_id']) {
/** @var DomainModel **/
$DomainModel = DomainModel::where('d_id', $arrData['d_id'])->findOrEmpty();
} else {
$DomainModel = new DomainModel;
}
$DomainModel->fill($arrData);
$DomainModel->save();
DomainModel::flushAllDomianOnCache();
return $this->success();
}
/**
* 列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getTemplateList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$TemplatesModel = TemplatesModel::alias('t');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$TemplatesModel->where(function ($TemplatesModel) use ($strKey) {
$TemplatesModel->whereOr([
['t.t_code', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $TemplatesModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 替换模板分组列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getSubjectFomartGroupList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$SubjectFomartGroupModel = SubjectFomartGroupModel::alias('sfg');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$SubjectFomartGroupModel->where(function ($SubjectFomartGroupModel) use ($strKey) {
$SubjectFomartGroupModel->whereOr([
['sfg.sfg_name', 'like', "%" . $strKey . "%"],
['sfg.sfg_description', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $SubjectFomartGroupModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 添加|修改 替换模板分组
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveSubjectFomartGroup(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"sfg_id" => $Request->post('sfg_id'),
"sfg_name" => $Request->post('sfg_name'),
"sfg_description" => $Request->post('sfg_description'),
];
$arrRule = [
// 'sfg_id' => 'require|number',
'sfg_name' => 'require',
'sfg_description' => 'require',
];
$this->validate($arrData, $arrRule);
if ($arrData['sfg_id']) {
$SubjectFomartGroupModel = SubjectFomartGroupModel::where('sfg_id', $arrData['sfg_id'])->findOrEmpty();
} else {
$SubjectFomartGroupModel = new SubjectFomartGroupModel;
}
$SubjectFomartGroupModel->fill($arrData);
$SubjectFomartGroupModel->save();
return $this->success();
}
/**
* 添加|修改 替换模板分组
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function delSubjectFomartGroup(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"sfg_id" => $Request->post('sfg_id'),
];
$arrRule = [
'sfg_id' => 'require',
];
$this->validate($arrData, $arrRule);
$arrSfgId = explode(',', $arrData['sfg_id']);
SubjectFomartGroupModel::whereIn('sfg_id', $arrSfgId)->delete();
SubjectFomartModel::whereIn('sfg_id', $arrSfgId)->delete();
return $this->success();
}
/**
* 替换模板分组列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getSubjectFomartList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
"sfg_id" => $Request->get('sfg_id'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$SubjectFomartModel = SubjectFomartModel::alias('sf');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$SubjectFomartModel->where(function ($SubjectFomartModel) use ($strKey) {
$SubjectFomartModel->whereOr([
['sf.sf_val', 'like', "%" . $strKey . "%"],
]);
});
}
if (!empty($arrData['sfg_id'])) {
$SubjectFomartModel->where('sf.sfg_id', $arrData['sfg_id']);
}
$Paginate = $SubjectFomartModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 添加|修改 替换模板分组
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveSubjectFomart(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"sf_id" => $Request->post('sf_id'),
"sfg_id" => $Request->post('sfg_id'),
"sf_val" => $Request->post('sf_val'),
];
$arrRule = [
// 'sf_id' => 'require|number',
'sfg_id' => 'require|number',
'sf_val' => 'require',
];
$this->validate($arrData, $arrRule);
if ($arrData['sf_id']) {
$SubjectFomartModel = SubjectFomartModel::where('sf_id', $arrData['sf_id'])->findOrEmpty();
} else {
$SubjectFomartModel = new SubjectFomartModel;
}
$SubjectFomartModel->fill($arrData);
$SubjectFomartModel->save();
return $this->success();
}
/**
* 添加|修改 替换模板分组
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function delSubjectFomart(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"sf_id" => $Request->post('sf_id'),
];
$arrRule = [
'sf_id' => 'require',
];
$this->validate($arrData, $arrRule);
$arrSfId = explode(',', $arrData['sf_id']);
SubjectFomartModel::whereIn('sf_id', $arrSfId)->delete();
return $this->success();
}
}

View File

@@ -1,391 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\model\BaoYangRuZhuModel;
use app\model\CaiJiPeiZhiModel;
use app\model\DaLiWanFanKuiModel;
use app\model\DaLiWanModel;
use app\model\DomainModel;
use app\model\GuanFangZiYingModel;
use app\model\LouFengModel;
use app\model\PlanTaskModel;
use app\model\SubjectFomartModel;
use app\model\SystemConfigModel;
use app\model\TemplatesModel;
use app\model\ZiYuanDuanDianModel;
use app\Request;
use think\Response;
class SystemConfig extends BaseController
{
/**
* 采集配置列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getCaiJiPeiZhiList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$CaiJiPeiZhiModel = CaiJiPeiZhiModel::alias('cjpz');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$CaiJiPeiZhiModel->where(function ($CaiJiPeiZhiModel) use ($strKey) {
$CaiJiPeiZhiModel->whereOr([
['cjpz.cjpz_code', 'like', "%" . $strKey . "%"],
['cjpz.cjpz_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $CaiJiPeiZhiModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置采集配置
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveCaiJiPeiZhi(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"cjpz_id" => $Request->post('cjpz_id'),
"cjpz_val" => $Request->post('cjpz_val'),
];
$arrRule = [
'cjpz_id' => 'require',
'cjpz_val' => 'require',
];
$this->validate($arrData, $arrRule);
$CaiJiPeiZhiModel = CaiJiPeiZhiModel::where('cjpz_id', $arrData['cjpz_id'])->find();
if (empty($CaiJiPeiZhiModel)) {
return $this->error('9993');
}
$CaiJiPeiZhiModel->fill($arrData);
$CaiJiPeiZhiModel->save();
CaiJiPeiZhiModel::flushCache();
return $this->success();
}
/**
* 系统配置列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getSystemConfigList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$SystemConfigModel = SystemConfigModel::alias('sc');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$SystemConfigModel->where(function ($SystemConfigModel) use ($strKey) {
$SystemConfigModel->whereOr([
['sc.sc_code', 'like', "%" . $strKey . "%"],
['sc.sc_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $SystemConfigModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置系统配置
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveSystemConfig(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"sc_id" => $Request->post('sc_id'),
"sc_val" => $Request->post('sc_val'),
];
$arrRule = [
'sc_id' => 'require',
'sc_val' => 'require',
];
$this->validate($arrData, $arrRule);
$SystemConfigModel = SystemConfigModel::where('sc_id', $arrData['sc_id'])->find();
if (empty($SystemConfigModel)) {
return $this->error('9993');
}
$SystemConfigModel->fill($arrData);
$SystemConfigModel->save();
SystemConfigModel::flushCache();
return $this->success();
}
/**
* 资源端点列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getZiYuanDuanDianList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$ZiYuanDuanDianModel = ZiYuanDuanDianModel::alias('zydd');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$ZiYuanDuanDianModel->where(function ($ZiYuanDuanDianModel) use ($strKey) {
$ZiYuanDuanDianModel->whereOr([
['zydd.zydd_ming_zi', 'like', "%" . $strKey . "%"],
['zydd.zydd_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $ZiYuanDuanDianModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置资源端点
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function saveZiYuanDuanDian(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"zydd_id" => $Request->post('zydd_id'),
"zydd_domain" => $Request->post('zydd_domain'),
];
$arrRule = [
'zydd_id' => 'require',
'zydd_domain' => 'require',
];
$this->validate($arrData, $arrRule);
$ZiYuanDuanDianModel = ZiYuanDuanDianModel::where('zydd_id', $arrData['zydd_id'])->find();
if (empty($ZiYuanDuanDianModel)) {
return $this->error('9993');
}
$ZiYuanDuanDianModel->fill($arrData);
$ZiYuanDuanDianModel->save();
ZiYuanDuanDianModel::flushCache();
return $this->success();
}
/**
* 计划任务列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getPlanTaskList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$PlanTaskModel = PlanTaskModel::alias('pt');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$PlanTaskModel->where(function ($PlanTaskModel) use ($strKey) {
$PlanTaskModel->whereOr([
['pt.pt_name', 'like', "%" . $strKey . "%"],
['pt.pt_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $PlanTaskModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
/**
* 设置计划任务
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function savePlanTask(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"pt_id" => $Request->post('pt_id'),
"pt_enable" => $Request->post('pt_enable'),
"pt_limit" => $Request->post('pt_limit'),
];
$arrRule = [
'pt_id' => 'require|number',
'pt_enable' => 'require|number',
'pt_limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$PlanTaskModel = PlanTaskModel::where('pt_id', $arrData['pt_id'])->find();
if (empty($PlanTaskModel)) {
return $this->error('9993');
}
$PlanTaskModel->fill($arrData);
$PlanTaskModel->save();
return $this->success();
}
/**
* 清理系统缓存
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function flushCache(Request $Request, ?AdminUserModel $AdminUserModel)
{
DomainModel::flushAllDomianOnCache();
SubjectFomartModel::flushAllSubjectFomartOnCache();
SystemConfigModel::flushCache();
TemplatesModel::flushAllTemplateOnCache();
return $this->success();
}
}

View File

@@ -1,5 +0,0 @@
<?php
// 这是系统自动生成的event定义文件
return [
];

View File

@@ -1,9 +0,0 @@
<?php
// 这是系统自动生成的middleware定义文件
use app\admin\middleware\AdminCors;
return [
AdminCors::class,
think\middleware\LoadLangPack::class,
];

View File

@@ -1,34 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\middleware;
use app\model\AdminUserModel;
use app\admin\service\AdminUserAuth;
use app\Request;
use think\Response;
use think\facade\App;
class AdminAuth
{
public function handle(Request $Request, \Closure $Next)
{
try {
/**@var AdminUserModel */
$AdminUserModel = App::make(AdminUserModel::class);
if (empty($AdminUserModel)) {
return AdminResponse::create("9995");
}
if ($AdminUserModel->checkRole() == false) {
return AdminResponse::create("9991");
}
return $Next($Request);
} catch (\Throwable $T) {
return AdminResponse::createByErr($T);
}
}
}

View File

@@ -1,22 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\middleware;
use app\model\AdminUserModel;
use app\admin\service\AdminUserAuth;
use app\Request;
use think\Response;
use think\facade\App;
use think\middleware\AllowCrossDomain;
class AdminCors extends AllowCrossDomain
{
protected $header = [
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Max-Age' => 3600,
'Access-Control-Allow-Methods' => '*',
'Access-Control-Allow-Headers' => '*',
];
}

View File

@@ -1,17 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\middleware;
use think\exception\Handle;
use think\Response;
use Throwable;
class AdminException extends Handle
{
public function render($Request, Throwable $T): Response
{
return AdminResponse::createByErr($T);
}
}

View File

@@ -1,57 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\middleware;
use app\admin\service\AdminUserAuth;
use app\Request;
use think\exception\ValidateException;
use think\Response;
use think\facade\App;
class AdminResponse
{
static public function create($strCode = "1000", $strMsg = "", $arrData = [])
{
$arrError = config("error");
if (!key_exists($strCode, $arrError)) {
$strCode = "9999";
}
if ($strMsg == "") {
$strMsg = $arrError[$strCode];
}
$arrData = [
'code' => $strCode,
'msg' => $strMsg,
'data' => $arrData,
];
return json($arrData, 200, [], [JSON_UNESCAPED_UNICODE]);
}
static $arrExceptionMap = [
ValidateException::class => "9900",
];
static public function createByErr(\Throwable $T)
{
$strCode = $T->getCode();
if ($T instanceof ValidateException) {
$strCode = "9900";
}
foreach (self::$arrExceptionMap as $ExceptionClass => $strExceptonCode) {
if ($T instanceof $ExceptionClass) {
$strCode = $strExceptonCode;
break;
}
}
return self::create($strCode, $T->getMessage());
}
}

View File

@@ -1,12 +0,0 @@
<?php
use app\admin\AdminServiceProvider;
use app\admin\middleware\AdminException;
use app\ExceptionHandle;
use app\Request;
// 容器Provider定义文件
return [
'think\Request' => Request::class,
'think\exception\Handle' => AdminException::class,
];

View File

@@ -1,98 +0,0 @@
<?php
declare(strict_types=1);
namespace app\api;
use ddl\DDLManage;
use think\App;
use think\exception\ValidateException;
use think\facade\View;
use think\Validate;
/**
* 控制器基础类
*/
abstract class BaseController
{
/**
* Request实例
* @var \think\Request
*/
protected $request;
/**
* 应用实例
* @var \think\App
*/
protected $app;
/**
* 是否批量验证
* @var bool
*/
protected $batchValidate = false;
/**
* 控制器中间件
* @var array
*/
protected $middleware = [];
/**
* 构造方法
* @access public
* @param App $app 应用对象
*/
public function __construct(App $app)
{
$this->app = $app;
$this->request = $this->app->request;
// 控制器初始化
$this->initialize();
// View::assign('')
}
// 初始化
protected function initialize() {}
/**
* 验证数据
* @access protected
* @param array $data 数据
* @param string|array $validate 验证器名或者验证规则数组
* @param array $message 提示信息
* @param bool $batch 是否批量验证
* @return array|string|true
* @throws ValidateException
*/
protected function validate(array $data, string|array $validate, array $message = [], bool $batch = false)
{
if (is_array($validate)) {
$v = new Validate();
$v->rule($validate);
} else {
if (strpos($validate, '.')) {
// 支持场景
[$validate, $scene] = explode('.', $validate);
}
$class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
$v = new $class();
if (!empty($scene)) {
$v->scene($scene);
}
}
$v->message($message);
// 是否批量验证
if ($batch || $this->batchValidate) {
$v->batch(true);
}
return $v->failException(true)->check($data);
}
}

View File

@@ -1,2 +0,0 @@
<?php
// 这是系统自动生成的公共文件

View File

@@ -1,33 +0,0 @@
<?php
declare(strict_types=1);
use app\api\controller\Novel;
use app\api\controller\Statis;
use think\facade\Route;
Route::post("/publish", [Statis::class, 'publish'])
// ->middleware(\think\middleware\Throttle::class, [
// 'visit_rate' => '1/m',
// 'key' => '__CONTROLLER__/__ACTION__/__IP__',
// ])
->name('Statis@publish');
Route::get("/search", [Novel::class, 'search'])
// ->middleware(\think\middleware\Throttle::class, [
// 'visit_rate' => '1/m',
// 'key' => '__CONTROLLER__/__ACTION__/__IP__',
// ])
->name('Novel@search');;
Route::get("/test", [Statis::class, 'test'])
// ->middleware(\think\middleware\Throttle::class, [
// 'visit_rate' => '1/m',
// 'key' => '__CONTROLLER__/__ACTION__/__IP__',
// ])
->name('Statis@test');

View File

@@ -1,12 +0,0 @@
<?php
use think\middleware\Throttle;
use think\Response;
return [
'prefix' => 'api:throttle_',
'visit_method' => ["GET", "POST", "PUT", "DELETE", "HEAD"],
'visit_fail_response' => function (Throttle $throttle, $request, $wait_seconds) {
return Response::create('抱歉,请求过于频繁, 请 ' . $wait_seconds . ' 秒后重新操作 。')->code(429);
},
];

View File

@@ -1,44 +0,0 @@
<?php
declare(strict_types=1);
namespace app\api\controller;
use app\api\BaseController;
use app\model\CategoryModel;
use app\model\NovelClicksModel;
use app\model\NovelModel;
use DateTime;
use db\mongo\MongoBase;
use ddl\DDLManage;
use Exception;
use think\Request;
use think\Response;
class Statis extends BaseController
{
/**
* novel statis
*
* @param Request $Request
* @return Response
*/
public function publish(Request $Request): Response
{
$intNId = $Request->post('n_id/d');
if ($intNId <= 0) {
return Response::create('非法请求!')->code(400);
}
$NovelClicksModel = NovelClicksModel::getInstance();
try {
$NovelClicksModel->addStatis($intNId);
} catch (\Exception $e) {
// throw $e;
}
return Response::create()->code(204);
}
}

View File

@@ -1,5 +0,0 @@
<?php
// 这是系统自动生成的event定义文件
return [
];

View File

@@ -1,5 +0,0 @@
<?php
// 这是系统自动生成的middleware定义文件
return [
\think\middleware\AllowCrossDomain::class,
];

View File

@@ -1,829 +0,0 @@
<?php
declare(strict_types=1);
// 应用公共文件
namespace {
use think\facade\Cache;
use function MongoDB\object;
function getUriByUrl($strUrl)
{
$arrUrl = parse_url($strUrl);
return $arrUrl['path'];
}
function getArgByUrl($strUrl, $strKey)
{
$arrPaseUrl = parse_url($strUrl);
$strUri = $arrPaseUrl['query'];
parse_str($strUri, $arrUrl);
return $arrUrl[$strKey];
}
/**
* 搜索字符串中某个词语出现后所有的字符
*
* @param string $string 要搜索的字符串
* @param string $searchWord 要搜索的词语
* @return string 搜索词语后面的所有字符,如果没有找到词语则返回空字符串
*/
function getStringAfterWord($string, $searchWord)
{
// 查找词语的位置
$pos = mb_strpos($string, $searchWord);
// 如果找到了词语
if ($pos !== false) {
// 获取词语出现后所有的字符
return trim(mb_substr($string, $pos + mb_strlen($searchWord)));
} else {
// 如果没有找到词语,返回空字符串
return '';
}
}
// 将 Cookie 字符串解析为数组
function parseCookies($cookieString)
{
$cookies = [];
$pairs = explode('; ', $cookieString);
foreach ($pairs as $pair) {
list($name, $value) = explode('=', $pair, 2);
$cookies[$name] = $value;
}
return $cookies;
}
// 获取域名函数
function getDomainFromUrl($url)
{
$host = parse_url($url, PHP_URL_HOST);
return $host ?: 'default.com';
}
function replaceLastPageNumber($url, $number)
{
// 使用正则表达式替换最后一个 "1" 为 "number"
return preg_replace('/1(?=[^1]*$)/', $number, $url);
}
function removeScriptTags($rpText, $newText)
{
// 使用正则表达式替换所有 <script> 标签
return preg_replace($rpText, '', $newText);
}
function extractFilename($url)
{
// 检查 URL 是否以 .html 结尾
if (substr($url, -5) !== '.html') {
throw new InvalidArgumentException('URL must end with .html');
}
// 解析 URL 获取路径部分
$path = parse_url($url, PHP_URL_PATH);
// 获取文件名部分
$filename = basename($path, '.html');
return $filename;
}
function extractIdFromUrl($url)
{
if (preg_match('/-id-(\d+)\.html/', $url, $matches)) {
return $matches[1];
}
return null;
}
function extractNumbersFromUrl($url)
{
// 使用正则表达式匹配路径中的数字部分
if (preg_match('#/(\d+)/(\d+)/#', $url, $matches)) {
return [
'first' => $matches[1], // 提取到的第一个数字
'second' => $matches[2], // 提取到的第二个数字
];
}
return null; // 如果未匹配,返回 null
}
function extractNumberFromUrl($url)
{
// 使用正则表达式匹配 /class/{数字}_ 的格式
if (preg_match('/\/class\/(\d+)_/', $url, $matches)) {
return $matches[1]; // 返回匹配的数字部分
}
return null; // 如果未匹配,返回 null
}
function encImgBy17C($strInputImgPath, $strOutImgPath, $strKey = 0x88)
{
// 读取图像内容
$strImgData = file_get_contents($strInputImgPath);
if ($strImgData === false) {
throw new Exception("无法读取图片文件: $strInputImgPath");
}
// 将图像内容转换为字节数组
$bytes = array_values(unpack('C*', $strImgData));
$len = count($bytes);
// 对每个字节进行异或操作加密
for ($i = 0; $i < $len; $i++) {
$bytes[$i] ^= $strKey;
}
// 将字节数组转换回二进制数据
$strEncryptedData = pack('C*', ...$bytes);
// 将加密后的数据写入文件
if (file_put_contents($strOutImgPath, $strEncryptedData) === false) {
throw new Exception("无法写入加密文件: $strOutImgPath");
}
}
/**
* 中文转码实体字符
*
* @param string $text
* @return string
*/
function customEntities($text)
{
$result = '';
$length = mb_strlen($text, 'UTF-8');
for ($i = 0; $i < $length; $i++) {
$char = mb_substr($text, $i, 1, 'UTF-8');
$code = ord($char);
if ($code < 128) {
// 对于 ASCII 字符,直接使用 ord
$result .= '&#' . $code . ';';
} else {
// 对于非 ASCII 字符,使用 mb_ord 获取 Unicode 码
$code = mb_ord($char, 'UTF-8');
$result .= '&#' . $code . ';';
}
}
return $result;
}
function isValidDateTime($dateTimeStr, $format = 'Y-m-d H:i:s')
{
$date = DateTime::createFromFormat($format, $dateTimeStr);
return $date && $date->format($format) === $dateTimeStr;
}
// 创建保存文件
function saveContentToFile($filePath, $content)
{
// 确保目标路径的目录存在
$directory = dirname($filePath);
if (!is_dir($directory)) {
// 尝试创建目录
if (!mkdir($directory, 0777, true)) {
return [
'status' => false,
'message' => "Failed to create directory: $directory"
];
}
}
// 写入内容到文件
if (file_put_contents($filePath, $content) !== false) {
return [
'status' => true,
'message' => "Content successfully written to $filePath"
];
} else {
return [
'status' => false,
'message' => "Failed to write content to $filePath"
];
}
}
function saveCompressAndDeleteTxt($filePath, $content)
{
// 确保目标路径的目录存在
$directory = dirname($filePath);
if (!is_dir($directory)) {
if (!mkdir($directory, 0777, true)) {
return [
'status' => false,
'message' => "Failed to create directory: $directory"
];
}
}
// 写入内容到文件
$fp = fopen($filePath, "c+"); // 使用 c+ 模式,支持加锁
if (!$fp) {
return [
'status' => false,
'message' => "Failed to open file for writing: $filePath"
];
}
// 加锁防止其他进程同时操作
if (!flock($fp, LOCK_EX)) { // 加排他锁
fclose($fp);
return [
'status' => false,
'message' => "Failed to acquire lock for file: $filePath"
];
}
// 写入内容
if (fwrite($fp, $content) === false) {
flock($fp, LOCK_UN); // 释放锁
fclose($fp);
return [
'status' => false,
'message' => "Failed to write content to $filePath"
];
}
// 解锁并关闭文件
flock($fp, LOCK_UN);
fclose($fp);
// 压缩文件为 ZIP
$zipPath = $filePath . ".zip"; // 压缩后的 ZIP 文件路径
$zip = new ZipArchive();
$zipOpenResult = $zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE);
if ($zipOpenResult !== true) {
return [
'status' => false,
'message' => "Failed to open zip archive: $zipPath"
];
}
// 添加文件到 ZIP 中
if (!$zip->addFile($filePath, basename($filePath))) {
$zip->close();
return [
'status' => false,
'message' => "Failed to add file to zip archive: $filePath"
];
}
if (!$zip->close()) {
return [
'status' => false,
'message' => "Failed to close zip archive: $zipPath"
];
}
// 删除原始文件
$fp = fopen($filePath, "c+"); // 重新打开文件以加锁
if ($fp && flock($fp, LOCK_EX)) {
if (!file_exists($filePath)) {
unlink($filePath); // 删除文件
}
flock($fp, LOCK_UN);
fclose($fp);
}
return [
'status' => true,
'message' => "File success save to $zipPath and del",
'zip_path' => $zipPath
];
}
/**
* 提取 ZIP 文件中的所有 .txt 文件内容
*
* @param string $zipPath ZIP 文件的完整路径
* @return array 返回一个数组,键是文件名,值是对应的文件内容
* @throws Exception 如果文件不存在或解压失败则抛出异常
*/
function extractTxtFromZip($zipPath)
{
if (!file_exists($zipPath)) {
throw new Exception("ZIP 文件路径无效: " . $zipPath);
}
$zip = new ZipArchive();
if ($zip->open($zipPath) === true) {
$txtContents = "";
// 遍历所有文件
for ($i = 0; $i < $zip->numFiles; $i++) {
$fileName = $zip->getNameIndex($i);
// 检查文件是否是 .txt 结尾
if (pathinfo($fileName, PATHINFO_EXTENSION) === 'txt') {
// 读取文件内容
$content = $zip->getFromName($fileName);
$txtContents = $content;
}
}
$zip->close();
return $txtContents;
} else {
throw new Exception("无法打开 ZIP 文件。");
}
}
function readExtractAndDeleteTxt($zipPath, $extractTo = null)
{
// 检查 ZIP 文件是否存在
if (!file_exists($zipPath)) {
return [
'status' => false,
'message' => "ZIP file does not exist: $zipPath"
];
}
// 打开 ZIP 文件
$zip = new ZipArchive();
if ($zip->open($zipPath) !== true) {
return [
'status' => false,
'message' => "Failed to open ZIP file: $zipPath"
];
}
// 获取 ZIP 文件内容列表
$fileList = [];
for ($i = 0; $i < $zip->numFiles; $i++) {
$fileList[] = $zip->getNameIndex($i);
}
// 如果需要提取文件
if ($extractTo) {
// 确保目标目录存在
if (!is_dir($extractTo)) {
if (!mkdir($extractTo, 0777, true)) {
return [
'status' => false,
'message' => "Failed to create extraction directory: $extractTo"
];
}
}
// 提取文件到指定目录
if (!$zip->extractTo($extractTo)) {
$zip->close();
return [
'status' => false,
'message' => "Failed to extract ZIP file to $extractTo"
];
}
}
// 关闭 ZIP 文件
$zip->close();
// 删除提取的 .txt 文件
$deletedFiles = [];
foreach ($fileList as $file) {
if (pathinfo($file, PATHINFO_EXTENSION) === 'txt') { // 检查是否是 .txt 文件
$filePath = rtrim($extractTo, '/') . '/' . $file;
if (file_exists($filePath) && unlink($filePath)) {
$deletedFiles[] = $file;
}
}
}
// 返回提取和删除状态
return [
'status' => true,
'message' => "ZIP file successfully extracted to $extractTo and .txt files deleted.",
'files_extracted' => $fileList,
'files_deleted' => $deletedFiles
];
}
function getRandomUserAgent()
{
$userAgents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36',
// 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
// 'Mozilla/5.0 (Linux; Android 9; ASUS_X00TD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/359.0.0.288 Mobile Safari/537.36',
// 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1',
// 'Mozilla/5.0 (Linux; Android 9; ASUS_X00TD; Flow) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/359.0.0.288 Mobile Safari/537.36'
];
return $userAgents[array_rand($userAgents)];
}
function getRandomProxies()
{
$proxies = [
'http://114.115.130.225:3128',
// 'http://36.6.145.131:8089',
// 'http://202.101.213.205:19926',
// 'http://218.87.205.35:21874',
// 'http://203.19.38.114:1080',
// 'http://121.89.222.174:8090',
// 'http://223.113.80.158:9091',
// 'http://120.232.194.134:8998',
// 'http://120.46.197.14:8083',
// 'http://139.9.5.196:7890',
// 'http://203.89.8.107:80',
// 'http://117.186.143.130:8118',
// 'http://117.186.232.73:8080',
// 'http://203.12.200.179:8085',
// 'http://120.46.215.52:15280',
// 'http://111.230.243.170:80',
// 'http://223.113.101.150:8060',
// 'http://117.50.113.39:1337',
];
return $proxies[array_rand($proxies)];
}
function fetchContentWithCurl($url, $headers = [], $timeout = 10, $proxy = null, $proxyAuth = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// 设置头部
if (!empty($headers)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
// 模拟浏览器
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; Android 9; ASUS_X00TD; Flow) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/359.0.0.288 Mobile Safari/537.36');
// 如果需要代理
if ($proxy) {
curl_setopt($ch, CURLOPT_PROXY, $proxy);
if ($proxyAuth) {
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyAuth); // 代理用户名和密码
}
}
// 执行请求
$response = curl_exec($ch);
// 检查错误
if (curl_errno($ch)) {
$error = 'cURL Error: ' . curl_error($ch);
curl_close($ch);
return ['success' => false, 'error' => $error];
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 返回结果
if ($httpCode >= 200 && $httpCode < 300) {
return ['success' => true, 'data' => $response];
} else {
return ['success' => false, 'error' => "HTTP Error: $httpCode"];
}
}
// 随机颜色生成函数
function getRandomColor()
{
return 'color:rgb(' . mt_rand(0, 255) . ', ' . mt_rand(0, 255) . ', ' . mt_rand(0, 255) . ');';
}
/**
* 生成分页 HTML 的通用函数
*
* @param int $currentPage 当前页码
* @param int $lastPage 总页数
* @param string $baseUrl 基础 URL
* @param string $queryParams 查询参数(包含占位符 :page
* @param int $maxPagesToShow 最大显示页码数
* @return string 分页 HTML
* 示例调用
* $paginationHtml = generatePaginationHtml(
* 3, // 当前页
* 10, // 总页数
* '/vodshow/dy-cn-hot-action-en-', // 基础 URL
* ':page---2024.html', // 查询参数,包含占位符 :page
* 5 // 最多显示 5 个页码
* );
* // 输出分页 HTML
* echo $paginationHtml;
*
*/
function generatePaginationHtml($currentPage, $lastPage, $baseUrl, $queryParams, $maxPagesToShow = 5)
{
$paginationHtml = '<ul class="stui-page text-center clearfix">';
// 首页按钮
$paginationHtml .= '<li><a style="' . getRandomColor() . '" href="' . str_replace(':page', 1, $baseUrl . $queryParams) . '">首页</a></li>';
// 上一页按钮
if ($currentPage > 1) {
$paginationHtml .= '<li><a style="' . getRandomColor() . '" href="' . str_replace(':page', $currentPage - 1, $baseUrl . $queryParams) . '">上一页</a></li>';
} else {
$paginationHtml .= '<li class="disabled"><span>上一页</span></li>';
}
// 页码范围控制:最多显示 $maxPagesToShow 个页码
$start = max(1, $currentPage - floor($maxPagesToShow / 2));
$end = min($lastPage, $start + $maxPagesToShow - 1);
if ($end - $start + 1 < $maxPagesToShow) {
$start = max(1, $end - $maxPagesToShow + 1);
}
// 页码按钮
for ($i = $start; $i <= $end; $i++) {
if ($i == $currentPage) {
$paginationHtml .= '<li class="active"><a style="' . getRandomColor() . '" href="' . str_replace(':page', $i, $baseUrl . $queryParams) . '">' . $i . '</a></li>';
} else {
$paginationHtml .= '<li><a style="' . getRandomColor() . '" href="' . str_replace(':page', $i, $baseUrl . $queryParams) . '">' . $i . '</a></li>';
}
}
// 下一页按钮
if ($currentPage < $lastPage) {
$paginationHtml .= '<li><a style="' . getRandomColor() . '" href="' . str_replace(':page', $currentPage + 1, $baseUrl . $queryParams) . '">下一页</a></li>';
} else {
$paginationHtml .= '<li class="disabled"><span>下一页</span></li>';
}
// 尾页按钮
$paginationHtml .= '<li><a style="' . getRandomColor() . '" href="' . str_replace(':page', $lastPage, $baseUrl . $queryParams) . '">尾页</a></li>';
$paginationHtml .= '</ul>';
return $paginationHtml;
}
/**
* 生成分页 HTML 的通用函数
*
* @param int $currentPage 当前页码
* @param int $lastPage 总页数
* @param string $baseUrl 基础 URL
* @param string $queryParams 查询参数(包含占位符 :page
* @param int $maxPagesToShow 最大显示页码数
* @return string 分页 HTML
* 示例调用
* $paginationHtml = generatePaginationHtml(
* 3, // 当前页
* 10, // 总页数
* '/vodshow/dy-cn-hot-action-en-', // 基础 URL
* ':page---2024.html', // 查询参数,包含占位符 :page
* 5 // 最多显示 5 个页码
* );
* // 输出分页 HTML
* echo $paginationHtml;
*
*/
function generateNovelPaginationHtml($currentPage, $lastPage, $baseUrl, $queryParams, $maxPagesToShow = 10)
{
$paginationHtml = '<div class="row sort_page_num">';
// 首页按钮
$paginationHtml .= '<a class="prev_off" href="' . str_replace(':page', 1, $baseUrl . $queryParams) . '">首 页</a>';
// 计算分页起始和结束
$start = max(1, $currentPage - floor($maxPagesToShow / 2));
$end = min($lastPage, $start + $maxPagesToShow - 1);
if ($end - $start + 1 < $maxPagesToShow) {
$start = max(1, $end - $maxPagesToShow + 1);
}
// 页码按钮
for ($i = $start; $i <= $end; $i++) {
if ($i == $currentPage) {
$paginationHtml .= '<a class="page_on" href="' . str_replace(':page', $i, $baseUrl . $queryParams) . '">&nbsp;' . $i . '&nbsp;</a>';
} else {
$paginationHtml .= '<a href="' . str_replace(':page', $i, $baseUrl . $queryParams) . '">&nbsp;' . $i . '&nbsp;</a>';
}
}
// 下一页按钮
if ($currentPage < $lastPage) {
$paginationHtml .= '<a class="prev_on" href="' . str_replace(':page', $currentPage + 1, $baseUrl . $queryParams) . '">下一页</a>';
}
$paginationHtml .= '</div>';
return $paginationHtml;
}
// 分页模板-时空小说模板
function generateNovelSkPaginationHtml($currentPage, $lastPage, $baseUrl, $queryParams, $maxPagesToShow = 10)
{
$paginationHtml = '<ul class="pagination justify-content-center">';
// 上一页按钮
if ($currentPage > 1) {
$paginationHtml .= '<li class="page-item"><a class="page-link" href="' . str_replace(':page', $currentPage - 1, $baseUrl . $queryParams) . '">上一页</a></li>';
} else {
$paginationHtml .= '<li class="page-item disabled"><span class="page-link">上一页</span></li>';
}
// 计算分页起始和结束
$start = max(1, $currentPage - floor($maxPagesToShow / 2));
$end = min($lastPage, $start + $maxPagesToShow - 1);
if ($end - $start + 1 < $maxPagesToShow) {
$start = max(1, $end - $maxPagesToShow + 1);
}
// 页码按钮
for ($i = $start; $i <= $end; $i++) {
if ($i == $currentPage) {
$paginationHtml .= '<li class="page-item active"><span class="page-link">' . $i . '</span></li>';
} else {
$paginationHtml .= '<li class="page-item"><a class="page-link" href="' . str_replace(':page', $i, $baseUrl . $queryParams) . '">' . $i . '</a></li>';
}
}
// 下一页按钮
if ($currentPage < $lastPage) {
$paginationHtml .= '<li class="page-item"><a class="page-link" href="' . str_replace(':page', $currentPage + 1, $baseUrl . $queryParams) . '">下一页</a></li>';
} else {
$paginationHtml .= '<li class="page-item disabled"><span class="page-link">下一页</span></li>';
}
// 显示当前页码/总页数
$paginationHtml .= '<li class="page-item disabled"><span class="page-link">' . $currentPage . '/' . $lastPage . '</span></li>';
$paginationHtml .= '</ul>';
return $paginationHtml;
}
// 更据IP 获取地区
function getLocationByIp($ip)
{
try {
$response = file_get_contents("http://ip-api.com/json/{$ip}");
$locationData = json_decode($response, true);
if ($locationData['status'] === 'success') {
return [
'country' => $locationData['country'],
'region' => $locationData['regionName'],
'city' => $locationData['city'],
'lat' => $locationData['lat'],
'lon' => $locationData['lon']
];
}
} catch (\Exception $e) {
// 记录异常或忽略
}
return null; // 无法获取地理信息时返回 null
}
// 检查解密内容是否包含潜在的漏洞代码
function checkForVulnerabilities($content)
{
// 检查是否包含 'eval' 函数
if (stripos($content, 'eval') !== false) {
return true;
}
// 检查是否包含恶意的 http 或域名
$vulnerablePatterns = [
'/http(s)?:\/\/[^ ]+/', // 匹配 URL
'/<script.*>.*<\/script>/i' // 匹配 script 标签
];
foreach ($vulnerablePatterns as $pattern) {
if (preg_match($pattern, $content)) {
return true;
}
}
return false;
}
/**
* 从 URL、URI 或路径中提取文件名(不带后缀)
* @param string $path 输入的路径,比如 "/shu/1/4313672.html" 或 "https://example.com/files/test.pdf"
* @return string|null 返回文件名部分,如果提取失败返回 null
*/
function supperExtractFilename($path)
{
if (empty($path) || !is_string($path)) {
return null;
}
$slashPos = strrpos($path, '/');
if ($slashPos === false) {
$slashPos = -1;
}
$dotPos = strrpos($path, '.');
if ($dotPos === false || $dotPos <= $slashPos) {
return substr($path, $slashPos + 1);
}
$start = $slashPos + 1;
$length = $dotPos - $start;
return substr($path, $start, $length);
}
/**
* Undocumented function
*
* @param string $strZh
* @return string
*/
function zhToPinYin(string $strZh): string
{
if (empty($strZh)) {
return $strZh;
}
$strPinYinToolsPath = root_path() . '/extend/tools/pinyin-tool';
$strPinYin = shell_exec(sprintf("%s %s", $strPinYinToolsPath, escapeshellcmd($strZh)));
$strPinYin = trim((string) $strPinYin);
return $strPinYin;
}
/**
* Undocumented function
*
* @param object $Obj
* @param string $strAction
* @return string
*/
function getFomartSubjectKey(string $strAction): string
{
return strtoupper(str_replace('::', '@', ltrim(strrchr($strAction, "\\"), "\\")));
}
/**
* Undocumented function
*
* @param MongoDB\BSON\UTCDateTime $mongoDate
* @param string $format
* @return string
*/
function formatMongoDate(\MongoDB\BSON\UTCDateTime $mongoDate, string $strFormat = "Y-m-d H:i:s"): string
{
$intTimestamp = (int) ((string) $mongoDate / 1000);
return gmdate($strFormat, $intTimestamp);
}
/**
* Undocumented function
*
* @param array $arrData
* @param array $arrKeys
* @param callable $Callback
* @return void
*/
function applyToKeys(null|array &$arrData, array $arrKeys, callable $Callback)
{
if (empty($arrData)) return;
foreach ($arrKeys as $strKey) {
if (key_exists($strKey, $arrData)) {
$arrData[$strKey] = $Callback($arrData[$strKey]);
}
}
}
/**
* generate string
*
* @param integer $length
* @return string
*/
function randomString(int $length): string {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$max = 51; // 字符集长度减1 (0-51)
$result = '';
for ($i = 0; $i < $length; $i++) {
$result .= $chars[random_int(0, $max)];
}
return $result;
}
}

View File

@@ -1,17 +0,0 @@
<?php
// 事件定义文件
return [
'bind' => [
],
'listen' => [
'AppInit' => [],
'HttpRun' => [],
'HttpEnd' => [],
'LogLevel' => [],
'LogWrite' => [],
],
'subscribe' => [
],
];

View File

@@ -1,152 +0,0 @@
<?php
declare(strict_types=1);
namespace app\home;
use app\model\ConverterMovel;
use app\model\GanRaoMaModel;
use app\model\CategoryModel;
use think\App;
use think\exception\ValidateException;
use think\facade\View;
use think\Validate;
/**
* 控制器基础类
*/
abstract class BaseController
{
/**
* Request实例
* @var \think\Request
*/
protected $request;
/**
* 应用实例
* @var \think\App
*/
protected $app;
/**
* 是否批量验证
* @var bool
*/
protected $batchValidate = false;
/**
* 控制器中间件
* @var array
*/
protected $middleware = [];
/**
* 构造方法
* @access public
* @param App $app 应用对象
*/
public function __construct(App $app)
{
$this->app = $app;
$this->request = $this->app->request;
// 控制器初始化
$this->initialize();
// View::assign('')
}
/**
* 初始化
*
* @return void
*/
protected function initialize()
{
$this->initSiteTKD();
}
/**
* 初始化网站基本信息到全局替换类里
*
* @return void
*/
private function initSiteTKD()
{
ConverterMovel::setVal([
'strSiteName' => $this->request->DomainModel->d_name,
'strSiteDomain' => $this->request->DomainModel->d_domain,
'strSiteKeywords' => $this->request->DomainModel->d_keywords,
'strSiteDescription' => $this->request->DomainModel->d_description,
]);
}
/**
* return fomart view string
*
* @param string $strTemplate
* @return string
*/
public function rending($strTemplate = '')
{
// 全局使用的URL模板
$strPcUrlTemp = $this->request->DomainModel->getFomartSubject('PC_URL_PATH','',false);
$strNanUrlTemp = $this->request->DomainModel->getFomartSubject('NAN_SHENG_URL','',false);
$strNvUrlTemp = $this->request->DomainModel->getFomartSubject('NV_SHENG_URL','',false);
$strCategoryIndexUrlTemp = $this->request->DomainModel->getFomartSubject('CATEGORY_INDEX_URL','',false);
$strRankUrlTemp = $this->request->DomainModel->getFomartSubject('RANK_INFO_URL','',false);
$strSearchIndexUrlTemp = $this->request->DomainModel->getFomartSubject('SEARCH_INDEX_URL','',false);
$strHistoryUrlTemp = $this->request->DomainModel->getFomartSubject('HISTORY_INFO_URL','',false);
$strBookShelfUrlTemp = $this->request->DomainModel->getFomartSubject('SHUJIA_INFO_URL','',false);
$strUserUrlTemp = $this->request->DomainModel->getFomartSubject('USER_INFO_URL','',false);
View::assign("DomainModel", $this->request->DomainModel);
View::assign("TemplatesModel", $this->request->TemplatesModel);
View::assign("strPcPath", $strPcUrlTemp);
View::assign("strNanUrlTemp", $strNanUrlTemp);
View::assign("strNvUrlTemp", $strNvUrlTemp);
View::assign("strCategoryIndexUrlTemp", $strCategoryIndexUrlTemp);
View::assign("strRankUrlTemp", $strRankUrlTemp);
View::assign("strSearchIndexUrlTemp", $strSearchIndexUrlTemp);
View::assign("strHistoryUrlTemp", $strHistoryUrlTemp);
View::assign("strBookShelfUrlTemp", $strBookShelfUrlTemp);
View::assign("strUserUrlTemp", $strUserUrlTemp);
$strTemplatesModel = $this->request->TemplatesModel->t_code;
switch ($strTemplatesModel) {
case 'default':
// TODO 随机30个小说(有伪造小说的)
$arrForgeNovel = [];
View::assign([
'arrForgeNovel' => $arrForgeNovel,
'arrCategoryAll' => CategoryModel::$arrCategoryAll,
]);
break;
case 'kuangYu':
break;
}
return View::fetch($strTemplate);
}
/**
* generate GRM
*
* @param integer $intDeviceType
* @param integer $intNum
* @return void
*/
public function generateGrm(int $intDeviceType, string|int $strDiff, int $intNum)
{
$strDomain = $this->request->DomainModel->d_domain;
$strPageCode = $this->request->controller() . '@' . $this->request->action() . '@' . $intDeviceType;
$arrGRM = GanRaoMaModel::getGrmCode($strDomain, $strPageCode, $strDiff, $intNum);
View::assign("arrGRM", $arrGRM);
}
}

View File

@@ -1,2 +0,0 @@
<?php
// 这是系统自动生成的公共文件

View File

@@ -1,512 +0,0 @@
<?php
declare(strict_types=1);
use app\home\controller\Index;
use app\home\controller\Novel;
use app\home\controller\User;
use app\services\SiteContext;
use think\facade\Route;
Route::get('/article/fenlei/:category', function (\think\Request $Request, SiteContext $SiteContext) {
return view('test/test01/index.html');
});
/**
* 路由配置文件
*/
$arrRoutes = [
// H5/PC 端前缀
'prefixes' => [
'pc' => ['/pc', '/web', '/desktop', '/index', '/shouye', '/zhuomian'],
'h5' => ['','/nindex'],
],
// 通用路径别名
'paths' => [
// 章节相关路径
'chapter' => [
'/xiaoshuo/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]',
'/novel/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]',
'/book/:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]',
'/xiaoshuo-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]',
'/novel-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]',
'/book-:name-:intNovelId/zhang-:intChapterSort/[:intChapterPage]',
],
// 最新章节-特殊页面处理
'latest' => [
'/xiaoshuo/:name-:intNovelId/chapter/latest',
'/novel/:name-:intNovelId/chapter/latest',
'/book/:name-:intNovelId/chapter/latest',
'/xiaoshuo-:name-:intNovelId/chapter/latest',
'/novel-:name-:intNovelId/chapter/latest',
'/book-:name-:intNovelId/chapter/latest',
],
// 目录相关路径
'catalog' => [
'/xiaoshuo/:name-:intNovelId/mulu/:strOrder/[:intPage]',
'/novel/:name-:intNovelId/catalog/:strOrder/[:intPage]',
'/book/:name-:intNovelId/table/:strOrder/[:intPage]',
'/xiaoshuo/:name-:intNovelId/mulu/:strOrder/[:intPage]',
'/novel/:name-:intNovelId/catalog/:strOrder/[:intPage]',
'/book/:name-:intNovelId/table/:strOrder/[:intPage]',
],
// 伪小说详情相关路径
'kan-novel' => [
'/kan-xiaoshuo/:name-:intNovelId-:n_forge_id',
'/show-novel/:name-:intNovelId-:n_forge_id',
'/seo-book/:name-:intNovelId-:n_forge_id',
'/show-xiaoshuo-:name-:intNovelId-:n_forge_id',
'/see-novel-:name-:intNovelId-:n_forge_id',
'/good-book-:name-:intNovelId-:n_forge_id',
],
// 小说详情相关路径
'novel' => [
'/xiaoshuo/:name-:intNovelId',
'/novel/:name-:intNovelId',
'/book/:name-:intNovelId',
'/xiaoshuo-:name-:intNovelId',
'/novel-:name-:intNovelId',
'/book-:name-:intNovelId',
],
// 书库
'library' => [
/**
* /shuku/nansheng-xiaoshuo/all/all/all/page1
* '/:strGender?/:strCategory?/:strStatus?/:strOrder?/:intPage?';
* 完整路由
* 使用: {site:nflurl gender="$strGender" category="$CategoryPinyin" status="all" order="all" page="1"/}
*/
// '/shuku/:strGender?/:strCategory?/:strStatus?/:strOrder?/page:intPage?',
'/shuku/:strGender/:strCategory/:strStatus/:strOrder/page:intPage',
'/books/:strGender/:strCategory/:strStatus/:strOrder/page:intPage',
'/library/:strGender/:strCategory/:strStatus/:strOrder/page:intPage',
'/fenlei/:strGender/:strCategory/:strStatus/:strOrder/page:intPage',
'/class/:strGender/:strCategory/:strStatus/:strOrder/page:intPage',
'/category/:strGender/:strCategory/:strStatus/:strOrder/page:intPage',
/**
* default 模板
* strGender 不需要
* 使用 gender 传空/或者不传,控制器会默认值是 all
* {site:nflurl gender="" category="$CategoryPinyin" status="all" order="all" page="1"/}
*/
'/shuku/:strCategory/:strStatus/:strOrder/page:intPage',
'/books/:strCategory/:strStatus/:strOrder/page:intPage',
'/library/:strCategory/:strStatus/:strOrder/page:intPage',
'/fenlei/:strCategory/:strStatus/:strOrder/page:intPage',
'/class/:strCategory/:strStatus/:strOrder/page:intPage',
'/category/:strCategory/:strStatus/:strOrder/page:intPage',
/**
* default 模板
* strGender strOrder 不需要
* 使用 gender 传空/或者不传,控制器会默认值是 all
* {site:nflurl gender="" category="$CategoryPinyin" status="all" order="all" page="1"/}
*/
// '/shuku/:strCategory/:strStatus/page:intPage',
// '/books/:strCategory/:strStatus/page:intPage',
// '/library/:strCategory/:strStatus/page:intPage',
// '/fenlei/:strCategory/:strStatus/page:intPage',
// '/class/:strCategory/:strStatus/page:intPage',
// '/category/:strCategory/:strStatus/page:intPage',
/**
* default 模板
* strGender 不需要
* 使用 gender 传空/或者不传,控制器会默认值是 all
* {site:nflurl gender="" category="$CategoryPinyin" status="all" order="all" page="1"/}
*/
// '/shuku/:strCategory/:strOrder/page:intPage',
// '/books/:strCategory/:strOrder/page:intPage',
// '/library/:strCategory/:strOrder/page:intPage',
// '/fenlei/:strCategory/:strOrder/page:intPage',
// '/class/:strCategory/:strOrder/page:intPage',
// '/category/:strCategory/:strOrder/page:intPage',
/**
* default 模板 /shuku/xuanhuan-xiuzhen/page1
* strGender strStatus strOrder 不需要
* 使用 gender 传空/或者不传,控制器会默认值是 all
* {site:nflurl gender="" category="$CategoryPinyin" status="all" order="all" page="1"/}
*/
// '/shuku/:strCategory/page:intPage',
// '/books/:strCategory/page:intPage',
// '/library/:strCategory/page:intPage',
// '/fenlei/:strCategory/page:intPage',
// '/class/:strCategory/page:intPage',
// '/category/:strCategory/page:intPage',
/**
* kuangyu 模板
* strOrder 不需要
* 使用 order 传空/或者不传,控制器会默认值是 all
* {site:nflurl gender="$strGender" category="$CategoryPinyin" status="all" page="1"/}
*/
'/shuku/:strGender/:strCategory/:strStatus/page:intPage',
'/books/:strGender/:strCategory/:strStatus/page:intPage',
'/library/:strGender/:strCategory/:strStatus/page:intPage',
'/fenlei/:strGender/:strCategory/:strStatus/page:intPage',
'/class/:strGender/:strCategory/:strStatus/page:intPage',
'/category/:strGender/:strCategory/:strStatus/page:intPage',
// '/shuku/:strGender/page:intPage',
// '/books/:strGender/page:intPage',
// '/library/:strGender/page:intPage',
// '/fenlei/:strGender/page:intPage',
// '/class/:strGender/page:intPage',
// '/category/:strGender/page:intPage',
],
// 书库首页
'library-index' => [
'/shuku/index',
'/books/index',
'/library/index',
'/fenlei/index',
'/class/index',
'/category/index',
],
//排行榜
'rank' => ['/paihang/all', '/rank/all', '/paihang-quan', '/top/all', '/paihang-bang', '/ranks/all'],
// 男生
'boys' => ['/nansheng-xiaoshuo', '/boys-novel', '/nansheng-shu', '/man-read', '/nansheng-book', '/male-novels'],
//女生
'girls' => ['/nvsheng-xiaoshuo', '/girls-novel', '/nvsheng-shu', '/woman-read', '/nvsheng-book', '/female-novels'],
//搜索
'search' => ['/search', '/explore', '/sousuo', '/find', '/query', '/keywords'],
// 用户中心
'user' => ['/user', '/my-account', '/profile', '/yonghu', '/wode-zhongxin', '/personal-center'],
//书架
'bookshelf' => ['/bookshelf', '/book-shelf', '/reading-shelf', '/shujia', '/yuedu-shujia', '/book-collection'],
//历史记录
'history' => ['/history', '/reading-history', '/read-record', '/lishi', '/yuedu-lishi', '/browse-past'],
// 首页
'index' => ['/'],
// 首页 - 如果info_id 》 0
'nindex' => ['/nindex'],
],
];
/**
* 遍历路由配置,动态注册 H5 和 PC 路由
*/
foreach ($arrRoutes['prefixes'] as $platform => $prefixes) {
$prefixes = is_array($prefixes) ? $prefixes : [$prefixes];
$boolIsMobile = $platform === 'h5';
foreach ($prefixes as $strPath) {
foreach ($arrRoutes['paths'] as $key => $arrUrl) {
foreach ($arrUrl as $strUrl) {
$strRoute = $strPath . $strUrl;
switch ($key) {
case 'latest':
//最新章节
$strView = 'pc/getNovelCatalog.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelCatalog.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
break;
case 'chapter':
//章节
$strView = 'pc/getNovelChapter.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelChapter.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})
->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
break;
case 'kan-novel':
//伪造小说详情
$strView = 'pc/getNovelInfo.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelInfo.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})
->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
break;
case 'novel':
//小说详情
$strView = 'pc/getNovelInfo.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelInfo.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})
->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
break;
case 'catalog':
//目录
$strView = 'pc/getNovelCatalog.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelCatalog.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})
->pattern(['n_id' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
break;
case 'library':
$strView = 'pc/getLibrary.html';
if ($platform == 'h5') {
$strView = 'novel/getLibrary.html';
}
//书库/分类
Route::get($strRoute, function () use ($strView) {
return view($strView);
})
->pattern([
'strGender' => '[a-z\-]*', // 允许空值
'strCategory' => '[a-z\-]*', // 允许空值
'strStatus' => '(all|lianzai|wanjie)?', // 允许空值
'strOrder' => '[a-z\-]*', // 允许空值
'intPage' => '\d*', // 允许空值
// 'strCategory' => 'all|xuanhuan-xiuzhen|junshi-xiaoshuo|wangyou-xiaoshuo|kehuan-xiaoshuo|zhongsheng-chuanyue|dushi-xiaoshuo|lingyi-xiaoshuo|yanqing-xiaoshuo|qita-xiaoshuo',
]);
break;
case 'library-index':
//书库/分类首页
$strView = 'pc/getLibrary.html';
if ($platform == 'h5') {
$strView = 'novel/getLibrary.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
});
break;
case 'rank':
//排行榜
$strView = 'pc/getNovelRank.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelRank.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
});
break;
case 'boys':
//男生
$strView = 'pc/getNovelChannel.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelChannel.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})->append(['strChannel' => 'man']);
//Route::get($strRoute, [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => $boolIsMobile, 'strChannel' => 'boys']);
break;
case 'girls':
//女生
$strView = 'pc/getNovelChannel.html';
if ($platform == 'h5') {
$strView = 'novel/getNovelChannel.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})->append(['strChannel' => 'women']);
//Route::get($strRoute, [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => $boolIsMobile, 'strChannel' => 'girls']);
break;
case 'search':
//搜素
$strView = 'pc/getSearchNovel.html';
if ($platform == 'h5') {
$strView = 'novel/getSearchNovel.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
})->ext('html');
break;
case 'user':
//用户中心
$strView = 'pc/user/index.html';
if ($platform == 'h5') {
$strView = 'user/index.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
});
break;
case 'bookshelf':
//书架
$strView = 'pc/user/getBookShelf.html';
if ($platform == 'h5') {
$strView = 'user/getBookShelf.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
});
break;
case 'history':
//历史记录
$strView = 'pc/user/getHistory.html';
if ($platform == 'h5') {
$strView = 'user/getHistory.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
});
break;
case 'index':
// 首页
if ($platform == 'h5') {
Route::get($strRoute, function (\think\Request $Request, SiteContext $SiteContext ) {
return view($SiteContext->getHomeView('h5'));
});
} else {
Route::get($strRoute, function (\think\Request $Request, SiteContext $SiteContext ) {
return view($SiteContext->getHomeView('pc'));
});
}
break;
case 'nindex':
// 首页
$strView = 'pc/index.html';
if ($platform == 'h5') {
$strView = 'index/index.html';
}
Route::get($strRoute, function () use ($strView) {
return view($strView);
});
break;
}
}
}
}
}
/**
* 遍历路由配置,动态注册 H5 和 PC 路由
*/
// foreach ($arrRoutes['prefixes'] as $platform => $prefixes) {
// $prefixes = is_array($prefixes) ? $prefixes : [$prefixes];
// $boolIsMobile = $platform === 'h5';
// foreach ($prefixes as $strPath) {
// foreach ($arrRoutes['paths'] as $key => $arrUrl) {
// foreach ($arrUrl as $strUrl) {
// $strRoute = $strPath . $strUrl;
// switch ($key) {
// case 'latest':
// //最新章节
// Route::get($strRoute, [Novel::class, 'getNovelLatestChapter'])
// ->append(['boolIsMobile' => $boolIsMobile])
// ->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
// break;
// case 'chapter':
// //章节
// Route::get($strRoute, [Novel::class, 'getNovelChapter'])
// ->append(['boolIsMobile' => $boolIsMobile])
// ->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'intChapterSort' => '\d+', 'intChapterPage' => '\d+']);
// break;
// case 'kan-novel':
// //伪造小说详情
// Route::get($strRoute, [Novel::class, 'getKanNovelInfo'])
// ->append(['boolIsMobile' => $boolIsMobile])
// ->pattern(['n_id' => '\d+', 'n_forge_id' => '\d+', 'name' => '[\w-]+',]);
// break;
// case 'novel':
// //小说详情
// Route::get($strRoute, [Novel::class, 'getNovelInfo'])
// ->append(['boolIsMobile' => $boolIsMobile])
// ->pattern(['n_id' => '\d+', 'name' => '[\w-]+',]);
// break;
// case 'catalog':
// //目录
// Route::get($strRoute, [Novel::class, 'getNovelCatalog'])
// ->append(['boolIsMobile' => $boolIsMobile])
// ->pattern(['intNovelId' => '\d+', 'name' => '[\w-]+', 'strOrder' => 'zheng|dao', 'intPage' => '\d+']);
// break;
// case 'library':
// //书库/分类 /shuku/all/xuanhuan-xiuzhen/all/all/page1
// Route::get($strRoute, [Novel::class, 'getLibrary'])
// ->append(['boolIsMobile' => $boolIsMobile])
// ->pattern([
// //'strGender' => 'all|nansheng-xiaoshuo|boys-novel|nansheng-shu|man-read|nansheng-book|male-novels|nvsheng-xiaoshuo|girls-novel|nvsheng-shu|woman-read|nvsheng-book|female-novels',
// 'strGender' => '[a-z\-]+',
// 'strCategory' => '[a-z\-]+',
// 'strStatus' => 'all|lianzai|wanjie',
// // 'strOrder' => '[a-z\-]+',
// 'intPage' => '\d+'
// ]);
// break;
// case 'library-index':
// //书库/分类首页
// Route::get($strRoute, [Novel::class, 'getLibrary'])->append(['boolIsMobile' => $boolIsMobile]);
// break;
// case 'rank':
// //排行榜
// Route::get($strRoute, [Novel::class, 'getNovelRank'])->append(['boolIsMobile' => $boolIsMobile]);
// break;
// case 'boys':
// //男生
// Route::get($strRoute, [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => $boolIsMobile, 'strChannel' => 'boys']);
// break;
// case 'girls':
// //女生
// Route::get($strRoute, [Novel::class, 'getNovelChannel'])->append(['boolIsMobile' => $boolIsMobile, 'strChannel' => 'girls']);
// break;
// case 'search':
// //搜素
// Route::get($strRoute, [Novel::class, 'getSearchNovel'])->ext('html')->append(['boolIsMobile' => $boolIsMobile]);
// break;
// case 'user':
// //用户中心
// Route::get($strRoute, [User::class, 'Index'])->append(['boolIsMobile' => $boolIsMobile]);
// break;
// case 'bookshelf':
// //书架
// Route::get($strRoute, [User::class, 'getBookShelf'])->append(['boolIsMobile' => $boolIsMobile]);
// break;
// case 'history':
// //历史记录
// Route::get($strRoute, [User::class, 'getHistory'])->append(['boolIsMobile' => $boolIsMobile]);
// break;
// case 'index':
// // 首页
// if ($platform == 'h5') {
// Route::get($strRoute, [Index::class, 'index'])->append(['boolIsMobile' => $boolIsMobile]);
// } else {
// Route::get($strRoute, [Index::class, 'getPcIndex'])->append(['boolIsMobile' => $boolIsMobile]);
// }
// break;
// }
// }
// }
// }
// }

View File

@@ -1,5 +0,0 @@
<?php
use app\services\SiteContext;
return app(SiteContext::class)->getViewConfig();

View File

@@ -1,249 +0,0 @@
<?php
declare(strict_types=1);
namespace app\home\controller;
use app\home\BaseController;
use app\model\ConverterMovel;
use app\model\DomainModel;
use app\model\CategoryModel;
use app\model\NovelModel;
use storage\StorageCore;
use think\facade\View;
use app\Request;
class Index extends BaseController
{
/**
* 首页-H5
*
* @param Request $Request
* @return void
*/
public function index(Request $Request)
{
$boolIsMobile = $Request->param('boolIsMobile');
$intTTL = 24 * 3600;
$NovelModel = NovelModel::getInstance();
$strTemplatesModel = $Request->TemplatesModel->t_code;
switch ($strTemplatesModel) {
case 'default':
// 默认模板 630zw
// TODO default模板-h5 首页数据: 获取所有分类数据,然后 每个分类 随机获取 10个小说 ,
// 所有分类数据 放到一个数组里, 前端一个循环渲染,排版都是一样的
$arrAllCategoryNovel = [];
View::assign([
'arrAllCategoryNovel' => $arrAllCategoryNovel,
]);
break;
case 'kuangYu':
$strKey = sprintf('%s:H5:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 0, 8);
$arrNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8, 0, NULL, ['n_update_time' => -1]);
$strKey = sprintf('%s:H5:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'daily', 0);
$arrDayRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'daily');
$strKey = sprintf('%s:H5:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 0);
$arrWeekRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'weekly');
$strKey = sprintf('%s:H5:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 0);
$arrMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'monthly');
$strStatus = '已完结';
$strKey = sprintf('%s:H5:INDEX:RANK:%s:%s', $Request->DomainModel->d_domain, 'total', 'finished');
$arrEndNovelRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'total', $strStatus);
/** @var DomainModel **/
$Request->DomainModel;
$strHostNovelDescriptionTemplate = $Request->DomainModel->getFomartSubject('INDEX_POPULAR_NOVELS');
$strNewsNovelDescriptionTemplate = $Request->DomainModel->getFomartSubject('INDEX_NEWS_NOVELS');
$strRankNovelDescriptionTemplate = $Request->DomainModel->getFomartSubject('INDEX_RANK_NOVELS');
$strHostNovelDescription = ConverterMovel::convert($strHostNovelDescriptionTemplate);
$strNewsNovelDescription = ConverterMovel::convert($strNewsNovelDescriptionTemplate);
$strRankNovelDescription = ConverterMovel::convert($strRankNovelDescriptionTemplate);
View::assign([
'arrDayRankNovel' => $arrDayRankNovel,
'arrWeekRankNovel' => $arrWeekRankNovel,
'arrMoonRankNovel' => $arrMoonRankNovel,
'arrEndNovelRankNovel' => $arrEndNovelRankNovel,
'strHostNovelDescription' => $strHostNovelDescription,
'strNewsNovelDescription' => $strNewsNovelDescription,
'strRankNovelDescription' => $strRankNovelDescription,
]);
break;
}
// 推荐等级为9的 随机15个小说
$strKey = sprintf('%s:H5:INDEX:TUIJIAN:%s', $Request->DomainModel->d_domain, 8);
$arrRecommendNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8);
$strKey = sprintf('%s:H5:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 0, 8);
$arrNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8, 0, NULL, ['og_novel_update_time' => -1]);
// Title 模板
ConverterMovel::setVal([
'strIndexTitle' => $this->request->DomainModel->d_index_title,
'strIndexKeywords' => $this->request->DomainModel->d_index_keywords,
'strIndexDescription' => $this->request->DomainModel->d_index_description,
]);
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE');
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@KEYWORDS');
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@DESCRIPTION');
$strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
$strDescription = ConverterMovel::convert($strDescriptionTemplate);
View::assign([
'arrRecommendNovel' => $arrRecommendNovel,
'arrNewsNovel' => $arrNewsNovel,
'strPageCode' => 'home',
'strTitle' => $strTitle,
'strKeywords' => $strKeywords,
'strDescription' => $strDescription,
]);
$strView = $boolIsMobile ? '' : 'pc/index';
$this->generateGrm(1, 0, 60);
return $this->rending($strView);
}
/**
* 首页数据-PC
* @param Request $Request
* @return void
*/
public function getPcIndex(Request $Request)
{
$boolIsMobile = $Request->param('boolIsMobile');
$intTTL = 24 * 3600;
$NovelModel = NovelModel::getInstance();
$strTemplatesModel = $Request->TemplatesModel->t_code;
$intRecommendSerializationNovel = 4;
$intRecommendEndNovel = 9;
switch ($strTemplatesModel) {
case 'default':
// TODO 1.获取所有分类数据,
// 2.然后 每个分类 随机获取 13个小说 ,
// 3.所有分类数据 放到一个数组里, 前端一个循环渲染,排版都是一样的
$arrAllCategoryNovel = [];
// TODO 最新入库小说 随机30个
$arrNewsNovel = [];
View::assign([
'arrAllCategoryNovel' => $arrAllCategoryNovel,
'arrNewsNovel' => $arrNewsNovel,
]);
break;
case 'kuangYu':
$intRecommendSerializationNovel = 13;
$intRecommendEndNovel = 12;
// 男生频道,最新的 随机5个小说
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 1, 5);
$arrBoyNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 1, NULL, ['n_update_time' => -1]);
// 男生频道,周排行榜 随机10个小说
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 1);
$arrBoyWeekRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 1, 'weekly');
// 男生频道,月排行榜 随机10个小说
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 1);
$arrBoyMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 1, 'monthly');
// 男生频道,总排行榜 随机10个小说
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'total', 1);
$arrBoyTotalRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 1, 'total');
// 女生频道,最新的 随机5个小说
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 2, 5);
$arrGirlNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 2, NULL, ['n_update_time' => -1]);
// 女生频道,周排行榜 随机10个小说
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 2);
$arrGirlWeekRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 2, 'weekly');
// 女生频道,月排行榜 随机10个小说
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 2);
$arrGirlMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 2, 'monthly');
// 女生频道,总排行榜 随机10个小说
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'total', 2);
$arrBGirlTotalRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 2, 'total');
View::assign([
'arrBoyNewsNovel' => $arrBoyNewsNovel,
'arrBoyWeekRankNovel' => $arrBoyWeekRankNovel,
'arrBoyMoonRankNovel' => $arrBoyMoonRankNovel,
'arrBoyTotalRankNovel' => $arrBoyTotalRankNovel,
'arrGirlNewsNovel' => $arrGirlNewsNovel,
'arrGirlWeekRankNovel' => $arrGirlWeekRankNovel,
'arrGirlMoonRankNovel' => $arrGirlMoonRankNovel,
'arrBGirlTotalRankNovel' => $arrBGirlTotalRankNovel,
]);
break;
}
// 推荐等级为9的连载的 随机15个小说
$strKey = sprintf('%s:PC:INDEX:TUIJIAN:%s', $Request->DomainModel->d_domain, $intRecommendSerializationNovel);
$arrRecommendSerializationNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, $intRecommendSerializationNovel, 0, NULL);
// 推荐等级为9的完结的 随机12个小说
$strKey = sprintf('%s:PC:INDEX:TUIJIAN:WANJIE:%s', $Request->DomainModel->d_domain, $intRecommendEndNovel);
$arrRecommendEndNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, $intRecommendEndNovel, 0, "已完结");
// 最近更新-随机50
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 0, 50);
$arrNewsUpdateNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 50, 0, NULL, ['n_update_time' => -1]);
// Title 模板
ConverterMovel::setVal([
'strIndexTitle' => $this->request->DomainModel->d_index_title,
'strIndexKeywords' => $this->request->DomainModel->d_index_keywords,
'strIndexDescription' => $this->request->DomainModel->d_index_description,
]);
// $strTitle = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__));
$strTitleTemplate = $Request->DomainModel->getFomartSubject('INDEX@INDEX@TITLE');
$strKeywordsTemplate = $Request->DomainModel->getFomartSubject('INDEX@INDEX@KEYWORDS');
$strDescriptionTemplate = $Request->DomainModel->getFomartSubject('INDEX@INDEX@DESCRIPTION');
$strTitle = ConverterMovel::convert($strTitleTemplate);
$strKeywords = ConverterMovel::convert($strKeywordsTemplate);
$strDescription = ConverterMovel::convert($strDescriptionTemplate);
View::assign([
'arrNewsUpdateNovel' => $arrNewsUpdateNovel,
'arrRecommendSerializationNovel' => $arrRecommendSerializationNovel,
'arrRecommendEndNovel' => $arrRecommendEndNovel,
'arrAdBanner' => [],
'strPageCode' => 'home',
'strTitle' => $strTitle,
'strKeywords' => $strKeywords,
'strDescription' => $strDescription,
]);
$strView = $boolIsMobile ? '' : 'pc/index';
$this->generateGrm(2, 0, 150);
return $this->rending($strView);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,102 +0,0 @@
<?php
declare(strict_types=1);
namespace app\home\controller;
use app\home\BaseController;
use app\model\NovelModel;
use think\facade\View;
use app\Request;
class User extends BaseController
{
public function index(Request $Request)
{
$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();
// 推荐等级为9的完结 随机15个小说
$intTTL = 24 * 3600;
$strKey = sprintf('%s:ALL:USER:TUIJIAN:WANJIE:%s', $Request->DomainModel->d_domain, 8);
$arrRecommendEndNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8, 0, "已完结");
$strKey = sprintf('%s:PC:NOVEL:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 0);
$arrMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 0, 'monthly');
View::assign([
'arrRecommendEndNovel' => $arrRecommendEndNovel,
'arrMoonRankNovel' => $arrMoonRankNovel,
'strNovelUrlTemp' => $strNovelUrlTemp,
'strNovelChapterUrlTemp' => $strNovelChapterUrlTemp,
'strSearchUrlTemp' => $strSearchUrlTemp,
]);
if ($boolIsMobile) {
$strView = '';
$this->generateGrm(1, 0, 20);
} else {
$strView = 'pc/user/index';
$this->generateGrm(2, 0, 20);
}
return $this->rending($strView);
}
public function getBookShelf(Request $Request)
{
$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([
'strPageCode' => 'BookShelf',
'strNovelUrlTemp' => $strNovelUrlTemp,
'strNovelChapterUrlTemp' => $strNovelChapterUrlTemp,
'strSearchUrlTemp' => $strSearchUrlTemp,
]);
if ($boolIsMobile) {
$strView = '';
$this->generateGrm(1, 0, 10);
} else {
$strView = 'pc/user/getBookShelf';
$this->generateGrm(2, 0, 10);
}
return $this->rending($strView);
}
public function getHistory(Request $Request)
{
$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([
'strPageCode' => 'history',
'strNovelUrlTemp' => $strNovelUrlTemp,
'strNovelChapterUrlTemp' => $strNovelChapterUrlTemp,
'strSearchUrlTemp' => $strSearchUrlTemp,
]);
if ($boolIsMobile) {
$strView = '';
$this->generateGrm(1, 0, 10);
} else {
$strView = 'pc/user/getHistory';
$this->generateGrm(2, 0, 10);
}
return $this->rending($strView);
}
}

View File

@@ -1,5 +0,0 @@
<?php
// 这是系统自动生成的event定义文件
return [
];

View File

@@ -1,12 +0,0 @@
<?php
// 这是系统自动生成的middleware定义文件
use app\services\SiteContext;
return [
function ($request, \Closure $next) {
app(SiteContext::class)->initCfg();
return $next($request);
},
];

View File

@@ -1,120 +0,0 @@
{extend name="baseH5" /}
{block name="title"}{site:replace code="INDEX@INDEX@TITLE"}{/block}
{block name="keywords"}{site:replace code="INDEX@INDEX@KEYWORDS"}{/block}
{block name="description"}{site:replace code="INDEX@INDEX@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="INDEX@INDEX@TITLE"}' />
<meta property="og:description" content='{site:replace code="INDEX@INDEX@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="INDEX@INDEX@TITLE"}',
"description": '{site:replace code="INDEX@INDEX@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:souurl key="search_term_string" p="1"/}',
"query-input": "required name=search_term_string"
}
}
</script>
{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
<h1 class="bookname">
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>-免费在线阅读热门小说
</h1>
{/block}
{block name="main"}
{site:grm page_code="h5_index" diff="0" num="100" g_key="arrGrm" /}
<h2 class="site-description">{$DomainModel->d_index_description}</h2>
<div class="wrap-box" style="margin-top:0;">
<h3 class="wrap-title"><span>封面推荐</span></h3>
<div class="rec-focus">
{novel:list count="8" sort_type="tuijian" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
<dl class="rec-focus-book">
<dt class="book-img">
{$arrGrm[$d_key]|raw}
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<img height="100" width="80" alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读"
src="{$Novel.n_cover_path ?? ''}">
</a>
</dt>
<dd class="book-info">
<h2><a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a></h2>
<p>作者:{$Novel.n_author}</p>
<p>{$Novel.n_description}</p>
</dd>
</dl>
{/novel:list}
</div>
</div>
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
<div class="wrap-box">
<h3 class="wrap-title">
<span>{$strCategoryName}</span>
<a class="more" href='{site:nflurl category="$strCategoryPinyin" status="all" order="all" page="1"/}'>更多..</a>
</h3>
<div class="sort-box">
<dl class="sort-book-first">
<?php $start = 1 ;$start +=1 ;?>
{novel:list count="1" n_category="$strCategoryPinyin" sort_type="news" d_key="d_key" d_val="Novel"
p_val="page_data" cache_life="86400"}
<dt class="book-img">
{$arrGrm[$d_key+8+10*$start]|raw}
<a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'><img
height="100" width="80" class="lazyload-img" data-encrypted="false"
src="/static/img/default.jpg" data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读"></a></dt>
<dd class="book-info">
<h4><a href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a></h4>
<p>作者:{$Novel.n_author}</p>
<p>{$Novel.n_description}</p>
</dd>
{/novel:list}
</dl>
<ul class="sort-book-list">
{novel:list count="9" n_category="$strCategoryPinyin" sort_type="news" d_key="d_key" d_val="Novel"
p_val="page_data" cache_life="86400"}
<li>
{$arrGrm[$d_key+8+10*$start]|raw}
<a
href='{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a><span>{$Novel.n_author}</span>
</li>
{/novel:list}
</ul>
</div>
</div>
{/novel:category}
{/block}
{block name="customize"}
{/block}

View File

@@ -1,18 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
<h1 class="logo">
<a href="/">狂雨小说</a>
</h1>
{/block}
{block name="main"}
<div style="height:50px"></div>
article.........
{/block}
{block name="customize"} {/block}

View File

@@ -1,46 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
<h1 class="logo">
<a href="/">狂雨小说</a>/文章
</h1>
{/block}
{block name="main"}
<div style="height:50px"></div>
<div class="mod mod-nav">
<div id="book-nav" class="book-nav">
<ul class="clearfix">
<li><a class="on" href="/article/list.html" btn="search_category">全部</a></li>
<li><a href="/article/list-1-1.html" btn="search_category">高考作文</a></li>
<li><a href="/article/list-2-1.html" btn="search_category">小说解读</a></li>
<li><a href="/article/list-3-1.html" btn="search_category">影视解说</a></li>
<li><a href="/article/list-4-1.html" btn="search_category">王者荣耀</a></li>
<li><a href="/article/list-5-1.html" btn="search_category">日常八卦</a></li>
<li><a href="/article/list-6-1.html" btn="search_category">其它</a></li>
</ul>
</div>
</div>
<div class="mod new-book">
<div class="mod-head">
<h3>深度解说列表</h3>
</div>
<div class="top-index">
<ul class="clearfix">
{foreach $arrNewsNovel as $key => $vo}
{include file="Public/articleList" /}
{/foreach}
</ul>
</div>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,178 +0,0 @@
{extend name="baseH5" /}
{block name="title"}{site:replace code="NOVEL@GETLIBRARY@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETLIBRARY@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="NOVEL@GETLIBRARY@TITLE"}' />
<meta property="og:description" content='{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}' />
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
<meta property="og:url" content="https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}" />
{else}
<meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}' />
{/if}
<meta property="og:type" content="book" />
<!-- 结构化数据 -->
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
<script type="application/ld+json">
{
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
"@type": "book",
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}'
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
}
</script>
{else}
<script type="application/ld+json">
{
"@context": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
"@type": "book",
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
}
</script>
{/if}
{/block}
{block name="head-js"}{/block}
{block name='nav-active-class'}home{/block}
{block name="body-class"}novel_home{/block}
{block name="logo-html"}
<h1 class="bookname">
<a href="/"
style="color:#ffffff">{$DomainModel->d_name}</a>-{$Request.route.strCategory}{$Request.route.strOrder}{$Request.route.strStatus}免费阅读
</h1>
{/block}
{block name="nav-html"}{/block}
{block name="main"}
{novel:pagerexp page="$Request.get.page" limit="30"
n_category="$Request.route.strCategory"
sort_type="$Request.route.strOrder"
n_status="$Request.route.strStatus" d_key="d_key"
d_key="d_key"
d_val="Novel" n_num="total"
button_num="5" cache_life="86400" func="generateCategoryPager" export_name="resData" /}
{site:grm page_code="h5_novel_library" diff="$resData.p_data.page" num="40" g_key="arrGrm" /}
<p class="site-description">{$strDescription??''}</p>
<div class="navpf">
<nav class="sortChannel_nav">
<a class="on">分类:</a>
<a class='{eq name="$Request.route.strCategory" value="all"}on on2 {/eq} {if !$Request.route.strCategory || $Request.route.strCategory == ""}on on2 {/if}'
href='{site:nflurl category="all" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'>全部分类</a>
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
<a class='{eq name="$Request.route.strCategory" value="$strCategoryPinyin"}on on2 {/eq}'
href='{site:nflurl category="$strCategoryPinyin" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'>{$strCategoryName}</a>
{/novel:category}
</nav>
<nav class="sortChannel_nav">
<a class="on">排序:</a>
{novel:sort d_key="key" d_val="strSortName"}
<a href='{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" order="$key" page="$Request.route.intPage"/}'
class='{eq name="$Request.route.strOrder" value="$key"}on on2 {/eq} {if $key == "all" && $Request.route.strOrder == ""}on on2 {/if}'>{$strSortName}</a>
{/novel:sort}
</nav>
<nav class="sortChannel_nav">
<a class="on">状态:</a>
{novel:status d_key="key" d_val="strStatusName"}
<a href='{site:nflurl category="$Request.route.strCategory" status="$key" order="$Request.route.strOrder" page="$Request.route.intPage"/}'
class='{eq name="$Request.route.strStatus" value="$key"}on on2 {/eq} {if $key == "all" && $Request.route.strStatus == ""}on on2 {/if}'
btn="search_category">{$strStatusName}</a>
{/novel:status}
</nav>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>更新列表</span></h3>
<ul class="sort_list">
{foreach $resData.data as $key=>$Novel}
<li>
<span class="s1">[{$Novel.n_category}]</span>
<span class="s2">
{$arrGrm[$key]|raw}
<a href='{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">{:date('m-d')}</span>
</li>
{/foreach}
</ul>
</div>
<div class="row sort_page_num">
{volist name="resData.p_data.pager" id="vo" key="k"}
{switch $vo.label}
{case value="上一页"}
{if $resData.p_data.page == 1}
<span>«</span>
{else}
<a href="{$vo.url}">«</a>
{/if}
{/case}
{case value="下一页"}
{if $resData.p_data.page >= $resData.p_data.total}
<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">
{novel:list count="8" sort_type="tuijian" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
<dl class="rec-focus-book">
<dt class="book-img">
{$arrGrm[$d_key+30]|raw}
<a href='{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='{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>
{/novel:list}
</div>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,268 +0,0 @@
{extend name="baseH5" /}
{block name="title"}{site:replace code="NOVEL@GETNOVELCATALOG@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETNOVELCATALOG@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETNOVELCATALOG@DESCRIPTION"}{/block}
{block name="head"}
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
{site:grm page_code="h5_novel_catalog " diff="$Request.url" num="120" g_key="arrGrm" /}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
<meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
<meta property="og:type" content="book" />
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
<meta property="og:site_name" content="{$DomainModel->d_name}" />
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
<meta property="og:novel:read_url"
content='https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
<meta property="og:novel:latest_chapter_name" content="{$arrNovel.n_latest_chapter_name ?? ''}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content='{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"image": "{$arrNovel.n_cover_path ?? ''}",
"url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}',
"genre": "{$arrNovel.n_category ??''}",
"inLanguage": "zh-CN",
"bookFormat": "https://{$DomainModel->d_domain}/EBook",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "100",
},
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://{$DomainModel->d_domain}"
},
{
"@type": "ListItem",
"position": 2,
"name": "{$arrNovel.n_category ??''}",
"item": 'https://{site:nflurl category="$arrNovel.n_category_pinyin" order="all" status="all" page="1"/}'
},
{
"@type": "ListItem",
"position": 3,
"name": "{$arrNovel['n_name']}",
"item": '{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
}
]
}
</script>
{/block}
{block name="head-js"}
{/block}
{block name="body-class"}novel_info{/block}
{block name="logo-html"}
<h2 class="bookname">
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>
</h2>
{/block}
{block name="nav-html"}
<nav class="breadcrumb" aria-label="breadcrumb">
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="/" itemprop="item">
<span itemprop="name">首页</span>
</a>
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{site:nflurl category="$arrNovel.n_category_pinyin" order="all" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' itemprop="item">
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}' itemprop="item">
<span itemprop="name">目录</span>
</a>
<meta itemprop="position" content="3" />
</li>
</ol>
</nav>
{/block}
{block name="main"}
{chapter:pagerexp page="$Request.route.intPage" limit="100" n_id="$Request.route.intNovelId" d_key="d_key" d_val="chapter"
cache_life="86400" button_num="3" sort_type="$Request.route.strOrder" func="generateChapterPager" export_name="resData" /}
<h1 class="site-description ">{$arrNovel['n_name']}最新章节 - {$arrNovel['n_author']} - {$DomainModel->d_name}</h1>
<div class="block-box">
<div class="book-main">
<div class="book-img">
<img src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节" class="lazy lazyload-img">
</div>
<div class="book-info">
<div class="bookname">
<h2>{$arrNovel.n_name}</h2><span class="author">{$arrNovel.n_author}
</span>
</div>
<p class="tag"><span class="blue">{$arrNovel.n_category}</span><span
class="green">{$arrNovel.n_status}</span>
</p>
<p class="update"><span>最近更新:</span><a href={site:lcpurl n_id="$arrNovel.n_id"
n_py="$arrNovel.n_name_pinyin" /}>{$arrLatestChapter->c_name
?? ""}</a></p>
<p class="time"><span>更新时间:</span>{$arrNovel.n_update_time} </p>
</div>
<div class="clear"></div>
<div class="book-detail-btn">
<ul class="btn-group">
<li class="btn-group-cell"><a class="btn-normal abt1" onclick="addBookshelfFun()">加入书架</a><a
class="btn-normal abt2"
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>开始阅读</a><a
class="btn-normal abt3"
href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
</li>
</ul>
</div>
</div>
</div>
<div class="description" style="font-size: 12px;padding:0px 10px 10px 10px; text-indent: 15px;">
{$arrNovel.n_description}
</div>
<h3 class="wrap-title">章节列表(第{$Request.route.intPage}页)
{if $Request.route.strOrder == 'zheng'}
<a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="dao" page="1"/}'
class="habt y">点击切换倒序</a>
{else}
<a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'
class="habt y">点击切换正序</a>
{/if}
</h3>
<div class="block-box">
<!-- 目录下拉分页-->
{include file="public/allChapterPage" start="1"/}
<ul class="chapter-list">
{foreach $resData.data as $key=>$Chapter}
<li>
{$arrGrm[$key]|raw}
<a href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$Chapter.c_sort_num" c_page="0"/}'
title="{$arrNovel['n_name']} {$Chapter.c_name}">{$Chapter.c_name}</a>
</li>
{/foreach}
</ul>
{include file="public/allChapterPage" /}
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>完结推荐</span></h3>
<div class="rec-focus">
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
<dl class="rec-focus-book">
<dt class="book-img">
{$arrGrm[$d_key+110]|raw}
<a href='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.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='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a>
</h2>
<p>作者:{$Novel.n_author}</p>
<p>{$Novel.n_description}</p>
</dd>
</dl>
{/novel:list}
</div>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>相邻小说</span></h3>
<div class="description" style="font-size: 12px;padding:0px 10px 10px 10px; text-indent: 15px;">
{$arrNovel.strFocus ?? ""} 。看小说就来{$DomainModel->d_name} {$DomainModel->d_domain}...
</div>
<div class="rec-focus" style="font-size:12px;">
{volist name='$arrNovel.arrRelateveNovel' id='Novel'}
<a href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>&nbsp;&nbsp;
{/volist}
{volist name='arrNovel.n_forge_novel' id='ForgeNovel'}
<a
href='{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>{$ForgeNovel.n_forge_title}</a>&nbsp;&nbsp;
{/volist}
</div>
</div>
<script>
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id': `{$arrNovel['n_id']}`,
'n_name_pinyin': `{$arrNovel['n_name_pinyin']}`,
'n_cover_path': `{$arrNovel['n_cover_path']}`,
'n_name': `{$arrNovel['n_name']}`,
'n_author': `{$arrNovel['n_author']}`,
'n_status': `{$arrNovel['n_status']}`,
'n_update_time': `{$arrNovel['n_update_time']}`,
'c_sort_num': 1,
'c_name': `第一章`,
};
</script>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,227 +0,0 @@
{extend name="baseH5" /}
{block name="title"}{site:replace code="NOVEL@GETNOVELCHAPTER@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETNOVELCHAPTER@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}{/block}
{block name="head"}
{site:grm page_code="h5_novel_chapter" diff="$Request.url" num="20" g_key="arrGrm" /}
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
{chapter:info n_id="$Request.route.intNovelId" c_sort_num="$Request.route.intChapterSort"
c_page="$Request.route.intChapterPage" c_key="arrChapter" /}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}' />
<meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
<meta property="og:type" content="book" />
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
<meta property="og:site_name" content="{$DomainModel->d_name}" />
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
<meta property="og:novel:read_url"
content='https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num"/}'>
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
<meta property="og:novel:latest_chapter_name" content="{$arrChapter.c_name}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"image": "{$arrNovel.n_cover_path ?? ''}",
"url":'https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num" c_page="0"/}',
"inLanguage": "zh-CN",
"genre": "{$arrNovel.n_category ??''}",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"hasPart": {
"@type": "CreativeWork",
"name": "{$arrChapter.c_name ?? ''}",
"url":'https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num" c_page="0"/}',
"description": '{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}'
}
}
</script>
{/block}
{block name="head-js"}
<script src="/template/default/h5/js/yueduqsbs.js"></script>
{/block}
{block name="body-class"}jjdfjkozd{/block}
{block name="body-id"}kkasdfei{/block}
{block name="logo-html"}
<h2 class="bookname">
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>
</h2>
{/block}
{block name="nav-html"}
<nav class="breadcrumb" aria-label="breadcrumb">
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="/" itemprop="item">
<span itemprop="name">首页</span>
</a>
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{site:nflurl gender="" category="$arrNovel.n_category_pinyin" order="all" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' itemprop="item">
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}' itemprop="item">
<span itemprop="name">{$arrChapter.c_name ?? ''}</span>
</a>
<meta itemprop="position" content="3" />
</li>
</ol>
</nav>
{/block}
{block name="main"}
<h1 class="site-description ">{$arrNovel['n_name']}最新章节 - {$arrChapter.c_name ?? ''}</h1>
<div class="set">
<div id="lightdiv" class="set1" onclick="nr_setbg('light')">关灯</div>
<div id="huyandiv" class="set1" onclick="nr_setbg('huyan')">护眼</div>
<div class="set2">
<span>字体:</span>
<span id="fontbig" onclick="nr_setbg('big')"></span>
<span id="fontmiddle" onclick="nr_setbg('middle')"></span>
<span id="fontsmall" onclick="nr_setbg('small')"></span>
</div>
</div>
<div class="content">
<h1 id="chaptername" class="chaptername">{$arrNovel.n_name}(第{$arrChapter.c_sort_num}页)</h1>
<div class="chapter-page-btn">
{$arrGrm[1]|raw}
<ul>
{if $arrChapter.c_sort_num == 1}
<li><a href='javascript:'>上一页</a></li>
{elseif $arrChapter['pre_chapter'] && $arrChapter['pre_chapter']['c_sort_num']}
<li><a
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.pre_chapter.c_sort_num" c_page="$arrChapter.pre_chapter.c_page"/}'>上一页</a>
</li>
{/if}
<li class="mulu"><a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a></li>
{if $arrChapter.next_chapter && $arrChapter.next_chapter.c_sort_num}
<li><a
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.next_chapter.c_sort_num" c_page="$arrChapter.next_chapter.c_page"/}'>下一页</a>
</li>
{/if}
</ul>
</div>
{$arrGrm[2]|raw}
<div class="txt" id="txt">
{$arrGrm[3]|raw}
<script>document.writeln(qsbs.bb('{$arrChapter.c_content}'));</script>
{$arrGrm[4]|raw}
</div>
<div class="chapter-page-btn">
{$arrGrm[5]|raw}
<ul>
{if $arrChapter.c_sort_num == 1}
<li><a href='javascript:'>上一页</a></li>
{elseif $arrChapter['pre_chapter'] && $arrChapter['pre_chapter']['c_sort_num']}
<li><a
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.pre_chapter.c_sort_num" c_page="$arrChapter.pre_chapter.c_page"/}'>上一页</a>
</li>
{/if}
<li class="mulu"><a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a></li>
{if $arrChapter.next_chapter && $arrChapter.next_chapter.c_sort_num}
<li><a
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.next_chapter.c_sort_num" c_page="$arrChapter.next_chapter.c_page"/}'>下一页</a>
</li>
{/if}
</ul>
{$arrGrm[6]|raw}
</div>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>完结推荐</span></h3>
<div class="rec-focus">
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel"
p_val="page_data" cache_life="86400"}
<dl class="rec-focus-book">
<dt class="book-img">
{$arrGrm[$d_key+6]|raw}
<a
href='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.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='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a>
</h2>
<p>作者:{$Novel.n_author}</p>
<p>{$Novel.n_description}</p>
</dd>
</dl>
{/novel:list}
</div>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>相邻小说</span></h3>
<div class="description" style="font-size: 12px;padding:0px 10px 10px 10px; text-indent: 15px;">
{$arrNovel.strFocus ?? ""} 。看小说就来{$DomainModel->d_name} {$DomainModel->d_domain}...
</div>
<div class="rec-focus" style="font-size:12px;">
{volist name='arrNovel.arrRelateveNovel' id='Novel'}
<a
href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>&nbsp;&nbsp;
{/volist}
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
<a
href='{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>{$ForgeNovel.n_forge_title}</a>&nbsp;&nbsp;
{/volist}
</div>
</div>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,258 +0,0 @@
$Novel.n_id{extend name="baseH5" /}
{block name="title"}{site:replace code="NOVEL@GETNOVELINFO@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETNOVELINFO@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}{/block}
{block name="head"}
{if $Request.route.intNovelId}
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
{else}
{novel:info n_id="$DomainModel->info_id" n_key="arrNovel" n_forge_id="0" /}
{/if}
{site:grm page_code="h5_novel_info" diff="$arrNovel.n_id" num="120" g_key="arrGrm" /}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
<meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
<meta property="og:type" content="book" />
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
<meta property="og:site_name" content="{$DomainModel->d_name}" />
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
<meta property="og:novel:read_url"
content='https://{$DomainModel->d_domain}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
<meta property="og:novel:latest_chapter_name" content="{$arrNovel.n_latest_chapter_name ?? ''}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content='{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"image": "{$arrNovel.n_cover_path ?? ''}",
"url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}',
"genre": "{$arrNovel.n_category ??''}",
"inLanguage": "zh-CN",
"bookFormat": "https://{$DomainModel->d_domain}/EBook",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "100",
},
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://{$DomainModel->d_domain}"
},
{
"@type": "ListItem",
"position": 2,
"name": "{$arrNovel.n_category ??''}",
"item": 'https://{site:nflurl category="$arrNovel.n_category_pinyin" order="all" status="all" page="1"/}'
},
{
"@type": "ListItem",
"position": 3,
"name": "{$arrNovel['n_name']}",
"item": '{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
}
]
}
</script>
{/block}
{block name="head-js"}
{/block}
{block name="body-class"}novel_info{/block}
{block name="logo-html"}
<h2 class="bookname">
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>
</h2>
{/block}
{block name="nav-html"}
<nav class="breadcrumb" aria-label="breadcrumb">
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="/" itemprop="item">
<span itemprop="name">首页</span>
</a>
<meta itemprop="position" content="1" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<?php $arrNovel['n_category_pinyin'] ?? $arrNovel['n_category_pinyin'] = 'all'?>
<a href='{site:nflurl category="$arrNovel.n_category_pinyin" order="all" status="all" page="1"/}' itemprop="item">
<span itemprop="name">{$arrNovel.n_category}</span>
</a>
<meta itemprop="position" content="2" />
</li>
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' itemprop="item">
<span itemprop="name">{$arrNovel['n_name']}</span>
</a>
<meta itemprop="position" content="3" />
</li>
</ol>
</nav>
{/block}
{block name="main"}
<h1 class="site-description ">{$arrNovel['n_name']}最新章节 - {$arrNovel['n_author']} - {$DomainModel->d_name}</h1>
<div class="block-box">
<div class="book-main">
<div class="book-img">
<img src="/static/img/default.jpg" data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节" class="lazy lazyload-img">
</div>
<div class="book-info">
<div class="bookname">
<h2>{$arrNovel.n_name}</h2><span class="author">{$arrNovel.n_author}
</span>
</div>
<p class="tag"><span class="blue">{$arrNovel.n_category}</span><span
class="green">{$arrNovel.n_status}</span>
</p>
<p class="update"><span>最近更新:</span><a href={site:lcpurl n_id="$arrNovel.n_id"
n_py="$arrNovel.n_name_pinyin" /}>{$arrLatestChapter->c_name
?? ""}</a></p>
<p class="time"><span>更新时间:</span>{$arrNovel.n_update_time} </p>
</div>
<div class="clear"></div>
<div class="book-detail-btn">
<ul class="btn-group">
<li class="btn-group-cell"><a class="btn-normal abt1" onclick="addBookshelfFun()">加入书架</a><a
class="btn-normal abt2"
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>开始阅读</a><a
class="btn-normal abt3"
href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
</li>
</ul>
</div>
</div>
</div>
<div class="description" style="font-size: 12px;padding:0px 10px 10px 10px; text-indent: 15px;">
{$arrNovel.n_description}
</div>
<h3 class="wrap-title">最新章节</h3>
<div class="block-box">
<ul class="chapter-list">
{chapter:list count="10" sort_type="dao" n_id="$arrNovel.n_id" d_key="d_key" d_val="Chapter" cache_life="86400"}
<li>
{$arrGrm[$d_key]|raw}
<a
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$Chapter.c_sort_num" c_page="0"/}'>{$Chapter.c_name}<span></span></a>
</li>
{/chapter:list}
</ul>
<a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'
class="btn-mulu">查看更多章节...</a>
</div>
<div class="clear"></div>
<h3 class="wrap-title">章节列表</h3>
<div class="block-box">
<ul class="chapter-list">
{chapter:list count="100" sort_type="zheng" n_id="$arrNovel.n_id" d_key="d_key" d_val="Chapter" cache_life="86400"}
<li>
{$arrGrm[$d_key+10]|raw}
<a
href='{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$Chapter.c_sort_num" c_page="0"/}'>{$Chapter.c_name}<span></span></a>
</li>
{/chapter:list}
</ul>
<a href='{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'
class="btn-mulu">查看更多章节...</a>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>完结推荐</span></h3>
<div class="rec-focus">
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
<dl class="rec-focus-book">
<dt class="book-img">
{$arrGrm[$d_key+110]|raw}
<a href='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.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='{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a>
</h2>
<p>作者:{$Novel.n_author}</p>
<p>{$Novel.n_description}</p>
</dd>
</dl>
{/novel:list}
</div>
</div>
<div class="wrap-box">
<h3 class="wrap-title"><span>相邻小说</span></h3>
<div class="description" style="font-size: 12px;padding:0px 10px 10px 10px; text-indent: 15px;">
{$arrNovel.strFocus ?? ""} 。看小说就来{$DomainModel->d_name} {$DomainModel->d_domain}...
</div>
<div class="rec-focus" style="font-size:12px;">
{volist name='$arrNovel.arrRelateveNovel' id='Novel'}
<a href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>&nbsp;&nbsp;
{/volist}
{volist name='arrNovel.n_forge_novel' id='ForgeNovel'}
<a
href='{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>{$ForgeNovel.n_forge_title}</a>&nbsp;&nbsp;
{/volist}
</div>
</div>
<script>
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id': `{$arrNovel['n_id']}`,
'n_name_pinyin': `{$arrNovel['n_name_pinyin']}`,
'n_cover_path': `{$arrNovel['n_cover_path']}`,
'n_name': `{$arrNovel['n_name']}`,
'n_author': `{$arrNovel['n_author']}`,
'n_status': `{$arrNovel['n_status']}`,
'n_update_time': `{$arrNovel['n_update_time']}`,
'c_sort_num': 1,
'c_name': `第一章`,
};
</script>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,119 +0,0 @@
{extend name="baseH5" /}
{block name="title"}{site:replace code="NOVEL@GETSEARCHNOVEL@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETSEARCHNOVEL@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETSEARCHNOVEL@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content={site:replace code="NOVEL@GETSEARCHNOVEL@TITLE"} />
<meta property="og:description" content='{site:replace code="NOVEL@GETSEARCHNOVEL@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}{site:souurl key='$Request.get.keyword' p='1'/}" />
<meta property="og:type" content="book" />
<meta property="og:site_name" content="{$DomainModel->d_name}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{$Request.get.keyword} - {$DomainModel->d_name}搜索 - 第{$Request.get.intPage}页">
<meta name="twitter:description" content="{$Request.get.keyword}搜索结果第{$Request.get.intPage}页,免费阅读小说,快来体验!">
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SearchResultsPage",
"url": "https://{$DomainModel->d_name}{site:souurl key='$Request.get.keyword' p='1'/}",
"name": "{$DomainModel->d_name} - {$DomainModel->d_name}搜索 第{$Request.get.intPage}页",
"description": "搜索‘{$Request.get.keyword}’结果第{$Request.get.intPage}页,提供{$Request.get.keyword}创作的小说免费阅读。",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"mainEntity": {
"@type": "Book",
"name": "{$DomainModel->d_name}",
"author": {
"@type": "Person",
"name": "{$DomainModel->d_name}"
},
"url": "https://{$DomainModel->d_domain}"
}
}
</script>
{/block}
{block name='nav-active-class'}home{/block}
{block name="body-class"}novel_so novel_search_page{/block}
{block name="logo-html"}
<h2 class="bookname">
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>
</h2>
{/block}
{block name="main"}
{novel:pagerexp page="$Request.get.page" limit="30"
key="$Request.get.keyword"
d_key="d_key"
d_val="Novel"
p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager" export_name="resData" /}
{site:grm page_code="h5_novel_search" diff="$Request.url" num="30" g_key="arrGrm" /}
<div class="wrap-box">
<h1><span>{$Request.get.keyword}</span>搜索结果 - {$DomainModel->d_name} 第{$resData.p_data.page}页</h1>
{if $resData.p_data.total < 1} <p style="text-align: center;line-height: 60px">没有相关数据</p>
{else}
<div class="rec-focus">
{foreach $resData.data as $key=>$Novel}
<dl class="rec-focus-book">
<dt class="book-img">
{$arrGrm[$key]|raw}
<a href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>
<img height="100" width="80" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel['n_name'] ?? ''}小说封面 - {$Novel.n_author}最新章节" class="lazy lazyload-img">
</a>
</dt>
<dd class="book-info">
<h2><a href='{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a></h2>
<p>作者:{$Novel.n_author}</p>
<p>{$Novel.n_description}</p>
</dd>
</dl>
{/foreach}
</div>
{/if}
</div>
<div class="row sort_page_num">
{volist name="$resData.p_data.pager" id="vo" key="k"}
{switch $vo.label}
{case value="上一页"}
{if $resData.p_data.page == 1}
<span>«</span>
{else}
<a href="{$vo.url}">«</a>
{/if}
{/case}
{case value="下一页"}
{if $resData.p_data.page >= $resData.p_data.total}
<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>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,11 +0,0 @@
<!-- <div class="adv">
<a href="#" title="" target="_blank">
<img src="/template/kuangyu/home/bai_web/images/grey.gif"
data-src="/template/kuangyu/home/bai_web/images/1120x100.png" class="lazyload" alt="">
</a>
</div> -->
<a href="#" title="" target="_blank">
<img src="/template/kuangyu/home/bai_web/images/grey.gif"
data-src="/template/kuangyu/home/bai_web/images/1120x100.png" class="lazyload" alt="">
</a>

View File

@@ -1,35 +0,0 @@
{if !empty($resData.p_data.pager)}
<div class="page_num">
{volist name="$resData.p_data.pager" id="item"}
{eq name="item.type" value="prev"}
<a href="{$item.url ? $strPcPath . $item.url: 'javascript:void(0)'}"
class="z {$item.disabled ? 'disabled' : ''}">
{$item.label}
</a>
{/eq}
{/volist}
<select onchange="self.location.href=options[selectedIndex].value">
{volist name="$resData.p_data.pager" id="item"}
{eq name="item.type" value="page"}
<?php $intLimit = $resData['p_data']['limit']; ?>
<?php $start = ($item['label'] - 1) * $intLimit + 1; ?>
<?php $end = $item['label'] * $intLimit; ?>
<option value="{$strPcPath}{$item.url}" {$item.current ? 'selected' : ''}>
第{$start}-{$end}章
</option>
{/eq}
{/volist}
</select>
{volist name="$resData.p_data.pager" id="item"}
{eq name="item.type" value="next"}
<a href="{$item.url ? $strPcPath . $item.url: 'javascript:void(0)'}"
class="y {$item.disabled ? 'disabled' : ''}">
{$item.label}
</a>
{/eq}
{/volist}
</div>
{/if}

View File

@@ -1,12 +0,0 @@
<li>
<ul>
<li class="lb"><a href="/pc/article/info-332.html" target="_blank">耽美百合</a></li>
<li class="sm">
<h3><a href="/pc/article/info-332.html" title="我真是一条龙" target="_blank">我真是一条龙</a></h3>
</li>
<li class="gx"><a href="/pc/article/info-332.html" title="老读者必看公告!!!"
target="_blank">老读者必看公告!!!</a></li>
<li class="zz">兔子很淡定</li>
<li class="sj">1天前</li>
</ul>
</li>

View File

@@ -1,6 +0,0 @@
<li id="chapter-4b2d5aab58d71" class="on">
<a href="chapter/1-1-1.html">01 天龙问世</a>
</li>
<li id="chapter-486ef2abee55d">
<a href="/chapter/1-1-1.html">02 沧武的小霸王</a>
</li>

View File

@@ -1,11 +0,0 @@
<li>
<a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
alt="落魄千金美食发家日常">
</a>
<div class="book_inf">
<h3><a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank">落魄千金美食发家日常</a></h3>
<span class="aut">鱼昆子</span>
</div>
</li>

View File

@@ -1,22 +0,0 @@
<div class="foot">
<div class="foot_T">
<div class="tWrap">
<p>友情链接</p>
<ul>
<li><a href="http://www.kyxscms.com" target="_blank">狂雨小说cms</a></li>
</ul>
</div>
</div>
<div class="foot_B">
<p class="Co">
Copyright (C) 2008-2020 All rights reserved
<br>
<a href="javascript:void(0)" style="margin: 0 10px;"></a>
</p>
<p>请所有作者发布作品时务必遵守国家互联网信息管理办法规定,我们拒绝任何色情小说,一经发现,即作删除!本站所收录作品、社区、书库评论及本站所做之广告均属其个人行为,与本站立场无关</p>
</div>
</div>
<span class="gotop" id="btn_back_top" title="返回顶部">
<img src="/template/kuangyu/home/bai_web/images/gotop.png" data-src="/template/kuangyu/home/bai_web/images/gotop.png" alt="返回顶部"
ysrc="/template/kuangyu/home/bai_web/images/gotop.png">
</span>

View File

@@ -1,23 +0,0 @@
<tr>
<td>
<a href="/pc/novel/332.html" target="_blank">
<img class="lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"></a>
</td>
<td class="t2">
<a href="/pc/novel/332.html" target="_blank">我真是一条龙</a>
</td>
<td class="t3">
<a href="/pc/chapter/1-1-1.html" target="_blank">老读者必看公告!!!</a>
</td>
<td class="t4">
<a href="/pc/novel/332.html" target="_blank">兔子很淡定</a>
</td>
<td class="t5">3天前</td>
<td class="t6">已完结</td>
<td class="t7">
<a href="/pc/chapter/1-1-1.html" class="goon" target="_blank">阅读</a>
<i><span class="Collection" ajax-get="" >删除</span></i>
</td>
</tr>

View File

@@ -1,15 +0,0 @@
<div class="bookLink">
<a href="/pc/novel/265.html" target="_blank">
<div class="bookImg">
<img class="lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg">
</div>
<div>
<h2>重生八零:寡妇带娃巧发家</h2>
<span>姣大憨</span>
<p> 【萌宝+美食+种田+爽文】现代单身美食博主许芳华一朝穿越,竟成为八零年代小寡妇。 丈夫因公殉职,婆婆小姑子霸占抚恤金不撒手,婆家兄长对这三间瓦房虎视眈眈。
许芳华看着怀里瑟瑟发抖的小女儿,撸起袖子就去虐渣。吃了我的给我吐出来,占了我的给我还回来! 作为一个现代独立女性,看她如何用美食养娃致富,人生赢家妥妥的!
本站提示各位书友要是觉得《重生八零寡妇带娃巧发家》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦</p>
</div>
</a>
</div>

View File

@@ -1,3 +0,0 @@
<div class="bookLink oneLine">
<a href="/pc/novel/293.html" target="_blank"><em>「武侠仙侠」</em>玻璃焰</a>
</div>

View File

@@ -1,17 +0,0 @@
<li>
<h3><a href="/pc/novel/293.html" title="玻璃焰" target="_blank">玻璃焰</a></h3>
<div class="book_inf">
<span class="aut">美绿哔哔</span>
<span class="tag"><a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
<a href="/pc/novel/293.html" title="玻璃焰" target="_blank" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
alt="玻璃焰">
</a>
<p class="int"> 已签约实体待上市【天生坏种x清冷校花】【大学校园、男追女、协议情侣、强制爱、破镜重圆】黎幸在整个西京大学都很有名。
高考状元,够美,够穷。这样的人,外貌不是恩赐,是原罪。楼崇,出生即登上金字塔最顶层的存在优越家世,顶级皮囊但却是个十足十的人渣。
——这样两个毫无交集的人,某天却被人撞见楼崇的阿斯顿马丁车内黎幸被单手抱起跨坐在腿上,后背抵着方向盘车窗光影交错,男人冷白精致的侧脸清晰可见,扣着她的手腕,亲自教她怎么扯开自己的领结。
—— “协议女友,知道什么意思吗?” “意思是牵手,接吻,拥抱,上床。” “以及,爱上我。” “一步不能少。”—— “玻璃焰,玻璃高温产生的火焰,银蓝色,很美。”
本站提示各位书友要是觉得《玻璃焰》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦</p>
</div>
</li>

View File

@@ -1,44 +0,0 @@
<div class="f3_L">
<h3><a href="/pc/novel/294.html" title="渣攻的白月光总对我打直球" target="_blank">渣攻的白月光总对我打直球</a></h3>
<a href="/pc/novel/294.html" title="渣攻的白月光总对我打直球" target="_blank" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
alt="渣攻的白月光总对我打直球">
</a>
<div class="book_inf">
<div class="book_inf01">
<span class="aut">作者:不见仙踪</span>
<span class="fr">分类:<a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
<span>字数24.20万字+</span>
<span class="fr">进度:已完结</span>
<span>总点击0</span>
</div>
<p class="int"> 【下本开《分手后四个鬼攻同时找上我》嗷~】 大二上学期,宣从南被一个温柔至极的男人追求;大二下学期,宣从南和沈迁在一起。
两个人谈了一年恋爱,宣从南发现,沈迁照常温柔,但他却常常把这样的话挂在嘴边: “不要笑。” “安静一点。” “不要太闹腾。” “眼里不要有温度。” “这样才像他。” 宣从南:……哦。
宣从南走了,潇洒果决,晚上却在路边捡到一个看起来落魄至极的男人。他耷拉着眉眼,带口罩,安静地坐在花坛边,似乎是在晒月光。 这人倒是很安静,还不笑,更不闹腾,眼里也没有温度。
宣从南把人捡回家了。他发现,这个名叫顾拾的男人竟然是娱乐圈里的顶流,只不过他不太关注娱乐圈,这才错误地把拥有千万粉丝的人捡回了家。
宣从南还发现,顾拾虽然过分冷淡,但他打直球说能不能喜欢我;顾拾虽然安静不闹腾,但他打直球说能不能抱抱我;顾拾虽然眼睛里没什么温度,但他打直球说能不能做…… 宣从南:这就是顶流吗?
“同居”段时间,两人顺理成章地谈恋爱。 又同居段时间,宣从南忽而得知顾拾就是沈迁爱而不得的白月光。 宣从南:……命运啊。
为了避免尴尬,他收拾行李又打算跑,刚走到门口却只听一道开门声,顾拾裹挟着外面的寒气进来,轻轻带上门。 宣从南:…… 顾拾冷淡的目光从上到下打量他,最后落在行李箱上。 “去哪儿?”他问。
宣从南捏紧行李杆,正欲说话,顾拾又道: “你想甩了我?” …… 这天晚上有狗仔拍到顾拾进了一间出租屋。 除了顾拾,窗户玻璃上还映出另外一道男性身影,他手边还有个行李箱。
紧接着,一向喜怒不形于色的顾拾猛地推开行李箱,拽起另一人的手腕去了卧室。 一夜没出来。 【阅读指南】: 1V1HE甜文。 *攻非常非常非常爱受,非常非常非常宠受
*攻能直球绿茶也能偏执疯批,属性复杂,天使们直接看文叭 *有打脸剧情 *无原型,勿代入现实。我写文为了快乐,也只想让读者快乐~ *感谢支持正版,给大家鞠躬啦~
★下本《分手后四个鬼攻同时找上我》求收藏~ 宴祀亭是个小道士,山生山长,没见过外面的天,最大的雄心壮志是杀死鬼王。 但他怕鬼,还花心。 下山后进城,他在酒吧泡了一个大学教授做男朋友。
教授克制古板,一副性冷淡的模样。 但他“暴力”且沉沦地教会了宴祀亭在床上的108种姿势。 每天晚上宴祀亭都被哔的“身心俱散”。 随着感情渐深,教授带宴祀亭回家见父母。 他家里有鬼,好多鬼。
那些鬼躲在门外、趴在床底听他和教授...... 宴祀亭瑟瑟发抖,教授却像没事人,依然一次比一次深入。 宴祀亭:师父救命——
日复一日,教授变得愈发过分。他中午要抱宴祀亭亲昵,下午要抱宴祀亭厮磨,晚上要抱宴祀亭深入交流,非常不节制。 最后他还设门禁时间限制宴祀亭的出行,控制欲极强。 宴祀亭受不了,把人踹了。
他谈了第二个男朋友。 但为什么温柔先生最后因他变得野蛮,各种道具都上场; 绅士先生因他变成恶棍,让他不准离开自己的视线; 禁欲先生因他变得纵荡,永远都要按着他驰骋......
宴祀亭:师父我遇到了好多变态,我要回山立刻马上! 身心遭受“严重摧残”的宴祀亭决定封心锁爱,这辈子都不要泡男人了,要去完成自己的雄心壮志——杀死鬼王。
紧接着被甩的教授将他堵在家门口,唇角带笑声含魅:“不是要杀我吗?我来了。” 晦暗夜色下,教授身后又慢慢浮现出温柔先生、绅士先生、禁欲先生的身影,他们都在盯着宴祀亭。
教授柔声道:“你是要我们一起来,还是一个一个来呢。” 宴祀亭抖如筛糠无可逃脱地被他们推进了卧室。恶鬼们商量谁先来,最后愉快地决定一起。 “不要,救命啊啊啊啊啊啊啊啊啊——” *切片攻
*所有躲门外趴床底听床戏的,都是攻的切片 ★求预收《不是人也能攻我?》收藏~ 司徒禁肩宽窄腰身材好胸肌饱满腿长在男同界是被许多人觊觎的优质1。
有人找司徒禁拍钙片,身为直男的司徒禁果断拒绝。 等再醒来,司徒禁发现他穿到了异世界。 这里到处是妖魔鬼怪。
司徒禁有个极倒霉的倒霉体质,喝凉水塞牙缝,吃东西噎喉咙,睡觉能窒息。再又一次平地摔跤后,司徒禁气得破口大骂。 那些神经病又来了。 玛德,这次还敢撕他衣服!
这个世界不止他一个倒霉蛋还有ABCDE等男人进来了。 老乡见老乡两眼泪汪汪,司徒禁和大家互相扶持,把这群想上他的变态杀得四处逃窜。 然后有一天,司徒禁看见男人 A 帮鬼撕碎了他的上衣。
司徒禁:? 男人B帮鬼扯烂了他的裤子。 司徒禁:?? 男人C帮鬼拽掉了他的衬衫夹。 司徒禁:??? 混乱中,谁摸了他的胸肌! 谁捏了他的屁股!! 谁掰开了他的腿!!!
司徒禁冷笑:想攻我的千千万,你算哪块小饼干?! ABCDE 得逞,鬼得逞,怪物藤蔓得手,触手得逞...... 被迫野战后司徒禁躺在草地里抽事后烟,沉思:是个人都能攻我?不是人也能攻我?
而他不知道,他进入的异世界其实是一个系列视频,无数观众坐在电视机前,每天就为了看他闯关。 司徒禁:什么关?“床”关吗? *切片攻,每个都为了受打得头破血流,甚至想杀了自己的分身
*受极度理智冷静大胸美人 *攻疯得一批,每个切片都想独占囚禁受 *直播镜头前的观众只能看正经闯关,其他的看不到,花钱做榜一也没用
本站提示各位书友要是觉得《渣攻的白月光总对我打直球》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦</p>
</div>
</div>

View File

@@ -1,16 +0,0 @@
<li>
<em class="red_bg">{$key+=1}</em>
<h3 class="name"><a href="/pc/novel/276.html" title="娱乐宗师" target="_blank">娱乐宗师</a></h3>
<div class="open">
<a href="/pc/novel/276.html" title="娱乐宗师" target="_blank" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg" alt="娱乐宗师">
</a>
<div class="book_inf">
<span class="aut">作者:猩猩崛起</span>
<span>类别:<a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
<p class="int"> 小工作室的微电影导演,重生平行世界!踏上娱乐征途!
本站提示各位书友要是觉得《娱乐宗师》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦</p>
</div>
</div>
</li>

View File

@@ -1,26 +0,0 @@
<li class="lis_sh">
<em class="red_bg">1</em>
<h3 class="name"><a href="/pc/novel/275.html" title="捻转步舞曲[花滑]" target="_blank">捻转步舞曲[花滑]</a>
</h3>
<div class="open">
<a href="/pc/novel/275.html" title="捻转步舞曲[花滑]" target="_blank" class="book_cov">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg" alt="捻转步舞曲[花滑]">
</a>
<div class="book_inf">
<span class="aut">作者梧桐树下wt</span>
<span>类别:<a href="/lists/19.html" target="_blank">武侠仙侠</a></span>
<p class="int"> 【本文将会于2023年9月30日星期六入V谢谢支持】 【求投票——《成长·逆袭》主题征文——作品投票——鱼跃龙门后来居上】
【每5K营养液加更一章】 作为刚升组没多久,在华国内难得可以跳跃演绎两手抓的男子单人花滑选手,郁辰被队里的教练们给予极大的厚望。
并且整个教练团也在想尽各种方法教导这位,冰上冰下两个样子,经常会躲起来不见人的闷葫芦。 “到底有什么办法,能让那家伙在冰下的时候,有上冰那会百分之一的灵气啊!”
只有郁辰他本人知道——他无论什么时候,都爱惨了艺术与冰面结合起来的样子。 ——只是台下之后,不会表达而已。
一切的变动,从他没忍住在莫斯科赛后偷瞒着教练,去看了一场芭蕾舞舞台剧之后。 追着一见钟情的男孩来到异国,并且努力学了中文的佐切卡:你好,郁!能我你拥抱?
沉思了好久,才理清楚他语法顺序的郁辰:你学顺了中文再和我说话吧。 佐切卡(惊喜):那就是可以了!
于是某位男单运动员就被纤细高挑练跳舞的熊抱住了一个下午,跑都跑不掉。 来自莫斯科的芭蕾舞者X略显自闭的花滑选手 1、故事里面所有人物故事经历都没有原型。
2、作者对于花滑的认知还没有到完全专业水平但是所有技术动作描写比赛规则描述都有资料支持。
3、如果有技术问题需要讨论可以随时留评我看到后会回复的。看了每章词汇解释还是不懂的话也可以留评我会想办法换一种解释试试看的作者是真想教会你们滑冰系列
4、最重要一点——无论怎么样的情感下都请不要轻易怀疑运动员对该项目的热爱。 5、停在4好像不太好所以写了个5
本站提示:各位书友要是觉得《捻转步舞曲[花滑]》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦</p>
</div>
</div>
</li>

View File

@@ -1,12 +0,0 @@
<li>
<ul>
<li class="lb"><a href="/" target="_blank">耽美百合</a></li>
<li class="sm">
<h3><a href="/pc/novel/332.html" title="我真是一条龙" target="_blank">我真是一条龙</a></h3>
</li>
<li class="gx"><a href="/pc/chapter/1-1-1.html" title="老读者必看公告!!!"
target="_blank">老读者必看公告!!!</a></li>
<li class="zz">兔子很淡定</li>
<li class="sj">1天前</li>
</ul>
</li>

View File

@@ -1,32 +0,0 @@
<li>
<a href="/pc/novel/334.html" target="_blank" class="book_cov" title="落魄千金美食发家日常">
<img class="lazyload_book_cover lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg" alt="落魄千金美食发家日常">
</a>
<div class="book_inf">
<h3><a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank">落魄千金美食发家日常</a></h3>
<p>
<span>作者:<a href="/search/%E9%B1%BC%E6%98%86%E5%AD%90.html" title="鱼昆子">鱼昆子</a></span>
<span>分类:<a href="/lists/4.html" title="男生">男生</a></span>
<span>状态:已完结</span>
<span>总字数43.80万字+</span>
</p>
<p class="tags">
<i>标签:</i>
<i></i>
</p>
<p><b>最近更新:</b><a href="/pc/chapter/1-1-1.html" title="219 桃花酿" target="_blank">219 桃花酿</a>
</p>
<p class="int"> 正文已完结,福利番外待续! 预收《癫疯人生有多爽你知道吗》《当家主母的咸鱼美食日常》戳专栏求收藏。 ——————— 温仲夏身为百万粉丝美食博主,一朝穿越。
好消息,穿成尚书千金。 坏消息,父兄获罪被贬到千里之外。 身边只有一个柔弱的嫂嫂和年幼的小弟。 开局就是一个交不上房租,大雪天几乎要流落街头的惨境。 温仲夏来不及哭,撸起袖子就是干。
红烧肉火锅烧烤爆米花卷饼卤肉奶茶小蛋糕…… 她就不信这些东京人都不爱吃。 不成的话,她还有麻辣烫烤鸭炸鸡酸辣粉炸酱面汤圆大馄饨…… 一不小心,落魄千金混成东京知名女掌柜。 …… 小剧场:
一众贵女听闻温仲夏当街叫卖吃食后,纷纷对她这种抛头露面的行为狠狠批判。 几天后,她们却在温仲夏的食店门口不期而遇。 “你怎么来了,不会是来买蛋挞的吧?” “难道你也是?”
“我可不是,我还要买奶油蛋糕呢。” 说好的不齿与之为伍呢? 这时店内传来吆喝:“数量有限,先到先得。” 贵女们忙不迭地往里冲。 “我先来的!” ①本文主线是美食和日常。
②背景主要参考宋朝,不严谨的地方请见谅。
本站提示各位书友要是觉得《落魄千金美食发家日常》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦</p>
</div>
<div class="right">
<span>更新时间2025-03-20 23:59</span>
<a href="/pc/novel/334.html" target="_blank" class="read_btn btn">立即阅读</a>
</div>
</li>

View File

@@ -1,7 +0,0 @@
<li>
<a href="/pc/novel/334.html" title="落魄千金美食发家日常" target="_blank" class="book_cov">
<img class="lazyload_lb_nv lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
alt="落魄千金美食发家日常">
</a>
</li>

View File

@@ -1,6 +0,0 @@
<li data-desc=" 正文已完结,福利番外待续! 预收《癫疯人生有多爽你知道吗》《当家主母的咸鱼美食日常》戳专栏求收藏。 ——————— 温仲夏身为百万粉丝美食博主,一朝穿越。 好消息,穿成尚书千金。 坏消息,父兄获罪被贬到千里之外。 身边只有一个柔弱的嫂嫂和年幼的小弟。 开局就是一个交不上房租,大雪天几乎要流落街头的惨境。 温仲夏来不及哭,撸起袖子就是干。 红烧肉火锅烧烤爆米花卷饼卤肉奶茶小蛋糕…… 她就不信这些东京人都不爱吃。 不成的话,她还有麻辣烫烤鸭炸鸡酸辣粉炸酱面汤圆大馄饨…… 一不小心,落魄千金混成东京知名女掌柜。 …… 小剧场: 一众贵女听闻温仲夏当街叫卖吃食后,纷纷对她这种抛头露面的行为狠狠批判。 几天后,她们却在温仲夏的食店门口不期而遇。 “你怎么来了,不会是来买蛋挞的吧?” “难道你也是?” “我可不是,我还要买奶油蛋糕呢。” 说好的不齿与之为伍呢? 这时店内传来吆喝:“数量有限,先到先得。” 贵女们忙不迭地往里冲。 “我先来的!” ①本文主线是美食和日常。 ②背景主要参考宋朝,不严谨的地方请见谅。
本站提示各位书友要是觉得《落魄千金美食发家日常》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦" class="on">
<s class="arr"></s>
<s class="xh">1</s>
<i>落魄千金美食发家日常</i>
</li>

View File

@@ -1,49 +0,0 @@
{extend name="basePc" /}
{block name="title"}我的书架{/block}
{block name="keywords"}我的书架{/block}
{block name="description"}我的书架{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$strTitle??''}" />
<meta property="og:description" content="{$strDescription??''}" />
<meta property="og:url" content="https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}" />
<meta property="og:type" content="article" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}",
"@type": "article",
"headline": "我的书架",
"description": "我的书架",
"datePublished": "{:date('Y-m-d')}"
}
</script>
{block name="head-js"}{/block}
{block name="body-class"}novel_home{/block}
{block name="main"}
<div class="container">
<div class="row">
<div class="layout layout3 layout-col3 fl">
<h2 class="layout-tit">我的书架</h2>
<div class="layout layout-col3" id="shujiaContainer"></div>
</div>
</div>
</div>
</div>
{/block}
{block name="customize"}
<script>
const strNovelUrlTemp = `{site:replace code="NOVEL_INFO_URL"}`;
const strNovelChapterUrlTemp = `{site:replace code="CONTENT_INFO_URL"}`;
const strSearchUrlTemp = `{site:replace code="SEARCH_INFO_URL"}`;
// 调用展示书架功能
displayShujia();
</script>
{/block}

View File

@@ -1,49 +0,0 @@
{extend name="basePc" /}
{block name="title"}我的阅读记录{/block}
{block name="keywords"}我的阅读记录{/block}
{block name="description"}我的阅读记录{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$strTitle??''}" />
<meta property="og:description" content="{$strDescription??''}" />
<meta property="og:url" content="https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}" />
<meta property="og:type" content="article" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://{$DomainModel->d_domain}{$strBookShelfUrlTemp}",
"@type": "article",
"headline": "{$strTitle??''}",
"description": "{$strDescription??''}",
"datePublished": "{:date('Y-m-d')}"
}
</script>
{block name="head-js"}{/block}
{block name="body-class"}novel_home{/block}
{block name="main"}
<div class="container">
<div class="row">
<div class="layout layout3 layout-col3 fl">
<h2 class="layout-tit">阅读记录</h2>
<div class="layout layout-col3" id="shujiaContainer"></div>
</div>
</div>
</div>
</div>
{/block}
{block name="customize"}
<script>
const strNovelUrlTemp = `{site:replace code="NOVEL_INFO_URL"}`;
const strNovelChapterUrlTemp = `{site:replace code="CONTENT_INFO_URL"}`;
const strSearchUrlTemp = `{site:replace code="SEARCH_INFO_URL"}`;
// 调用展示书架功能
displayHistory();
</script>
{/block}

View File

@@ -1,14 +0,0 @@
{extend name="basePc" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="main"}
<div>article.......</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,88 +0,0 @@
{extend name="basePc" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="main"}
<div class="content">
<!--选择搜索 开始-->
<div class="find">
<!-- <div class="fi_t">
<div class="boFi">
<span><s></s></span>
<input type="text" class="search-val" url="/search.html" name="search_keyword" value=""
placeholder="我要搜.. " maxlength="100" autocomplete="off">
<a href="javascript:;" btn="search_keyword">搜索</a>
</div>
</div> -->
<div class="opt">
<div class="optCl" mod="search_channel">
<span class="optTit">所属分类</span>
<ul>
<li><a class="on" href="/pc/article/list.html" btn="search_category">全部</a></li>
<li><a href="/pc/article/list-1-1.html" btn="search_category">高考作文</a></li>
<li><a href="/pc/article/list-2-1.html" btn="search_category">小说解读</a></li>
<li><a href="/pc/article/list-3-1.html" btn="search_category">影视解说</a></li>
<li><a href="/pc/article/list-4-1.html" btn="search_category">王者荣耀</a></li>
<li><a href="/pc/article/list-5-1.html" btn="search_category">日常八卦</a></li>
<li><a href="/pc/article/list-6-1.html" btn="search_category">其它</a></li>
</ul>
</div>
</div>
</div>
<!--选择搜索 结束-->
<div class="f4 area">
<div class="f4_L">
<div class="new_list">
<ol class="cur">
<li>
<ul class="list_h">
<li class="lb">分类</li>
<li class="sm">书名</li>
<li class="gx">描述</li>
<li class="zz">作者</li>
<li class="sj">更新时间</li>
</ul>
</li>
{foreach $arrNewsNovel as $key=>$Novel}
{include file="Pc/Public/articleList" /}
{/foreach}
</ol>
</div>
</div>
</div>
<!--搜索结果 开始-->
<div class="result" mod="search_data_list">
<!--页码切换 开始-->
<div class="changepage">
<ul class="pagination">
<li class="disabled"><span>«</span></li>
<li class="active"><span>1</span></li>
<li><a href="/pc/article/list--2.html">2</a></li>
<li><a href="/pc/article/list--3.html">3</a></li>
<li><a href="/pc/article/list--4.html">4</a></li>
<li><a href="/pc/article/list--5.html">5</a></li>
<li><a href="/pc/article/list--6.html">6</a></li>
<li><a href="/pc/article/list--7.html">7</a></li>
<li><a href="/pc/article/list--8.html">8</a></li>
<li class="disabled"><span>...</span></li>
<li><a href="/pc/article/list--33.html">33</a></li>
<li><a href="/pc/article/list--34.html">34</a></li>
<li><a href="/pc/article/list--2.html">»</a></li>
</ul>
</div>
<!--页码切换 结束-->
</div>
<!--选择结果 结束-->
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,204 +0,0 @@
{extend name="basePc" /}
{block name="title"}{site:replace code="NOVEL@GETLIBRARY@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETLIBRARY@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="NOVEL@GETLIBRARY@TITLE"}' />
<meta property="og:description" content='{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}' />
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
<meta property="og:url" content="https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}" />
{else}
<meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}' />
{/if}
<meta property="og:type" content="book" />
<!-- 结构化数据 -->
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
<script type="application/ld+json">
{
"@context": "https://{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}",
"@type": "book",
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}'
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
}
</script>
{else}
<script type="application/ld+json">
{
"@context": 'https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}',
"@type": "book",
"headline": '{site:replace code="NOVEL@GETLIBRARY@TITLE"}',
"description": '{site:replace code="NOVEL@GETLIBRARY@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
}
</script>
{/if}
{/block}
{block name="head-js"}{/block}
{block name="head-css"}
{if $Request.route.strGender == 'all' && $Request.route.strCategory == 'all' && $Request.route.strStatus == 'all'}
<link rel="canonical" href="https://{$DomainModel->d_domain}{$DomainModel->d_domain}{$strCategoryIndexUrlTemp}">
{else}
<link rel="canonical"
href='https://{$DomainModel->d_domain}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" page="$Request.route.intPage"/}'>
{/if}
{/block}
{block name='nav-active-class'}home{/block}
{block name="main"}
{novel:pagerexp page="$Request.get.page" limit="30"
n_category="$Request.route.strCategory"
sort_type="$Request.route.strOrder"
n_status="$Request.route.strStatus" d_key="d_key"
d_key="d_key"
d_val="Novel" n_num="total"
button_num="10" cache_life="86400" func="generateCategoryPager" export_name="resData" /}
{site:grm page_code="pc_novel_library" diff="$resData.p_data.page" num="70" g_key="arrGrm" /}
<div class="container">
<div class="row row-section">
<div class="layout layout-col3">
{novel:list count="6" sort_type="tuijian" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
<div class="item">
<div class="image">
{$arrGrm[$d_key]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</div>
<dl>
<dt>
<span>{$Novel.n_author}</span>
<a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name}</a>
</dt>
<dd style="height:90px">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
style="color: #555">{$Novel.n_description}</a>
</dd>
</dl>
</div>
{/novel:list}
</div>
</div>
<div class="sort_nav">
<p>
<span>分类:</span>
<a class='{eq name="$Request.route.strCategory" value="all"}on {/eq} {eq name="$Request.route.strCategory" value=""}on on2 {/eq}'
href='{$strPcPath}{site:nflurl category="all" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'>不限</a>
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
<a class='{eq name="$Request.route.strCategory" value="$strCategoryPinyin"}on {/eq}'
href='{$strPcPath}{site:nflurl category="$strCategoryPinyin" status="$Request.route.strStatus" order="$Request.route.strOrder" page="$Request.route.intPage"/}'>{$strCategoryName}</a>
{/novel:category}
</p>
<p><span>排序:</span>
{novel:sort d_key="key" d_val="strSortName"}
<a href='{$strPcPath}{site:nflurl category="$Request.route.strCategory" status="$Request.route.strStatus" order="$key" page="$Request.route.intPage"/}'
class='{eq name="$Request.route.strOrder" value="$key"}on {/eq} {if $key == "all" && $Request.route.strOrder == ""}on on2 {/if}'>{$strSortName}</a>
{/novel:sort}
</p>
<p><span>状态:</span>
{novel:status d_key="key" d_val="strStatusName"}
<a href='{$strPcPath}{site:nflurl category="$Request.route.strCategory" status="$key" order="$Request.route.strOrder" page="$Request.route.intPage"/}'
class='{eq name="$Request.route.strStatus" value="$key"}on {/eq} {if $key == "all" && $Request.route.strStatus == ""}on on2 {/if}'
btn="search_category">{$strStatusName}</a>
{/novel:status}
</p>
</div>
<div class="row">
<div class="layout layout2 layout-col1 fr">
<h2 class="layout-tit">最新入库小说</h2>
<ul class="txt-list txt-list-row3">
{novel:list count="30" sort_type="news" d_key="d_key" d_val="Novel" p_val="page_data"
cache_life="86400"}
<li>
<span class="s1">[{$Novel->n_category ?? ''}</span>
<span class="s2">
{$arrGrm[$d_key+6]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
<span class="s5"><a
href='{$strPcPath}{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></span>
</li>
{/novel:list}
</ul>
</div>
<div class="layout layout2 layout-col2 fl">
<h2 class="layout-tit">最近更新小说列表</h2>
<ul class="txt-list txt-list-row5">
{foreach $resData.data as $key=>$Novel}
<li>
<span class="s1">[{$Novel->n_category ?? ''}</span>
<span class="s2">
{$arrGrm[$key+36]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
<span class="s3"><a
href='{$strPcPath}{site:lcpurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin" /}'
title="{$Novel->n_latest_chapter_name ?? 'null'}">{$Novel->n_latest_chapter_name ??
'null'}</a></span>
<span class="s4">{$Novel.n_author}</span>
<span class="s5">{:date('m-d')}</span>
</li>
{/foreach}
</ul>
</div>
</div>
<!-- 分页 -->
<div class="row sort_page_num">
{volist name="resData.p_data.pager" id="vo" key="k"}
{switch $vo.label}
{case value="上一页"}
{if $resData.p_data.page == 1}
<span>«</span>
{else}
<a href="{$strPcPath}{$vo.url}">«</a>
{/if}
{/case}
{case value="下一页"}
{if $resData.p_data.page >= $resData.p_data.total}
<span>»</span>
{else}
<a href="{$strPcPath}{$vo.url}">»</a>
{/if}
{/case}
{case value="..."}
<span>...</span>
{/case}
{default /}
{if preg_match('/^\d+$/', $vo.label)}
<a href="{$strPcPath}{$vo.url}">{$vo.label}</a>
{/if}
{/switch}
{/volist}
</div>
</div>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,236 +0,0 @@
{extend name="basePc" /}
{block name="title"}{site:replace code="NOVEL@GETNOVELCATALOG@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETNOVELCATALOG@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETNOVELCATALOG@DESCRIPTION"}{/block}
{block name="head"}
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
{site:grm page_code="pc_novel_catalog" diff="$Request.url" num="120" g_key="arrGrm" /}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELCATALOG@DESCRIPTION"}' />
<meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
<meta property="og:type" content="book" />
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
<meta property="og:site_name" content="{$DomainModel->d_name}" />
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
<meta property="og:novel:read_url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
<meta property="og:novel:latest_chapter_name" content="{$arrNovel.n_latest_chapter_name ?? ''}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content='{site:replace code="NOVEL@GETNOVELCATALOG@DESCRIPTION"}' />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"image": "{$arrNovel.n_cover_path ?? ''}",
"url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}',
"genre": "{$arrNovel.n_category ??''}",
"inLanguage": "zh-CN",
"bookFormat": "https://{$DomainModel->d_domain}/EBook",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "100",
},
}
</script>
{/block}
{block name="head-css"}
<link rel="canonical" href='{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
{/block}
{block name="logo-html"}
<h2>
<a href="{$strPcPath}/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="head-js"}
{/block}
{block name="body-class"}novel_info{/block}
{block name="main"}
{chapter:pagerexp page="$Request.route.intPage" limit="100" n_id="$Request.route.intNovelId" d_key="d_key" d_val="chapter"
cache_life="86400" button_num="3" sort_type="$Request.route.strOrder" func="generateChapterPager" export_name="resData" /}
<div class="container biqunaicc">
<div class="row row-detail">
<div class="layout layout-col1">
<h2 class="layout-tit xs-hidden">
<a href="{$strPcPath}/">{$DomainModel->d_name}</a>&gt;
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
{$arrNovel['n_name']}
</a>
</h2>
<div class="detail-box">
<div class="imgbox">
<img data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节"
class="lazyload_book_cover lazyload-img">
</div>
<div class="info">
<div class="top">
<h1>{$arrNovel['n_name']}</h1>
<div class="fix">
<p>&nbsp;&nbsp;者:{$arrNovel.n_author ?? ''}</p>
<p class="xs-show">&nbsp;&nbsp;别:{$arrNovel.n_category ?? ''}</p>
<p class="xs-show">&nbsp;&nbsp;态:{$arrNovel.n_status ?? ''}</p>
<p class="opt">
<span class="xs-hidden">&nbsp;&nbsp;作:</span>
<a rel="nofollow" onclick="addBookshelfFun()">加入书架</a>
<i class="xs-hidden"></i>
<a
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
<i class="xs-hidden"></i>
<a
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>开始阅读</a>
</p>
<p>最后更新:{$arrNovel.n_update_time ?? ''} </p>
<p>最新章节:<a
href='{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
{$arrNovel.n_latest_chapter_name ?? ""}</a></p>
</div>
</div>
<div class="desc xs-hidden">{$arrNovel.n_description ?? ''}</div>
</div>
</div>
</div>
<div class="layout layout-col1">
<h2 class="layout-tit">《{$arrNovel.n_name ?? ''}》{$arrNovel.n_name ?? '章节'}</h2>
<div class="first_txt">
{$arrNovel.strFocus ?? ""} 。看小说就来{$DomainModel->d_name} {$DomainModel->d_domain}...
<p>相邻推荐:
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
{if $key<20 } {$arrGrm[$key+20]|raw} {/if} <a
href='{$strPcPath}{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'
class="red">{$ForgeNovel.n_forge_title}</a>
{/volist}
{volist name='$arrNovel.arrRelateveNovel' id='Novel'}
<a
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>&nbsp;&nbsp;
{/volist}
</p>
</div>
</div>
</div>
<div class="row row-section">
<div class="layout layout-col1">
<h2 class="layout-tit">《{$arrNovel.n_name}》章节列表(第{$Request.route.intPage}页)切换倒序/正序:
{if $Request.route.strOrder == 'zheng'}
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="dao" page="1"/}'
class="habt y">点击切换倒序</a>
{else}
<a href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'
class="habt y">点击切换正序</a>
{/if}
</h2>
<!-- 目录下拉分页-->
{include file="pc/public/allChapterPage" /}
<ul class="section-list fix ycxsid">
{foreach $resData.data as $key=>$Chapter}
<li>
{$arrGrm[$key]|raw}
<a
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$Chapter.c_sort_num" c_page="0"/}'>
{$Chapter.c_name}
</a>
</li>
{/foreach}
</ul>
<!-- 目录下拉分页-->
{include file="pc/public/allChapterPage" /}
</div>
</div>
<div class="row row-section">
<h2 class="layout-tit">已完结热门小说推荐</h2>
<div class="layout layout-col3">
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel"
cache_life="86400"}
<div class="item">
<div class="image">
{$arrGrm[$d_key+110]|raw}
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</div>
<dl>
<dt><span>{$Novel.n_author}</span><a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a>
</dt>
<dd style="height:90px"><a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
style="color: #555">{$Novel.n_description}</a>
</dd>
</dl>
</div>
{/novel:list}
</div>
</div>
</div>
<script>
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id': `{$arrNovel['n_id']}`,
'n_name_pinyin': `{$arrNovel['n_name_pinyin']}`,
'n_cover_path': `{$arrNovel['n_cover_path']}`,
'n_name': `{$arrNovel['n_name']}`,
'n_author': `{$arrNovel['n_author']}`,
'n_status': `{$arrNovel['n_status']}`,
'n_update_time': `{$arrNovel['n_update_time']}`,
'c_sort_num': 1,
'c_name': `第一章`,
};
</script>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,189 +0,0 @@
{extend name="basePc" /}
{block name="title"}{site:replace code="NOVEL@GETNOVELCHAPTER@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETNOVELCHAPTER@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}{/block}
{block name="head"}
{site:grm page_code="pc_novel_chapter" diff="$Request.url" num="20" g_key="arrGrm" /}
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
{chapter:info n_id="$Request.route.intNovelId" c_sort_num="$Request.route.intChapterSort"
c_page="$Request.route.intChapterPage" c_key="arrChapter" /}
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}' />
<meta property="og:url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
<meta property="og:type" content="book" />
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
<meta property="og:site_name" content="{$DomainModel->d_name}" />
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
<meta property="og:novel:read_url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num"/}'>
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
<meta property="og:novel:latest_chapter_name" content="{$arrChapter.c_name}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['n_name']??'未知小说'} {$arrChapter.c_name} - {$DomainModel->d_name}" />
<meta name="twitter:description" content="{$strDescription ?? '暂无简介'}" />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"image": "{$arrNovel.n_cover_path ?? ''}",
"url":'https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num" c_page="0"/}',
"inLanguage": "zh-CN",
"genre": "{$arrNovel.n_category ??''}",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"hasPart": {
"@type": "CreativeWork",
"name": "{$arrChapter.c_name ?? ''}",
"url":'https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num" c_page="0"/}',
"description": '{site:replace code="NOVEL@GETNOVELCHAPTER@DESCRIPTION"}'
}
}
</script>
{/block}
{block name="head-css"}
<link rel="canonical"
href='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.c_sort_num"/}'>
{/block}
{block name="head-js"}
<script src="/template/default/pc/js/yueduqsbs.js"></script>
{/block}
{block name="body-class"}novel_info{/block}
{block name='nav-active-class'}home{/block}
{block name="main"}
<div class="container biqunaicc">
{$arrGrm[1]|raw}
<div class="row row-detail">
<div class="layout layout-col1">
<h2 class="layout-tit xs-hidden">
<a href="{$strPcPath}/">{$DomainModel->d_name}</a>&gt;<a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$arrNovel.n_name}</a>
&gt;
{$arrNovel.n_name}(第{$arrChapter.c_sort_num}页)
</h2>
{$arrGrm[2]|raw}
<div class="word_read">
<h3>{$arrNovel.n_name}(第{$arrChapter['c_sort_num']}页)</h3>
<div class="read_btn">
{if $arrChapter && $arrChapter.c_sort_num && $arrChapter.c_sort_num == 1}
<a id="j_chapterPrev" href="javascript:void(0);">上一页</a>
{else}
{$arrGrm[10]|raw}
<a id="j_chapterPrev"
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.pre_chapter.c_sort_num" c_page="$arrChapter.pre_chapter.c_page"/}'>上一页</a>
{/if}
<span>|</span>
<a
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
<span>|</span>
{if $arrChapter.next_chapter && $arrChapter.next_chapter.c_sort_num}
{$arrGrm[9]|raw}
<a id="j_chapterNext"
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.next_chapter.c_sort_num" c_page="$arrChapter.next_chapter.c_page"/}'>下一页</a>
{/if}
</div>
{$arrGrm[3]|raw}
<script>document.writeln(qsbs.bb('{$arrChapter.c_content}'));</script>
{$arrGrm[4]|raw}
<p>请勿开启浏览器阅读模式,否则将导致章节内容缺失及无法阅读下一页。</p>
<p>相邻推荐:
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
{if $key<19 } {$arrGrm[$key+9]|raw} {/if} <a
href='{$strPcPath}{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'
class="red">{$ForgeNovel.n_forge_title}</a>
{/volist}
{volist name='arrNovel.arrRelateveNovel' id='Novel'}
<a
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>&nbsp;&nbsp;
{/volist}
</p>
{$arrGrm[5]|raw}
<div class="read_btn">
{if $arrChapter && $arrChapter.c_sort_num && $arrChapter.c_sort_num == 1}
<a id="j_chapterPrev" href="javascript:void(0);">上一页</a>
{else}
{$arrGrm[10]|raw}
<a id="j_chapterPrev"
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.pre_chapter.c_sort_num" c_page="$arrChapter.pre_chapter.c_page"/}'>上一页</a>
{/if}
<span>|</span>
<a
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
<span>|</span>
{if $arrChapter.next_chapter && $arrChapter.next_chapter.c_sort_num}
{$arrGrm[9]|raw}
<a id="j_chapterNext"
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrChapter.next_chapter.c_sort_num" c_page="$arrChapter.next_chapter.c_page"/}'>下一页</a>
{/if}
</div>
{$arrGrm[6]|raw}
</div>
</div>
</div>
<div class="row row-section">
<h2 class="layout-tit">已完结热门小说推荐</h2>
<div class="layout layout-col3">read_btn
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel"
p_val="page_data" cache_life="86400"}
<div class="item">
<div class="image">
{$arrGrm[$d_key+6]|raw}
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</div>
<dl>
<dt><span>{$Novel.n_author}</span><a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a></dt>
<dd style="height:90px"><a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
style="color: #555">{$Novel.n_description}</a>
</dd>
</dl>
</div>
{/novel:list}
</div>
</div>
</div>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,232 +0,0 @@
{extend name="basePc" /}
{block name="title"}{site:replace code="NOVEL@GETNOVELINFO@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETNOVELINFO@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}{/block}
{block name="head"}
{if $Request.route.intNovelId}
{novel:info n_id="$Request.route.intNovelId" n_key="arrNovel" n_forge_id="0" /}
{else}
{novel:info n_id="$DomainModel->info_id" n_key="arrNovel" n_forge_id="0" /}
{/if}
{site:grm page_code="pc_novel_info" diff="$arrNovel.n_id" num="120" g_key="arrGrm" /}
<!-- 社交媒体标签 -->
<meta property="og:title" content="{$arrNovel['n_name']??'未知小说'}" />
<meta property="og:description" content='{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
<meta property="og:url"
content='https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}' />
<meta property="og:type" content="book" />
<meta property="og:image" content="{$arrNovel.n_cover_path ?? ''}" />
<meta property="og:site_name" content="{$DomainModel->d_name}" />
<meta property="og:novel:category" content="{$arrNovel.n_category ?? ''}">
<meta property="og:novel:author" content="{$arrNovel.n_author ?? ''}">
<meta property="og:novel:book_name" content="{$arrNovel.n_name ?? ''}">
<meta property="og:novel:read_url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>
<meta property="og:novel:status" content="{$arrNovel.n_status ?? ''}">
<meta property="og:novel:update_time" content="{$arrNovel.n_update_time ?? ''}">
<meta property="og:novel:latest_chapter_name" content="{$arrNovel.n_latest_chapter_name ?? ''}">
<meta property="og:novel:latest_chapter_url"
content='https://{$DomainModel->d_domain}{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<!-- 可选:支持 Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{$arrNovel['n_name'] ?? '未知小说'}" />
<meta name="twitter:description" content="'{site:replace code="NOVEL@GETNOVELINFO@DESCRIPTION"}' />
<meta name="twitter:image" content="{$arrNovel.n_cover_path ?? ''}" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{$arrNovel['n_name'] ?? '未知小说'}",
"description": "{$arrNovel['n_description'] ??'暂无简介'}",
"author": {
"@type": "Person",
"name": "{$arrNovel['n_author'] ??'佚名'}"
},
"publisher": {
"@type": "Organization",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}"
},
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"image": "{$arrNovel.n_cover_path ?? ''}",
"url": 'https://{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}',
"genre": "{$arrNovel.n_category ??''}",
"inLanguage": "zh-CN",
"bookFormat": "https://{$DomainModel->d_domain}/EBook",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "100",
},
}
</script>
{/block}
{block name="head-css"}
<link rel="canonical"
href='{$DomainModel->d_domain}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
{/block}
{block name="logo-html"}
<h2>
<a href="{$strPcPath}/">
{$DomainModel->d_name}-{$DomainModel->d_text_logo}
</a>
</h2>
{/block}
{block name="head-js"}
{/block}
{block name="body-class"}novel_info{/block}
{block name="main"}
<div class="container biqunaicc">
<div class="row row-detail">
<div class="layout layout-col1">
<h2 class="layout-tit xs-hidden">
<a href="{$strPcPath}/">{$DomainModel->d_name}</a>&gt;
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
{$arrNovel['n_name']}
</a>
</h2>
<div class="detail-box">
<div class="imgbox">
<img data-src="{$arrNovel.n_cover_path ?? ''}"
alt="{$arrNovel['n_name'] ?? ''}小说封面 - {$arrNovel.n_author}最新章节"
class="lazyload_book_cover lazyload-img">
</div>
<div class="info">
<div class="top">
<h1>{$arrNovel['n_name']}</h1>
<div class="fix">
<p>&nbsp;&nbsp;者:{$arrNovel.n_author ?? ''}</p>
<p class="xs-show">&nbsp;&nbsp;别:{$arrNovel.n_category ?? ''}</p>
<p class="xs-show">&nbsp;&nbsp;态:{$arrNovel.n_status ?? ''}</p>
<p class="opt">
<span class="xs-hidden">&nbsp;&nbsp;作:</span>
<a rel="nofollow" onclick="addBookshelfFun()">加入书架</a>
<i class="xs-hidden"></i>
<a
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'>章节目录</a>
<i class="xs-hidden"></i>
<a
href='{$strPcPath}{site:cpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" c_sort="$arrNovel.intFirstChapterSort"/}'>开始阅读</a>
</p>
<p>最后更新:{$arrNovel.n_update_time ?? ''} </p>
<p>最新章节:<a
href='{$strPcPath}{site:lcpurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
{$arrNovel.n_latest_chapter_name ?? ""}</a></p>
</div>
</div>
<div class="desc xs-hidden">{$arrNovel.n_description ?? ''}</div>
</div>
</div>
</div>
<div class="layout layout-col1">
<h2 class="layout-tit">《{$arrNovel.n_name ?? ''}》{$arrNovel.n_name ?? '章节'}</h2>
<div class="first_txt">
{$arrNovel.strFocus ?? ""} 。看小说就来{$DomainModel->d_name} {$DomainModel->d_domain}...
<p>相邻推荐:
{volist name="arrNovel.n_forge_novel" id="ForgeNovel" key="key"}
{if $key<20 } {$arrGrm[$key+20]|raw} {/if} <a
href='{$strPcPath}{site:nnurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'
class="red">{$ForgeNovel.n_forge_title}</a>
{/volist}
{volist name='$arrNovel.arrRelateveNovel' id='Novel'}
<a
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>&nbsp;&nbsp;
{/volist}
</p>
</div>
</div>
</div>
<div class="row row-section">
<div class="layout layout-col1">
<h2 class="layout-tit">《{$arrNovel.n_name}》最新章节</h2>
<ul class="section-list fix">
{chapter:list count="12" sort_type="dao" n_id="$arrNovel.n_id" d_key="d_key" d_val="Chapter" cache_life="86400"}
<li>
{$arrGrm[$d_key]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Chapter.c_name}</a>
</li>
{/chapter:list}
</ul>
<h2 class="layout-tit">《{$arrNovel.n_name}》章节列表</h2>
<ul class="fix section-list">
{chapter:list count="100" sort_type="zheng" n_id="$arrNovel.n_id" d_key="d_key" d_val="Chapter" cache_life="86400"}
<li>
{$arrGrm[$d_key+10]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Chapter.c_name}</a>
</li>
{/chapter:list}
</ul><a
href='{$strPcPath}{site:nclurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" order="zheng" page="1"/}'
class="btn-mulu">查看更多章节...</a>
</div>
</div>
<div class="row row-section">
<h2 class="layout-tit">已完结热门小说推荐</h2>
<div class="layout layout-col3">
{novel:list count="6" n_category="$arrNovel.n_category_pinyin" n_status="wanjie" d_key="d_key" d_val="Novel" p_val="page_data" cache_life="86400"}
<div class="item">
<div class="image">
{$arrGrm[$d_key+110]|raw}
<a href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</div>
<dl>
<dt><span>{$Novel.n_author}</span><a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'>{$Novel.n_name}</a>
</dt>
<dd style="height:90px"><a
href='{$strPcPath}{site:nurl n_id="$arrNovel.n_id" n_py="$arrNovel.n_name_pinyin" /}'
style="color: #555">{$Novel.n_description}</a>
</dd>
</dl>
</div>
{/novel:list}
</div>
</div>
</div>
<script>
const strNovelId = `{$arrNovel.n_id}`;
const arrNovel = {
'n_id': `{$arrNovel['n_id']}`,
'n_name_pinyin': `{$arrNovel['n_name_pinyin']}`,
'n_cover_path': `{$arrNovel['n_cover_path']}`,
'n_name': `{$arrNovel['n_name']}`,
'n_author': `{$arrNovel['n_author']}`,
'n_status': `{$arrNovel['n_status']}`,
'n_update_time': `{$arrNovel['n_update_time']}`,
'c_sort_num': 1,
'c_name': `第一章`,
};
</script>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,133 +0,0 @@
{extend name="basePc" /}
{block name="title"}{site:replace code="NOVEL@GETSEARCHNOVEL@TITLE"}{/block}
{block name="keywords"}{site:replace code="NOVEL@GETSEARCHNOVEL@KEYWORDS"}{/block}
{block name="description"}{site:replace code="NOVEL@GETSEARCHNOVEL@DESCRIPTION"}{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content={site:replace code="NOVEL@GETSEARCHNOVEL@TITLE"} />
<meta property="og:description" content='{site:replace code="NOVEL@GETSEARCHNOVEL@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}{site:souurl key='$Request.get.keyword' p='1'/}" />
<meta property="og:type" content="book" />
<meta property="og:site_name" content="{$DomainModel->d_name}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{$Request.get.keyword} - {$DomainModel->d_name}搜索 - 第{$Request.get.intPage}页">
<meta name="twitter:description" content="{$Request.get.keyword}搜索结果第{$Request.get.intPage}页,免费阅读小说,快来体验!">
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SearchResultsPage",
"url": "https://{$DomainModel->d_name}{site:souurl key='$Request.get.keyword' p='1'/}",
"name": "{$DomainModel->d_name} - {$DomainModel->d_name}搜索 第{$Request.get.intPage}页",
"description": "搜索‘{$Request.get.keyword}’结果第{$Request.get.intPage}页,提供{$Request.get.keyword}创作的小说免费阅读。",
"datePublished": "{$arrNovel['n_update_time'] ?? time()}",
"mainEntity": {
"@type": "Book",
"name": "{$DomainModel->d_name}",
"author": {
"@type": "Person",
"name": "{$DomainModel->d_name}"
},
"url": "https://{$DomainModel->d_domain}"
}
}
</script>
{/block}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="meta-other"}{/block}
{block name="body-class"}novel_home novel_search_page{/block}
{block name="main"}
{novel:pagerexp page="$Request.get.page" limit="30"
key="$Request.get.keyword"
d_key="d_key"
d_val="Novel" n_num="total"
p_val="page_data" button_num="10" cache_life="86400" func="generateSearchPager" export_name="resData" /}
{site:grm page_code="pc_novel_search" diff="$Request.url" num="30" g_key="arrGrm" /}
<div class="container">
<div class="row">
<div class="layout layout3 layout-col3 fl">
<h1>{$Request.get.keyword}搜索结果 - {$DomainModel->d_name} 第{$resData.p_data.page}页</h1>
<div class="result search_tip">
搜索<span style="color:red">“{$Request.get.keyword}”</span>相关结果共有 <span
style="color:red">{$resData.p_data.total}</span> 部小说
</div>
{if $resData.p_data.total <1} <p style="text-align: center;line-height: 60px">没有相关数据</p>
{else}
<div class="layout layout-col3">
{foreach $resData.data as $key=>$Novel}
<div class="item">
<div class="image">
{$arrGrm[$key]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>
<img style="min-height:120px;" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel['n_name'] ?? ''}小说封面 - {$Novel.n_author}最新章节"
class="lazy lazyload-img">
</a>
</div>
<dl>
<dt><span>{$Novel.n_author}</span><a
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'>{$Novel.n_name}</a>
</dt>
<dd style="height:90px"><a
href='{$strPcPath}{site:nurl n_id="$Novel.n_id" n_py="$Novel.n_name_pinyin" /}'
style="color: #555">{$Novel.n_description}</a>
</dd>
</dl>
</div>
{/foreach}
</div>
{/if}
</div>
</div>
<!-- 分页 -->
<div class="row sort_page_num">
{volist name="resData.p_data.pager" id="vo" key="k"}
{switch $vo.label}
{case value="上一页"}
{if $resData.p_data.page == 1}
<span>«</span>
{else}
<a href="{$strPcPath}{$vo.url}">«</a>
{/if}
{/case}
{case value="下一页"}
{if $resData.p_data.page >= $resData.p_data.total}
<span>»</span>
{else}
<a href="{$strPcPath}{$vo.url}">»</a>
{/if}
{/case}
{case value="..."}
<span>...</span>
{/case}
{default /}
{if preg_match('/^\d+$/', $vo.label)}
<a href="{$strPcPath}{$vo.url}">{$vo.label}</a>
{/if}
{/switch}
{/volist}
</div>
</div>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,179 +0,0 @@
{extend name="basePc" /}
{block name="title"}{site:replace code="INDEX@INDEX@TITLE"}{/block}
{block name="keywords"}{site:replace code="INDEX@INDEX@KEYWORDS"}{/block}
{block name="description"}{site:replace code="INDEX@INDEX@DESCRIPTION"}{/block}
{block name="head-css"}
<link rel="canonical" href="https://{$DomainModel->d_domain}/">
{/block}
{block name="head"}
<!-- 社交媒体标签 -->
<meta property="og:title" content='{site:replace code="INDEX@INDEX@TITLE"}' />
<meta property="og:description" content='{site:replace code="INDEX@INDEX@DESCRIPTION"}' />
<meta property="og:url" content="https://{$DomainModel->d_domain}" />
<meta property="og:type" content="website" />
<!-- 结构化数据 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "{$DomainModel->d_name}",
"url": "https://{$DomainModel->d_domain}",
"headline": '{site:replace code="INDEX@INDEX@TITLE"}',
"description": '{site:replace code="INDEX@INDEX@DESCRIPTION"}',
"datePublished": "{:date('Y-m-d')}"
"potentialAction": {
"@type": "SearchAction",
"target": 'https://{$DomainModel->d_domain}{site:souurl key="search_term_string" p="1"/}',
"query-input": "required name=search_term_string"
}
}
</script>
{/block}
{block name="main"}
{site:grm page_code="pc_index" diff="0" num="150" g_key="arrGrm" /}
<div class="container biqunaicc">
<div class="row">
<div class="layout layout-col2">
{novel:list count="4" sort_type="tuijian" n_status="lianzai" d_key="d_key" d_val="Novel" p_val="page_data"
cache_life="86400"}
<div class="item">
<div class="image">
{$arrGrm[$d_key]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<img style="min-height:120px;" class="lazyload-img" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</div>
<dl>
<dt>
<span>{$Novel.n_author ?? ''}</span>
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel.n_name
?? ''}</a>
</dt>
<dd style="height:90px">
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
style="color: #555">
{$Novel.n_description ?? ''}
</a>
</dd>
</dl>
</div>
{/novel:list}
</div>
<div class="layout layout-col1">
<h2 class="layout-tit">经典推荐</h2>
<ul class="txt-list txt-list-row3">
{novel:list count="9" sort_type="tuijian" n_status="wanjie" d_key="d_key" d_val="Novel"
p_val="page_data" cache_life="86400"}
<li>
<span class="s1">[{$Novel->n_category ?? ''}</span>
<span class="s2">
{$arrGrm[$d_key+4]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
<span class="s5">
<a href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a>
</span>
</li>
{/novel:list}
</ul>
</div>
</div>
<div class="row">
<div class="layout">
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
<div class="tp-box">
<h2>{$strCategoryName}</h2> <!-- 分类标题 -->
<div class="top">
<?php $start = 1 ;$start +=1 ;?>
{novel:list count="1" n_category="$strCategoryPinyin" sort_type="news" d_key="d_key" d_val="Novel"
p_val="page_data" cache_life="86400"}
<div class="image">
{$arrGrm[$d_key+9+10*$start]|raw}
<a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>
<img class="lazyload-img" src="/static/img/default.jpg"
data-src="{$Novel.n_cover_path ?? ''}"
alt="{$Novel.n_name ?? ''} - {$Novel.n_category ?? ''}最新章节在线免费阅读">
</a>
</div>
<dl>
<dt><a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a>
</dt>
<dd><a href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'
style="color: #555">{$Novel.n_description ?? ''}</a></dd>
</dl>
{/novel:list}
</div>
<ul>
{novel:list count="12" n_category="$strCategoryPinyin" sort_type="news" d_key="d_key" d_val="Novel"
p_val="page_data" cache_life="86400"}
<li>
{$arrGrm[$d_key+9+10*$start]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a>/<a
href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></li>
{/novel:list}
</ul>
</div>
{/novel:category}
</div>
</div>
<div class="row">
<div class="layout layout2 layout-col1 fr">
<h2 class="layout-tit">最新入库小说</h2>
<ul class="txt-list txt-list-row3">
{novel:list count="50" sort_type="news" d_key="d_key" d_val="Novel" p_val="page_data"
cache_life="86400"}
<li>
<span class="s1">[{$Novel->n_category ?? ''}]</span>
<span class="s2">
{$arrGrm[$d_key+100]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
<span class="s5"><a href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></span>
</li>
{/novel:list}
</ul>
</div>
<div class="layout layout2 layout-col2 fl">
<h2 class="layout-tit">最近更新小说列表</h2>
<ul class="txt-list txt-list-row5">
{novel:list count="50" sort_type="update" d_key="d_key" d_val="Novel" p_val="page_data"
cache_life="86400"}
<li>
<span class="s1">[{$Novel->n_category ?? ''}]</span>
<span class="s2">
{$arrGrm[$d_key+100]|raw}
<a
href='{$strPcPath}{site:nurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin"/}'>{$Novel->n_name}</a></span>
<span class="s3"><a
href='{$strPcPath}{site:lcpurl n_id="$Novel->n_id" n_py="$Novel->n_name_pinyin" /}'
title="{$Novel->n_latest_chapter_name ?? 'null'}">{$Novel->n_latest_chapter_name ??
'null'}</a></span>
<span class="s4"><a href='{site:souurl key="$Novel->n_author" p="1"/}'>{$Novel->n_author}</a></span>
<span class="s5">{:date('m-d')}</span>
</li>
{/novel:list}
</ul>
</div>
</div>
</div>
{/block}
{block name="customize"}
{/block}

View File

@@ -1,38 +0,0 @@
{if !empty($resData.p_data.pager)}
<div class="page_num">
{volist name="$resData.p_data.pager" id="item"}
{eq name="item.type" value="prev"}
{$arrGrm[$key]|raw}
<a href="{$item.url ?: '#'}"
class="z {$item.disabled ? 'disabled' : ''}">
{$item.label}
</a>
{/eq}
{/volist}
<select onchange="self.location.href=options[selectedIndex].value">
{volist name="$resData.p_data.pager" id="item"}
{eq name="item.type" value="page"}
<?php $intLimit = $resData['p_data']['limit']; ?>
<?php $intStart = ($item['label'] - 1) * $intLimit + 1; ?>
<?php $end = $item['label'] * $intLimit; ?>
<option value="{$item.url}" {$item.current ? 'selected' : ''}>
第{$intStart}-{$end}章
</option>
{/eq}
{/volist}
</select>
{volist name="$resData.p_data.pager" id="item"}
{eq name="item.type" value="next"}
{$arrGrm[$key]|raw}
<a href="{$item.url ?: '#'}"
class="y {$item.disabled ? 'disabled' : ''}">
{$item.label}
</a>
{/eq}
{/volist}
</div>
{/if}

View File

@@ -1,5 +0,0 @@
<li class="s2">
<h5 class="tit">
<a href="/article/info-332.html">我真是一条龙</a>
</h5> <i class="num"><em>{$key+=1}</em></i>
</li>

View File

@@ -1,3 +0,0 @@
<li>
<a href="/chapter/1-1-1.html" title="01 天龙问世">01 天龙问世</a>
</li>

View File

@@ -1,12 +0,0 @@
<li class="chapter-li jsChapter">
<a href="/chapter/1-1-1.html" class="chapter-li-a"
data-chapter-id="4b2d5aab58d71">
<span class="chapter-index">01 天龙问世</span>
</a>
</li>
<li class="chapter-li jsChapter">
<a href="/chapter/1-1-1.html" class="chapter-li-a"
data-chapter-id="486ef2abee55d">
<span class="chapter-index">02 沧武的小霸王</span>
</a>
</li>

View File

@@ -1,24 +0,0 @@
<div class="footer">
<div class="links">
<a href="/">首页</a>
<a href="/boy.html">男生</a>
<a href="/girl.html">女生</a>
<a href="/shuku.html">书库</a>
<a href="/rank.html">排行</a>
</div>
<div id="firendlink">
友情连接:
<a href="/sitemap_index.xml">XML地图</a>
<a href="/site.txt">网站地图</a>
{site:forgelist count="30" d_key="d_key" d_val="ForgeNovel" cache_life="86400"}
<a
href='{$strPcPath}{site:nnurl n_id="$ForgeNovel.n_id" n_py="$ForgeNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>
{$ForgeNovel.n_forge_title}
</a>
{/site:forgelist}
</div>
<div class="copyright">
<p>精彩小说推荐尽在狂雨小说!</p>
<p>©Copyright 2020</p>
</div>
</div>

View File

@@ -1,19 +0,0 @@
<li class="li2">
<a href="/novel/332.html">
<div class="leftImage2 "><img class="lazyload-img"
src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"></div>
<div class="rightBlock">
<span class="rightBlock_title">我真是一条龙</span>
<span class="rightBlock_name">耽美百合</span>
<span class="rightBlock_con rightBlock_con2">
<span class="con">
<span class="spanLi">老读者必看公告!!!</span>
</span>
<span class="spanLi Time">4天前</span>
<span class="rightJustTime"
onclick="javascript:window.location.href='/book/12538/4b2d5aab58d71.html';return false;">继续阅读</span>
</span>
</div>
</a>
<span class="deleteBlock" ajax-get="" url="/user/bookshelf/del/id/3.html"></span>
</li>

View File

@@ -1,19 +0,0 @@
<li class="s1">
<img class="pic lazy lazyload-img" data-encrypted="false" src="/static/img/default.jpg" data-src="https://www.630zw.org/img/176943.jpg"
alt="我真是一条龙" />
<a class="tit" href="/novel/332.html">我真是一条龙</a>
<p class="intro">
我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。
无情无义闹天下,千军万马赴黄泉。
本站提示各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦
</p>
<p class="info">
<span>
<aria>作者:</aria>兔子很淡定
</span>
<em class="type">耽美百合</em>
<!-- <em class="finish">已完结</em> -->
<em class="serial">已完结</em>
</p>
</li>

View File

@@ -1,5 +0,0 @@
<li class="s2">
<h5 class="tit">
<a href="/novel/1.html">我真是一条龙</a>
</h5> <i class="num"><em>{$key+=1}</em></i>
</li>

View File

@@ -1,10 +0,0 @@
<li>
<a href="/novel/1.html">
<img class="lazy lazyload-img" data-encrypted="false" src="/static/img/default.jpg"
data-src="https://www.630zw.org/img/176943.jpg" alt="落魄千金美食发家日常" />
<span>落魄千金美食发家日常</span>
<em>
<aria>作者:</aria>鱼昆子
</em>
</a>
</li>

View File

@@ -1,40 +0,0 @@
{extend name="baseH5" /}
{block name="title"}我的书架{/block}
{block name="keywords"}我的书架{/block}
{block name="description"}我的书架{/block}
{block name='nav-active-class'}home{/block}
{block name="body-class"}novel_so{/block}
{block name='head-name'}{$DomainModel->d_name}{/block}
{block name='head-href'}/{/block}
{block name="logo-html"}
<h2 class="bookname">
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>
</h2>
{/block}
{block name="main"}
<div class="wrap-box">
<h3 class="wrap-title"><span>我的书架</span></h3>
<div class="rec-focus" id="shujiaContainer">
</div>
</div>
{/block}
{block name="customize"}
<script>
const strNovelUrlTemp = `{site:replace code="NOVEL_INFO_URL"}`;
const strNovelChapterUrlTemp = `{site:replace code="CONTENT_INFO_URL"}`;
const strSearchUrlTemp = `{site:replace code="SEARCH_INFO_URL"}`;
// 调用展示书架功能
displayShujia();
</script>
{/block}

View File

@@ -1,40 +0,0 @@
{extend name="baseH5" /}
{block name="title"}我的阅读记录{/block}
{block name="keywords"}我的阅读记录{/block}
{block name="description"}我的阅读记录{/block}
{block name='nav-active-class'}home{/block}
{block name="body-class"}novel_so{/block}
{block name='head-name'}{$DomainModel->d_name}{/block}
{block name='head-href'}/{/block}
{block name="logo-html"}
<h2 class="bookname">
<a href="/" style="color:#ffffff">{$DomainModel->d_name}</a>
</h2>
{/block}
{block name="main"}
<div class="wrap-box">
<h3 class="wrap-title"><span>阅读记录</span></h3>
<div class="rec-focus" id="shujiaContainer">
</div>
</div>
{/block}
{block name="customize"}
<script>
const strNovelUrlTemp = `{site:replace code="NOVEL_INFO_URL"}`;
const strNovelChapterUrlTemp = `{site:replace code="CONTENT_INFO_URL"}`;
const strSearchUrlTemp = `{site:replace code="SEARCH_INFO_URL"}`;
// 调用展示书架功能
displayHistory();
</script>
{/block}

View File

@@ -1,109 +0,0 @@
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<meta name="robots" content="index, follow">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{block name="title"}{/block}</title>
<meta name="keywords" content='{block name="keywords"}{/block}'>
<meta name="description" content='{block name="description"}{/block}'>
<link rel="shortcut icon" href="/template/default/img/favicon.ico" type="image/x-icon">
<link rel="canonical" href="https://{$DomainModel->d_domain}/">
<link href="/public/layer/need/layer.css" rel="stylesheet">
<link rel="stylesheet" href="/template/default/h5/css/style.css">
{block name="head"}{/block}
{block name="head-css"}{/block}
{block name="head-js"}{/block}
<script>
const strPcPath = `{$strPcPath}`;
</script>
</head>
<body class="{block name='body-class'}{/block}" id="{block name='body-id'}{/block}">
<div class="header">
{block name="logo-html"}{/block}
<div class="operate" id="qs_login"><a href="{$strBookShelfUrlTemp}">书架</a></div>
</div>
<div class="nav">
<ul>
{if $DomainModel->info_id > 0}
<li><a href="/">首 页</a></li>
<li><a href="/nindex/">小说首页</a></li>
{else}
<li><a href="/">首 页</a></li>
{/if}
<li><a href="{$strCategoryIndexUrlTemp}">小说分类</a></li>
<li><a href="{$strHistoryUrlTemp}">阅读记录</a></li>
</ul>
</div>
<div class="clear"></div>
<div class="novel_search">
<form id="novel_search" class="search-form" method="get" 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>
{block name="nav-html"}{/block}
{block name="main"} {/block}
<div class="wrap-box">
<h3 class="wrap-title">
<span>最新标签</span>
</h3>
<div class="rec-focus" style="font-size:12px;">
{site:forgelist count="30" d_key="d_key" d_val="ForgeNovel" cache_life="86400"}
<a
href='{site:nnurl n_id="$ForgeNovel.n_id" n_py="$ForgeNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>
{$ForgeNovel.n_forge_title}
</a>
{/site:forgelist}
<a href="/sitemap_index.xml">XML地图</a>&nbsp;&nbsp;
<a href="/site.txt">网站地图</a>
</div>
</div>
<p style="font-size: 12px;text-align: center;"> 反馈邮箱:
{site:cfg code="YOU_XIANG" encode="false"/} Inc. All Rights Reserved.</p>
<p style="font-size: 12px;text-align: center;"> </p>
<div class="footer">
<ul>
{if $DomainModel->info_id > 0}
<li><a href="/">首 页</a></li>
<li><a href="/nindex/">小说首页</a></li>
{else}
<li><a href="/">首 页</a></li>
{/if}
<li><a href="{$strCategoryIndexUrlTemp}">分类</a></li>
<li><a href="/sitemap_index.xml">XML地图</a></li>
<li><a href="{$strHistoryUrlTemp}">阅读记录</a></li>
</ul>
</div>
<script>
const strPushApi = `{site:cfg code="PUSH_API_DOMAIN" encode="false"/}`;
</script>
<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/common.js"></script>
{block name="customize"}
{/block}
<!-- 全局统计 -->
{site:cfg code="PUBLIC_TONGJI_CODE" encode="false"/}
<!-- 站点统计 -->
{$DomainModel->d_statis|raw}
</body>
</html>

View File

@@ -1,110 +0,0 @@
<html lang="zh">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Cache-Control" content="no-cache,must-revalidate">
<meta http-equiv="Cache-Control" content="no-siteapp">
<meta http-equiv="Cache-Control" content="no-transform">
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{block name="title"}{/block}</title>
<meta name="keywords" content='{block name="keywords"}{/block}'>
<meta name="description" content='{block name="description"}{/block}'>
<meta http-equiv="mobile-agent" content="format=html5; url={$DomainModel->d_domain}">
<meta name="shenma-site-verification" content="941546c24f6fa26aab1a1c67341a9e07_1653579597">
<link rel="alternate" type="application/vnd.wap.xhtml+xml" media="handheld"
href="{$DomainModel->d_domain}">
<link rel="shortcut icon" href="/template/default/img/favicon.ico" type="image/x-icon">
<link href="/public/layer/need/layer.css" rel="stylesheet">
<link href="/template/default/pc/css/style.css" rel="stylesheet" type="text/css">
{block name="meta-other"}{/block}
{block name="head"}{/block}
{block name="head-css"}{/block}
{block name="head-js"}{/block}
<script>
const strPcPath = `{$strPcPath}`;
</script>
</head>
<body class="novel_home {block name='body-class'}{/block}" id="{block name='body-id'}{/block}">
<div class="topbar">
<div class="topbar-con">
<div class="topbar-sethome"><a href="javascript:winSetHP();">将本站设为首页</a></div>
<div class="topbar-addfavorite"><a href="javascript:winAddFav()">收藏{$DomainModel->d_name}</a></div>
<div class="topbar-right" id="qs_login"><a href="{$strPcPath}{$strBookShelfUrlTemp}">我的书架</a>
</div>
</div>
</div>
<div class="header">
<h1 class="logo"><a href="{$strPcPath}"><span>{$DomainModel->d_name}</span></a></h1>
<form id="novel_search" class="search-form" method="get" action="{$strPcPath}{$strSearchIndexUrlTemp}"><input type="text"
class="input-text input-key" name="keyword" placeholder="输入书名/作者进行搜索"><button type="submit"
class="btn-tosearch" form="novel_search" value="submit">搜索</button></form>
</div>
<ul class="nav">
{if $DomainModel->info_id > 0}
<li><a href="{$strPcPath}/">首 页</a></li>
<li><a href="{$strPcPath}/nindex/">小说首页</a></li>
{else}
<li><a href="{$strPcPath}/">首 页</a></li>
{/if}
<!-- <li><a href="/">首 页</a></li>
<li><a href="/nindex">小说首页</a></li> -->
<!-- <li><a href="{$strPcPath}/">首 页</a></li> -->
{novel:category d_key="strCategoryPinyin" d_val="strCategoryName"}
<li><a href='{$strPcPath}{site:nflurl category="$strCategoryPinyin" status="all" order="all" page="1"/}'>{$strCategoryName}</a></li>
{/novel:category}
<li><a href="{$strPcPath}{$strHistoryUrlTemp}">阅读记录</a></li>
</ul>
{block name="main"}
{/block}
<div class="row">
<div class="layout layout3 layout-col3">
<h2 class="layout-tit">最新标签</h2>
<ul class="txt-list txt-list-row5 tag_news">
{site:forgelist count="50" d_key="d_key" d_val="ForgeNovel" cache_life="86400"}
<a
href='{$strPcPath}{site:nnurl n_id="$ForgeNovel.n_id" n_py="$ForgeNovel.n_name_pinyin" n_fid="$ForgeNovel.n_forge_id"/}'>
{$ForgeNovel.n_forge_title}
</a>
{/site:forgelist}
<a href="/sitemap_index.xml">XML地图</a>
<a href="/site.txt">网站地图</a>
</ul>
</div>
</div>
<div class="footer" id="footer">
<div class="pc-footer">
<p>本站所有内容来源于互联网公开且无需登录即可获取的网页内容本站爬虫遵循robots协议若您的网站不希望被本站爬虫抓取可通过屏蔽novelspider字段实现。<br>本站仅对抓取到的内容由程序自动进行排版处理再展现,不涉及更改内容,不针对任何内容表述任何立场。<br>同时您可手动提交相关目标站点网址给我们(站点内容必须允许游客访问,本站爬虫不会抓取需要登录后才展现内容的站点),爬虫程序会依据负载状态自动爬取相关页面。<br>如内容有违规,请通过本站反馈邮箱提交给我们进行删除处理。
</p>
<p> 反馈邮箱:
{site:cfg code="YOU_XIANG" encode="false"/} Inc. All Rights Reserved. </p>
</div>
</div>
<div id="shuqian"></div>
<script>
const strPushApi = `{site:cfg code="PUSH_API_DOMAIN" encode="false"/}`;
</script>
<script src="/template/default/pc/js/jquery.min.js"></script>
<script src="/public/layer/layer.js" type="module" charset="utf-8"></script>
<script src="/template/default/pc/js/common.js"></script>
<script src="/template/default/js/common.js"></script>
{block name="customize"}
{/block}
<!-- 全局统计 -->
{site:cfg code="PUBLIC_TONGJI_CODE" encode="false"/}
<!-- 站点统计 -->
{$DomainModel->d_statis|raw}
</body>
</html>

View File

@@ -1,32 +0,0 @@
630小说模板-资源模板
源地址: 630zw.org
domain 表 要加字段
1.tdk
分类页面的tdk
d_category_title d_category_keywords d_category_description
排行榜页面的tdk
d_rank_title d_rank_keywords d_rank_description
内容/章节页面的tdk
d_content_title d_content_keywords d_content_description
2.详情页面的tdk
每个域名每个详情页面随机绑定一个设定的tdk模板
3.页面路由别名配置:代码里面直接读这个配置渲染,后面就不需要改模板代码里面的挑战地址
分类路由目录 d_category_path
详情路由目录 d_info_path
章节/内容页面路由目录 d_content_path
排行榜路由目录 d_rank_path
推荐页面路由目录 d_recommend_path
kan页面路由目录 d_kan_path
文章页面路由目录 d_article_path
4.这个是为了做某个视频或者某个小说关键词排名设计的
是否设置详情页面为首页 d_info_is_index
要设置为首页的小说或者视频资源id d_info_id

View File

@@ -1,14 +0,0 @@
<!DOCTYPE html>
<html>
<head>
{novel:info n_id="$DomainModel->n_id" n_key="arrNovel01" n_forge_id="1125940" /}
<title>{$arrNovel01.n_name} - 首页</title>
</head>
<body>
{$arrNovel01.n_description}
</body>
</html>

View File

@@ -1,108 +0,0 @@
{site:forgelist count="3" d_key="d_key" d_val="novel" cache_life="1000"}
<li>
Index: {$d_key}
Title: {$novel.n_name}
Author: {$novel.n_category}
</li>
{/site:forgelist}
<!-- {novel:ranklist count="10" sort_type="total" n_status="wanjie" n_sex="man" d_key="d_key" d_val="novel" cache_life="1000"}
<li>
Index: {$d_key}
Title: {$novel.n_name}
Author: {$novel.n_category}
</li>
{/novel:ranklist} -->
<!-- {novel:pagerexp page="1" limit="10" n_category="$Request.route.category" d_key="d_key" d_val="novel" p_val="page_data"
cache_life="1000" func="generateSearchPager" export_name="fadfads" /}
{php}var_dump($fadfads['p_data']);{/php} -->
<!-- {novel:pager page="1" limit="10" n_category="$Request.route.category" d_key="d_key" d_val="novel" p_val="page_data"
cache_life="1000" func="generateSearchPager"}
<li>
Index: {$d_key}
Title: {$novel.n_name}
Author: {$novel.n_category}
</li>
{/novel:pager}
{php}var_dump($page_data);{/php} -->
<!-- {site:grm page_code="fdasfadsf" diff="fadsfdsa" num="10" g_key="arrGrm" /}
{php}var_dump($arrGrm);{/php} -->
<!-- {chapter:info n_id="1" c_sort_num="200" c_page="0" c_key="arrChapter01" /}
{$arrChapter01.c_name} -->
<!-- {chapter:pager page="1" limit="10" n_id="$Request.get.n_id" d_key="d_key" d_val="chapter" cache_life="1000" button_num="3" sort_type="dao" p_val="page_data" func="generateChapterPager"}
<li>
Index: {$d_key}
章节名称: {$chapter.c_name}
章节序号: {$chapter.c_sort_num}
</li>
{/chapter:pager}
{php}var_dump($page_data);{/php} -->
<!-- {chapter:list count="10" n_id="$Request.get.n_id" d_key="d_key" d_val="chapter" cache_life="1000"}
<li>
Index: {$d_key}
章节名称: {$chapter.c_name}
章节序号: {$chapter.c_sort_num}
</li>
{/chapter:list} -->
<!--
{novel:category d_key="key" d_val="val"}
<li>
键: {$key} - 值: {$val}
</li>
{/novel:category} -->
<!-- {novel:sex d_key="key" d_val="val"}
<li>
键: {$key} - 值: {$val}
</li>
{/novel:sex} -->
<!--
{novel:status d_key="key" d_val="val"}
<li>
键: {$key} - 值: {$val}
</li>
{/novel:status} -->
<!--
{novel:sort d_key="key" d_val="val"}
<li>
键: {$key} - 值: {$val}
</li>
{/novel:sort} -->
<!--
{novel:info n_id="33" n_key="arrNovel01" n_forge_id="1125940" /}
{$arrNovel01.n_name} -->
<!-- {$DomainModel->d_domain} -->
<!-- {site:replace code="INDEX@INDEX@TITLE"}
-->
<!-- {novel:list count="10" n_category="$Request.route.category" d_key="d_key" d_val="novel" p_val="page_data" cache_life="1000"}
<li>
Index: {$d_key}
Title: {$novel.n_name}
Author: {$novel.n_category}
</li>
{/novel:list} -->

View File

@@ -1,67 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
<h1 class="logo">
<a href="/">狂雨小说</a>
</h1>
{/block}
{block name="main"}
<div class="box">
<div class="title">人气推荐</div>
<ul class="cover">
{foreach $arrRecommendNovel as $key=>$category}
{include file="Public/novelListS" /}
{/foreach}
</ul>
</div>
<div class="box">
<div class="title">今日点击</div>
{foreach $arrRecommendNovel as $key=>$category}
{if $key == 0}
{include file="Public/novelListH" /}
{/if}
{/foreach}
<ul class="vlist">
{foreach $arrRecommendNovel as $key=>$category}
{if $key >= 1}
{include file="Public/novelTextList" /}
{/if}
{/foreach}
</ul>
</div>
<div class="box">
<div class="title">书友推荐</div>
{foreach $arrRecommendNovel as $key=>$category}
{if $key == 0}
{include file="Public/novelListH" /}
{/if}
{/foreach}
<ul class="vlist">
{foreach $arrRecommendNovel as $key=>$category}
{if $key >= 1}
{include file="Public/novelTextList" /}
{/if}
{/foreach}
</ul>
</div>
<div class="box">
<div class="title">最近入库</div>
<ul class="vlist">
{foreach $arrRecommendNovel as $key=>$category}
{include file="Public/newsUpdateNovelList" /}
{/foreach}
</ul>
</div>
<div class="box">
<div class="title">最近更新</div>
<ul class="vlist">
{foreach $arrRecommendNovel as $key=>$category}
{include file="Public/newsUpdateNovelList" /}
{/foreach}
</ul>
</div>
{/block} {block name="customize"} {/block}

View File

@@ -1,69 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
{/block}
{block name="main"}
<ul class="sort">
<li>
<a href="/list/1/1.html">玄幻修真</a>
</li>
<li>
<a href="/list/2/1.html">重生穿越</a>
</li>
<li>
<a href="/list/3/1.html">都市小说</a>
</li>
<li>
<a href="/list/4/1.html">军史小说</a>
</li>
<li>
<a href="/list/5/1.html">网游小说</a>
</li>
<li>
<a href="/list/6/1.html">科幻小说</a>
</li>
<li>
<a href="/list/7/1.html">灵异小说</a>
</li>
<li>
<a href="/list/8/1.html">言情小说</a>
</li>
<li>
<a href="/list/9/1.html">其他小说</a>
</li>
<li>
<a href="/list/lastupdate_0_0_2_1.html">完本
</li>
</ul>
<div class="path">
<a href="/">首页</a>
&gt;&gt;<a href="/sort/">分类</a>
&gt;&gt;小说分类 - 小说列表
</div>
<ul class="list">
{foreach $arrNewsUpdateNovel as $key=>$category}
{include file="Public/novelListRank" /}
{/foreach}
</ul>
<div class="pagelist">
<a class="prev_off" href="/list/0/1.html">首 页</a>
<a class="prev_off" href="/list/0/1.html">&nbsp;1 &nbsp;</a>
<a href="/list/0/2.html">&nbsp;2 &nbsp;</a>
<a href="/list/0/3.html">&nbsp;3 &nbsp;</a>
<a href="/list/0/4.html">&nbsp;4 &nbsp;</a>
<a href="/list/0/5.html">&nbsp;5 &nbsp;</a>
<a href="/list/0/6.html">&nbsp;6 &nbsp;</a>
<a href="/list/0/7.html">&nbsp;7 &nbsp;</a>
<a href="/list/0/8.html">&nbsp;8 &nbsp;</a>
<a href="/list/0/9.html">&nbsp;9 &nbsp;</a>
<a href="/list/0/10.html">&nbsp;10 &nbsp;</a>
<a class="prev_on" href="/list/0/2.html">下一页</a>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,116 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
{/block}
{block name="main"}
<h1 class="headline">
<a href="/shishang/161.html">《满朝文武都能听到我的心声》</a>
</h1>
<h1 class="headline">101 朕拳打南山敬老院第1页</h1>
<div class="pager">
<a class="url_pre" id="pb_prev" href="/read/161/31043.html" style="">上页</a>
<a id="pb_mulu" href="/index/161/1/">目录</a>
<a id="pb_mulu" onclick="shuqian(161,31050,'https%3A%2F%2Fwww.hzpxw.net%2Fread%2F161%2F31050.html')">存书签</a>
<a class="url_next" id="pb_next" href="/read/161/31050_1.html">下页</a>
</div>
<div class="content">
<p>当然,在开始修史前,编修们决定给许烟杪做个特训。</p>
<p>“来,许郎,我问你,你是史官,要记录一件事:皇帝得了一匹烈马,三年过去马仍桀骜,将军为其驯马,短短百日即令马服从,帝问其如何做到,他告知:使马忍渴受训,从人驱遣。”</p>
<p>许烟杪琢磨了一下,开始下笔。</p>
<p>——经过两年的工作环境熏陶,他已经可以相对熟练地使用文言文了。</p>
<p>“上得烈马,三年不得乘。将军献言:百日可令其驯服。遂使之。果得,上问其由。曰:使马久渴则从人。”</p>
<p>编修看毕,很是惊喜:“许郎初涉修史,便已摸到精髓了!不错,记史便是越简练越好,‘上得烈马,三年不得乘’,此句便足以超过九成史官!”</p>
<p>许烟杪眼神清亮:“谢编修!”</p>
<p>那编修一愣:“你谢我作甚?”</p>
<p>许烟杪不好意思地笑:“此前我听编修言你们修前朝史已修了十年,便怕我的到来给诸位添麻烦。”</p>
<p>那编修本来平静的情绪,又微妙起了望不见的波澜。他深深看了许烟杪一眼,本来觉得这白泽过来当个吉祥物,提供正史就可以了,至于史书,编得大差不差就行,反正也不是指望他来做这个的。</p>
<p>但此刻,编修提笔,在纸上写了一句话:“你来看看。”</p>
<p>许烟杪探头,就见他写的文字下面,是板板正正的:上得烈马,三年不得乘。将军闻之,以渴服马,解上愁。</p>
<p>许烟杪眼睛一下子亮了起来。</p>
<p>他明白了!</p>
<p></p>
<p>老皇帝进入椒房殿的时候,窦皇后都吓了一跳:“怎这般狼狈!”</p>
<p>怎么胡子乱糟糟的!衣服也有褶皱了!</p>
<p>老皇帝骂道:“匹夫!皆是匹夫!”</p>
<p>然后气冲冲地向窦皇后诉说自己刚才的遭遇:“他们一个个闹着要上吊不算,还言语围攻朕!还捋朕的龙须!朕不想和他们计较,要走,还抓着不让朕走!”</p>
<p>——气到‘朕’字都冒出来了。</p>
<p>窦皇后:“……”</p>
<p>都把大臣们气到上手抓着皇帝不让他走了……尤其是她家五郎这种暴脾气的皇帝……</p>
<p>“五郎,你和我说真话。”窦皇后表情一下子严肃起来:“你不会是一气之下,砸了大臣的祖坟吧?”</p>
<p>她本来是挑严重的说,没想到对面的人诡异地沉默了。</p>
<p>“……你?”窦皇后的尾音不是很稳。</p>
<p>老皇帝咳嗽一声:“也没这么严重,比这个轻一点……也不是,轻了一些……呃,总之就是轻了。”</p>
<p>要不是实在心虚,他也不会只是在老婆面前骂几句这群粗鄙之人不要太过分。</p>
<p>——早就让人拖出去打板子了。</p>
<p>窦皇后:“究竟是何事?”</p>
<p>老皇帝眼神一漂:“让许烟杪去修周史。”</p>
<p>窦皇后:“……”</p>
<p>这和掘人家祖坟也没差多少了。真的怨不得大臣一气之下做出以下犯上的事情。</p>
<p>但看看丈夫下巴上面被揪得乱糟糟的胡子,窦皇后还是没忍住笑出声。</p>
<p>老皇帝:“妹子!你又不帮我!”</p>
<p>窦皇后乐不可支:“你啊,大臣也不是泥捏的,这匹夫一怒……还好只是揪揪胡子,拉着衣服不让你走。”</p>
</div>
<div class="pager">
<a class="url_pre" id="pb_prev" href="/read/161/31043.html" style="">上页</a>
<a id="pb_mulu" href="/shishang/161.html">书页</a>
<a id="pb_mulu" onclick="shuqian(161,31050,'https%3A%2F%2Fwww.hzpxw.net%2Fread%2F161%2F31050.html')">存书签</a>
<a class="url_next" id="pb_next" href="/read/161/31050_1.html">下页</a>
</div>
<div class="tui">
<div class="listtop">
<b>书友点击:</b>
<a href="/shishang/24823.html">见微知著(弟妹 H</a>
<a href="/shishang/14480.html">私吻蝴蝶骨</a>
<a href="/shishang/68.html">官途,搭上女领导之后!</a>
<a href="/shishang/80.html">当明星从跑龙套开始</a>
<a href="/shishang/15651.html">投喂流放罪臣后,她被迫现形了</a>
<a href="/shishang/21394.html">龙傲天的反派小师妹</a>
<a href="/shishang/11330.html">龙凤猪旅行团</a>
<a href="/shishang/11190.html">袅袅春腰</a>
<a href="/shishang/413.html">无敌从觉醒武器大师开始</a>
<a href="/shishang/11365.html">下乡的姐姐回来了</a>
</div>
</div>
<div class="tui">
<div class="listtop">
<b>书友推荐:</b>
<a href="/shishang/11914.html">以婚为名</a>
<a href="/shishang/11190.html">袅袅春腰</a>
<a href="/shishang/43344.html">官婿美人香</a>
<a href="/shishang/4095.html">望门娇媳</a>
<a href="/shishang/621.html">以你为名的夏天</a>
<a href="/shishang/23912.html">官道之权势滔天</a>
<a href="/shishang/15443.html">被嫡姐换亲之后</a>
<a href="/shishang/29873.html">他的暗卫</a>
<a href="/shishang/665.html">我的年轻岳母</a>
<a href="/shishang/11365.html">下乡的姐姐回来了</a>
</div>
</div>
<div class="tui">
<div class="listtop">
<b>书友收藏:</b>
<a href="/shishang/23651.html">潘多拉的复仇高干nph</a>
<a href="/shishang/64.html">千里宦途</a>
<a href="/shishang/73.html">医道官途</a>
<a href="/shishang/68.html">官途,搭上女领导之后!</a>
<a href="/shishang/35916.html">从边军走出来的悍卒</a>
<a href="/shishang/97.html">非常权途</a>
<a href="/shishang/54064.html">重生1958发家致富从南锣鼓巷开始</a>
<a href="/shishang/41670.html">听说你暗恋我</a>
<a href="/shishang/79892.html">退婚后,我娶了未婚妻的堂妹</a>
<a href="/shishang/63.html">升迁之路</a>
</div>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,644 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
{/block}
{block name="main"}
<div class="detail">
<img class="lazyload-img" data-encrypted="false" src="/static/img/default.jpg"
data-src="https://www.630zw.org/img/176943.jpg" alt="满朝文武都能听到我的心声">
<p class="name">
<strong>满朝文武都能听到我的心声</strong>
</p>
<p class="author">
<i class="layui-icon i_author"></i>
<a href="/author/%E7%99%BD%E8%89%B2%E7%9A%84%E6%9C%A8.html">白色的木</a>
</p>
<p>
<span class="layui-btn layui-btn-xs layui-btn-radius">其他小说</span>
<span class="layui-btn layui-btn-xs layui-btn-radius layui-btn-danger">连载中</span>
</p>
<p class="new">
最新章节:<a href="/read/161/8704762.html">第224章 许郎此去光耀万里</a>
</p>
<p>最后更新2024-06-05 17:53:58</p>
</div>
<ul class="action">
<li>
<a href="/shishang/161.html">小说详情</a>
</li>
<li>
<a href="/read/161/30445.html">开始阅读</a>
</li>
<li>
<a href="javascript:addbookcase('https://www.hzpxw.net/index/161/1/','161');">加入书架</a>
</li>
</ul>
<div class="box">
<div class="title">满朝文武都能听到我的心声 章节列表第2页</div>
<div class="page_num">
<a href="/shishang/161.html" class="z">上一页</a>
<select onchange="self.location.href=options[selectedIndex].value">
<option value="/shishang/161.html">第1-100章</option>
<option selected="selected" value="/index/161/1/">第101-200章</option>
<option value="/index/161/2/">第201-223章</option>
</select>
<a href="/index/161/2/" class="y">下一页</a>
</div>
<ul class="vlist">
<li>
<a href="/read/161/31050.html">
101 朕拳打南山敬老院<span></span>
</a>
</li>
<li>
<a href="/read/161/31055.html">
102 逼格好高让我看看<span></span>
</a>
</li>
<li>
<a href="/read/161/31063.html">
103 无人生还<span></span>
</a>
</li>
<li>
<a href="/read/161/31068.html">
104 big胆他是祥瑞 <span></span>
</a>
</li>
<li>
<a href="/read/161/31075.html">
第 105 章 大夏君臣 如果我把两个人关一起能变性吗<span></span>
</a>
</li>
<li>
<a href="/read/161/31080.html">
第 106 章 为了不被老皇帝猜忌装了十五年的腿瘸坐了十五年的轮椅<span></span>
</a>
</li>
<li>
<a href="/read/161/31087.html">
第 107 章 保命第一<span></span>
</a>
</li>
<li>
<a href="/read/161/31092.html">
第 108 章 惊堂堂太子当街碰瓷竟是因为<span></span>
</a>
</li>
<li>
<a href="/read/161/31100.html">
109 城管大队来啦<span></span>
</a>
</li>
<li>
<a href="/read/161/31105.html">
110 舍利子色不异空空不异色色即是空空<span></span>
</a>
</li>
<li>
<a href="/read/161/31110.html">
111 让我看看是哪家倒霉蛋被选中了<span></span>
</a>
</li>
<li>
<a href="/read/161/31114.html">
112 公若不弃便拜为义父<span></span>
</a>
</li>
<li>
<a href="/read/161/31119.html">
113 太医快叫太医<span></span>
</a>
</li>
<li>
<a href="/read/161/31124.html">
114 我是不是误入什么修罗场了<span></span>
</a>
</li>
<li>
<a href="/read/161/31130.html">
115 十年里年年高三礼貌吗<span></span>
</a>
</li>
<li>
<a href="/read/161/31134.html">
116 这才是高端的认祖宗办法<span></span>
</a>
</li>
<li>
<a href="/read/161/31137.html">
117 得加钱<span></span>
</a>
</li>
<li>
<a href="/read/161/31141.html">
第 118 章 你好尊敬的欧罗巴医师能治一下我们太子吗<span></span>
</a>
</li>
<li>
<a href="/read/161/31145.html">
119 当初真不应该放过他们家祖坟<span></span>
</a>
</li>
<li>
<a href="/read/161/31151.html">
120 寒风萧瑟大雪纷飞他的背影无比凄凉<span></span>
</a>
</li>
<li>
<a href="/read/161/31155.html">
121 惊净身房或要立功<span></span>
</a>
</li>
<li>
<a href="/read/161/31160.html">
122 啥你喜欢皇帝岳母<span></span>
</a>
</li>
<li>
<a href="/read/161/31164.html">
123 换我我也心动<span></span>
</a>
</li>
<li>
<a href="/read/161/31169.html">
124 许郎岁二十及冠<span></span>
</a>
</li>
<li>
<a href="/read/161/31175.html">
125 树与瑶池<span></span>
</a>
</li>
<li>
<a href="/read/161/31181.html">
126 这贿赂是单送我一人的还是别的官员们都<span></span>
</a>
</li>
<li>
<a href="/read/161/31188.html">
127 撕碎别人的伞<span></span>
</a>
</li>
<li>
<a href="/read/161/31191.html">
128 哥哥你错啦<span></span>
</a>
</li>
<li>
<a href="/read/161/31199.html">
129 专业替考编五场会试保送五人<span></span>
</a>
</li>
<li>
<a href="/read/161/31205.html">
130 天统的官狗都不当<span></span>
</a>
</li>
<li>
<a href="/read/161/31211.html">
131 监督简单看系统<span></span>
</a>
</li>
<li>
<a href="/read/161/31216.html">
132 你信他还是信我是始皇帝<span></span>
</a>
</li>
<li>
<a href="/read/161/31223.html">
133 阎王爷点名2 0<span></span>
</a>
</li>
<li>
<a href="/read/161/31228.html">
134 皇恩浩荡啊<span></span>
</a>
</li>
<li>
<a href="/read/161/31235.html">
135 襄阳公主 与其反省自己不如质疑别人<span></span>
</a>
</li>
<li>
<a href="/read/161/31240.html">
136 榜下捉婿之从开始到结束<span></span>
</a>
</li>
<li>
<a href="/read/161/31248.html">
137 十郎我只图你一辈子对我好我不在乎你有<span></span>
</a>
</li>
<li>
<a href="/read/161/31253.html">
138 风险与投资<span></span>
</a>
</li>
<li>
<a href="/read/161/31260.html">
139 啊多么可歌可泣神圣伟大美好<span></span>
</a>
</li>
<li>
<a href="/read/161/31265.html">
140 今天抽个盲盒吧芜湖 谁第一个出来奏报<span></span>
</a>
</li>
<li>
<a href="/read/161/31272.html">
141 老皇帝风韵犹存小太子青涩可人<span></span>
</a>
</li>
<li>
<a href="/read/161/31278.html">
142 朕的宝贝红薯土豆玉米你们终于回来了<span></span>
</a>
</li>
<li>
<a href="/read/161/31285.html">
143 大可不必以这种方式青史留名<span></span>
</a>
</li>
<li>
<a href="/read/161/31290.html">
144 过不下去就回学校吃饭卡<span></span>
</a>
</li>
<li>
<a href="/read/161/31297.html">
第 145 章 今谢氏洛水远赴海外历时二载得回神种大功封洛县县侯<span></span>
</a>
</li>
<li>
<a href="/read/161/31302.html">
第 146 章 告老还乡后我写点回忆录记载同僚的糗事不过分吧<span></span>
</a>
</li>
<li>
<a href="/read/161/31309.html">
第 147 章 三十年河东三十年河西莫欺老年穷<span></span>
</a>
</li>
<li>
<a href="/read/161/31315.html">
第 148 章 惊皇帝居然公然抢大臣的土地<span></span>
</a>
</li>
<li>
<a href="/read/161/31320.html">
第 149 章 有杀气<span></span>
</a>
</li>
<li>
<a href="/read/161/31327.html">
第 150 章 捅破天了<span></span>
</a>
</li>
<li>
<a href="/read/161/31330.html">
第 151 章 天统消消乐一<span></span>
</a>
</li>
<li>
<a href="/read/161/31337.html">
第 152 章 天统消消乐二<span></span>
</a>
</li>
<li>
<a href="/read/161/31343.html">
第 153 章 天统消消乐三<span></span>
</a>
</li>
<li>
<a href="/read/161/31350.html">
第 154 章 天统消消乐四<span></span>
</a>
</li>
<li>
<a href="/read/161/31355.html">
第 155 章 天统消消乐五<span></span>
</a>
</li>
<li>
<a href="/read/161/31362.html">
第 156 章 天统消消乐六<span></span>
</a>
</li>
<li>
<a href="/read/161/31365.html">
第 157 章 天统消消乐七<span></span>
</a>
</li>
<li>
<a href="/read/161/31372.html">
第 158 章 天统消消乐八<span></span>
</a>
</li>
<li>
<a href="/read/161/31377.html">
第 159 章 天统消消乐九<span></span>
</a>
</li>
<li>
<a href="/read/161/31384.html">
第 160 章 大风刮来钱啦<span></span>
</a>
</li>
<li>
<a href="/read/161/31389.html">
第 161 章 一天不听八卦就不舒服<span></span>
</a>
</li>
<li>
<a href="/read/161/31396.html">
第 162 章 朝廷大助力是兄弟就帮我砍别的丞相候选人一刀<span></span>
</a>
</li>
<li>
<a href="/read/161/31402.html">
第 163 章 进宫看热闹<span></span>
</a>
</li>
<li>
<a href="/read/161/31409.html">
第 164 章 你们争丞相位置引起了小白泽的注意为什么倒霉的是我啊啊<span></span>
</a>
</li>
<li>
<a href="/read/161/31414.html">
第 165 章 老实人许烟杪<span></span>
</a>
</li>
<li>
<a href="/read/161/31421.html">
第 166 章 我也是你们play的一环吗<span></span>
</a>
</li>
<li>
<a href="/read/161/31426.html">
第 167 章 许适之啊许适之你不能再跑偏重点了<span></span>
</a>
</li>
<li>
<a href="/read/161/31433.html">
第 168 章 半日尚书<span></span>
</a>
</li>
<li>
<a href="/read/161/31438.html">
第 169 章 巨额财产来源不明罪<span></span>
</a>
</li>
<li>
<a href="/read/161/31445.html">
第 170 章 三气腐儒<span></span>
</a>
</li>
<li>
<a href="/read/161/31450.html">
第 171 章 还我血汗钱<span></span>
</a>
</li>
<li>
<a href="/read/161/31458.html">
第 172 章 神出鬼没小白泽<span></span>
</a>
</li>
<li>
<a href="/read/161/31463.html">
第 173 章 本宫只是想找到谁半年不冲厕所而已怎么揪出来两个奇奇怪怪<span></span>
</a>
</li>
<li>
<a href="/read/161/31468.html">
第 174 章 太子绕柱走<span></span>
</a>
</li>
<li>
<a href="/read/161/31474.html">
第 175 章 丰收的喜悦<span></span>
</a>
</li>
<li>
<a href="/read/161/31482.html">
第 176 章 陛下你也不想偷偷削武官底薪的事情被发现吧<span></span>
</a>
</li>
<li>
<a href="/read/161/31487.html">
第 177 章 卧槽老皇帝让武官随便搬他的私库<span></span>
</a>
</li>
<li>
<a href="/read/161/31491.html">
第 178 章 我的心跟你一起死了<span></span>
</a>
</li>
<li>
<a href="/read/161/31496.html">
第 179 章 三年了版本该更新了<span></span>
</a>
</li>
<li>
<a href="/read/161/1596466.html">
第 180 章 自有大儒替我辩经<span></span>
</a>
</li>
<li>
<a href="/read/161/1596470.html">
第 181 章 难道你趴朱子床底下知道他没有纳尼姑<span></span>
</a>
</li>
<li>
<a href="/read/161/1596471.html">
第 182 章 朱子的思想不重要朱子有没有纳尼姑睡儿媳才重要<span></span>
</a>
</li>
<li>
<a href="/read/161/1596473.html">
第 183 章 此地无淫三百两<span></span>
</a>
</li>
<li>
<a href="/read/161/1596474.html">
第 184 章 你真是个好人<span></span>
</a>
</li>
<li>
<a href="/read/161/1596475.html">
第 185 章 男耕女织女子纺织乃本职若来做官便是不务正业<span></span>
</a>
</li>
<li>
<a href="/read/161/1596477.html">
第 186 章 呵皇后来了又怎么样朕也不怕的<span></span>
</a>
</li>
<li>
<a href="/read/161/1596478.html">
第 187 章 千里家书只为墙让他三尺又何妨<span></span>
</a>
</li>
<li>
<a href="/read/161/1596480.html">
第 188 章 看到了吗这就是不好好读书的下场<span></span>
</a>
</li>
<li>
<a href="/read/161/1596481.html">
第 189 章 社死的惨叫声<span></span>
</a>
</li>
<li>
<a href="/read/161/1596483.html">
第 190 章 损还是小白泽损<span></span>
</a>
</li>
<li>
<a href="/read/161/1596484.html">
第 191 章 你们最好好好听着我是怎么给大夏乃至给前朝擦屁股的<span></span>
</a>
</li>
<li>
<a href="/read/161/1596485.html">
第 192 章 朕得你如鱼得水<span></span>
</a>
</li>
<li>
<a href="/read/161/1596486.html">
第 193 章 这这瓜是不是过于甜了<span></span>
</a>
</li>
<li>
<a href="/read/161/1596487.html">
第 194 章 智商税<span></span>
</a>
</li>
<li>
<a href="/read/161/1596489.html">
第 195 章 陛下何故造反<span></span>
</a>
</li>
<li>
<a href="/read/161/1596491.html">
第 196 章 尴尬不会消失只会转移<span></span>
</a>
</li>
<li>
<a href="/read/161/1596492.html">
第 197 章 棋逢对手将遇良才<span></span>
</a>
</li>
<li>
<a href="/read/161/1596494.html">
第 198 章 棋逢对手将遇良才2 0<span></span>
</a>
</li>
<li>
<a href="/read/161/1596496.html">
第 199 章 娘啊<span></span>
</a>
</li>
<li>
<a href="/read/161/1596497.html">
第 200 章 你娘活着影响你发挥了<span></span>
</a>
</li>
</ul>
<div class="page_num">
<a href="/shishang/161.html" class="z">上一页</a>
<select onchange="self.location.href=options[selectedIndex].value">
<option value="/shishang/161.html">第1-100章</option>
<option selected="selected" value="/index/161/1/">第101-200章</option>
<option value="/index/161/2/">第201-223章</option>
</select>
<a href="/index/161/2/" class="y">下一页</a>
</div>
</div>
<div class="tui">
<div class="listtop">
<b>书友点击:</b>
<a href="/shishang/23697.html">不乖(姐夫,出轨)</a>
<a href="/shishang/23912.html">官道之权势滔天</a>
<a href="/shishang/609.html">蝶变</a>
<a href="/shishang/40.html">苟在修真世界</a>
<a href="/shishang/24025.html">玻璃灯</a>
<a href="/shishang/14480.html">私吻蝴蝶骨</a>
<a href="/shishang/15443.html">被嫡姐换亲之后</a>
<a href="/shishang/165.html">没你就不行之新征途</a>
<a href="/shishang/29873.html">他的暗卫</a>
<a href="/shishang/19030.html">翡翠衾nph</a>
<a href="/shishang/20117.html">女神攻略手册</a>
<a href="/shishang/665.html">我的年轻岳母</a>
<a href="/shishang/24677.html">鱼目珠子高干1v1</a>
<a href="/shishang/381.html">直播写纯爱文的我在虫族封神</a>
<a href="/shishang/236.html">触手怪她只想生存</a>
<a href="/shishang/607.html">归雾</a>
<a href="/shishang/36033.html">潘多拉的复仇</a>
<a href="/shishang/64.html">千里宦途</a>
<a href="/shishang/9387.html">岁岁平安</a>
<a href="/shishang/16617.html">吃了肉,就不能吃我了</a>
</div>
</div>
<div class="tui">
<div class="listtop">
<b>书友推荐:</b>
<a href="/shishang/665.html">我的年轻岳母</a>
<a href="/shishang/381.html">直播写纯爱文的我在虫族封神</a>
<a href="/shishang/607.html">归雾</a>
<a href="/shishang/413.html">无敌从觉醒武器大师开始</a>
<a href="/shishang/612.html">古代猎户的养家日常</a>
<a href="/shishang/34605.html">认知性偏差</a>
<a href="/shishang/15443.html">被嫡姐换亲之后</a>
<a href="/shishang/14480.html">私吻蝴蝶骨</a>
<a href="/shishang/11332.html">替身男配只想赚钱</a>
<a href="/shishang/432.html">黑心大小姐带着空间下乡啦</a>
<a href="/shishang/11375.html">逐澳游戏</a>
<a href="/shishang/16617.html">吃了肉,就不能吃我了</a>
<a href="/shishang/3230.html">一品红人</a>
<a href="/shishang/507.html">七零宠婚:撩硬汉!生三胎</a>
<a href="/shishang/9394.html">大王万万不可!</a>
<a href="/shishang/69.html">误入官路</a>
<a href="/shishang/10893.html">含泪做1</a>
<a href="/shishang/609.html">蝶变</a>
<a href="/shishang/36040.html">无敌六皇子</a>
<a href="/shishang/165.html">没你就不行之新征途</a>
</div>
</div>
<div class="tui">
<div class="listtop">
<b>书友收藏:</b>
<a href="/shishang/79245.html">癌症晚期,前任女友疯狂报复我</a>
<a href="/shishang/26313.html">天才少年,开局便是救世主</a>
<a href="/shishang/9394.html">大王万万不可!</a>
<a href="/shishang/105465.html">梨汁软糖【1V1甜H】</a>
<a href="/shishang/24865.html">诱奸儿媳</a>
<a href="/shishang/83700.html">官场之狐</a>
<a href="/shishang/11609.html">钟离先生一直在穿越</a>
<a href="/shishang/12819.html">云婳谢景行</a>
<a href="/shishang/70.html">官途:权力巅峰</a>
<a href="/shishang/609.html">蝶变</a>
<a href="/shishang/45096.html">开局一杆大狙,爆杀十万鞑子</a>
<a href="/shishang/3230.html">一品红人</a>
<a href="/shishang/16617.html">吃了肉,就不能吃我了</a>
<a href="/shishang/39442.html">官婿美人香全文完结</a>
<a href="/shishang/23875.html">青花冷先婚后爱H</a>
<a href="/shishang/288.html">七零大杂院小寡妇</a>
<a href="/shishang/78.html">官场:扶摇直上九万里</a>
<a href="/shishang/35716.html">官路浮沉</a>
<a href="/shishang/35916.html">从边军走出来的悍卒</a>
<a href="/shishang/236.html">触手怪她只想生存</a>
</div>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,699 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
{/block}
{block name="main"}
<div class="detail">
<img class="lazyload-img" data-encrypted="false" src="/static/img/default.jpg"
data-src="https://www.630zw.org/img/176943.jpg" alt="和扶弟魔老婆离婚后,我直接走上巅峰!">
<p class="name">
<strong>和扶弟魔老婆离婚后,我直接走上巅峰!</strong>
</p>
<p class="author">
<i class="layui-icon i_author"></i>
<a href="/author/%E5%A4%A9%E5%91%BD%E4%BA%BA%E6%82%9F%E7%8C%B4.html">天命人悟猴</a>
</p>
<p>
<span class="layui-btn layui-btn-xs layui-btn-radius">都市小说</span>
<span class="layui-btn layui-btn-xs layui-btn-radius layui-btn-danger">连载中</span>
</p>
<p class="new">
最新章节:<a href="/read/125639/34796282.html">第344章</a>
</p>
<p>最后更新2025-03-20 11:17:50</p>
</div>
<ul class="action">
<li>
<a href="/read/125639/34795938.html">开始阅读</a>
</li>
<li>
<a href="/index/125639/1/">章节目录</a>
</li>
<li>
<a href="javascript:addbookcase('https://www.hzpxw.net/shishang/125639.html','125639');">加入书架</a>
</li>
</ul>
<div class="box">
<div class="title">和扶弟魔老婆离婚后,我直接走上巅峰!小说简介</div>
<div class="intro">
<p>结婚两年半,妻子为了弟弟掏空家产,甚至拿走给工人的工资!面对妻子赵梦莹胡搅蛮缠的一家人,以及对方的颠倒黑白,许平安一通电话打给以前的战友。他不忍了!一场意外,再次见到高中同学,对方脱胎换骨。许平安也很惊讶,却不知自己是某人心中的白月光。离了赵梦莹,许平安逐渐走向人生巅峰,收获真爱,而前妻却开始死缠烂打。呵呵,他瞧不上!
</p>
</div>
</div>
<div class="box">
<div class="title">和扶弟魔老婆离婚后,我直接走上巅峰! 最新章节</div>
<ul class="vlist">
<li>
<a href="/read/125639/34796282.html">
第344章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796281.html">
第343章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796280.html">
第342章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796279.html">
第341章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796278.html">
第340章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796277.html">
第339章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796276.html">
第338章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796275.html">
第337章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796274.html">
第336章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796273.html">
第335章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796272.html">
第334章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796271.html">
第333章<span></span>
</a>
</li>
</ul>
<div class="title">和扶弟魔老婆离婚后,我直接走上巅峰! 章节列表第1页/100章</div>
<ul class="vlist">
<li>
<a href="/read/125639/34795938.html">
第1章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795939.html">
第2章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795940.html">
第3章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795941.html">
第4章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795942.html">
第5章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795943.html">
第6章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795944.html">
第7章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795945.html">
第8章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795946.html">
第9章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795947.html">
第10章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795948.html">
第11章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795949.html">
第12章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795950.html">
第13章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795951.html">
第14章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795952.html">
第15章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795953.html">
第16章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795954.html">
第17章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795955.html">
第18章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795956.html">
第19章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795957.html">
第20章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795958.html">
第21章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795959.html">
第22章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795960.html">
第23章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795961.html">
第24章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795962.html">
第25章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795963.html">
第26章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795964.html">
第27章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795965.html">
第28章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795966.html">
第29章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795967.html">
第30章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795968.html">
第31章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795969.html">
第32章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795970.html">
第33章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795971.html">
第34章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795972.html">
第35章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795973.html">
第36章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795974.html">
第37章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795975.html">
第38章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795976.html">
第39章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795977.html">
第40章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795978.html">
第41章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795979.html">
第42章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795980.html">
第43章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795981.html">
第44章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795982.html">
第45章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795983.html">
第46章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795984.html">
第47章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795985.html">
第48章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795986.html">
第49章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795987.html">
第50章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795988.html">
第51章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795989.html">
第52章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795990.html">
第53章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795991.html">
第54章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795992.html">
第55章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795993.html">
第56章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795994.html">
第57章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795995.html">
第58章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795996.html">
第59章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795997.html">
第60章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795998.html">
第61章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34795999.html">
第62章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796000.html">
第63章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796001.html">
第64章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796002.html">
第65章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796003.html">
第66章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796004.html">
第67章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796005.html">
第68章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796006.html">
第69章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796007.html">
第70章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796008.html">
第71章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796009.html">
第72章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796010.html">
第73章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796011.html">
第74章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796012.html">
第75章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796013.html">
第76章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796014.html">
第77章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796015.html">
第78章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796016.html">
第79章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796017.html">
第80章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796018.html">
第81章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796019.html">
第82章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796020.html">
第83章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796021.html">
第84章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796022.html">
第85章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796023.html">
第86章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796024.html">
第87章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796025.html">
第88章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796026.html">
第89章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796027.html">
第90章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796028.html">
第91章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796029.html">
第92章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796030.html">
第93章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796031.html">
第94章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796032.html">
第95章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796033.html">
第96章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796034.html">
第97章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796035.html">
第98章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796036.html">
第99章<span></span>
</a>
</li>
<li>
<a href="/read/125639/34796037.html">
第100章<span></span>
</a>
</li>
<li class="now">
<a href="/index/125639/1/">查看《和扶弟魔老婆离婚后,我直接走上巅峰!》全部章节...</a>
</li>
</ul>
</div>
<div class="tui">
<div class="listtop">
<b>书友点击:</b>
<a href="/shishang/665.html">我的年轻岳母</a>
<a href="/shishang/21398.html">琉璃阶上</a>
<a href="/shishang/15443.html">被嫡姐换亲之后</a>
<a href="/shishang/621.html">以你为名的夏天</a>
<a href="/shishang/148.html">在北宋当陪房</a>
<a href="/shishang/381.html">直播写纯爱文的我在虫族封神</a>
<a href="/shishang/164.html">嫁给铁哥们</a>
<a href="/shishang/3230.html">一品红人</a>
<a href="/shishang/68.html">官途,搭上女领导之后!</a>
<a href="/shishang/24025.html">玻璃灯</a>
<a href="/shishang/64.html">千里宦途</a>
<a href="/shishang/7093.html">重生七零:糙汉老公掐腰宠</a>
<a href="/shishang/15651.html">投喂流放罪臣后,她被迫现形了</a>
<a href="/shishang/11330.html">龙凤猪旅行团</a>
<a href="/shishang/21847.html">陈放顾静姝</a>
<a href="/shishang/19030.html">翡翠衾nph</a>
<a href="/shishang/486.html">替嫡姐爬上龙床,她宠冠后宫</a>
<a href="/shishang/11332.html">替身男配只想赚钱</a>
<a href="/shishang/23152.html">穿书后成了狼孩</a>
<a href="/shishang/607.html">归雾</a>
</div>
</div>
<div class="tui">
<div class="listtop">
<b>书友推荐:</b>
<a href="/shishang/43344.html">官婿美人香</a>
<a href="/shishang/12770.html">人间政道</a>
<a href="/shishang/165.html">没你就不行之新征途</a>
<a href="/shishang/381.html">直播写纯爱文的我在虫族封神</a>
<a href="/shishang/507.html">七零宠婚:撩硬汉!生三胎</a>
<a href="/shishang/11332.html">替身男配只想赚钱</a>
<a href="/shishang/19030.html">翡翠衾nph</a>
<a href="/shishang/15259.html">结局前炮灰们掀了马甲</a>
<a href="/shishang/24677.html">鱼目珠子高干1v1</a>
<a href="/shishang/1458.html">婚后心动:凌总追妻有点甜</a>
<a href="/shishang/9394.html">大王万万不可!</a>
<a href="/shishang/34605.html">认知性偏差</a>
<a href="/shishang/621.html">以你为名的夏天</a>
<a href="/shishang/80.html">当明星从跑龙套开始</a>
<a href="/shishang/10893.html">含泪做1</a>
<a href="/shishang/11330.html">龙凤猪旅行团</a>
<a href="/shishang/29873.html">他的暗卫</a>
<a href="/shishang/3230.html">一品红人</a>
<a href="/shishang/413.html">无敌从觉醒武器大师开始</a>
<a href="/shishang/573.html">他说我不配</a>
</div>
</div>
<div class="tui">
<div class="listtop">
<b>书友收藏:</b>
<a href="/shishang/26313.html">天才少年,开局便是救世主</a>
<a href="/shishang/80.html">当明星从跑龙套开始</a>
<a href="/shishang/609.html">蝶变</a>
<a href="/shishang/68.html">官途,搭上女领导之后!</a>
<a href="/shishang/101156.html">华娱从男模开始</a>
<a href="/shishang/63.html">升迁之路</a>
<a href="/shishang/23629.html">优质肉棒攻略系统np高辣文</a>
<a href="/shishang/79892.html">退婚后,我娶了未婚妻的堂妹</a>
<a href="/shishang/15552.html">官场:救了女领导后,我一路飞升</a>
<a href="/shishang/83700.html">官场之狐</a>
<a href="/shishang/486.html">替嫡姐爬上龙床,她宠冠后宫</a>
<a href="/shishang/16055.html">绝品宏图</a>
<a href="/shishang/16617.html">吃了肉,就不能吃我了</a>
<a href="/shishang/78.html">官场:扶摇直上九万里</a>
<a href="/shishang/35716.html">官路浮沉</a>
<a href="/shishang/73.html">医道官途</a>
<a href="/shishang/45096.html">开局一杆大狙,爆杀十万鞑子</a>
<a href="/shishang/15443.html">被嫡姐换亲之后</a>
<a href="/shishang/23642.html">你男朋友下面真大(校园 np 高h</a>
<a href="/shishang/97.html">非常权途</a>
</div>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,72 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
{/block}
{block name="main"}
<ul class="sort">
<li>
<a href="/rank/dayvisit_0_0_0_1.html">日排行</a>
</li>
<li>
<a href="/rank/weekvisit_0_0_0_1.html">周排行</a>
</li>
<li>
<a href="/rank/monthvisit_0_0_0_1.html" id="dayvisit">月排行</a>
</li>
<li>
<a href="/rank/allvisit_0_0_0_1.html">总排行</a>
</li>
<li>
<a href="/rank/dayvote_0_0_0_1.html">日推荐</a>
</li>
<li>
<a href="/rank/weekvote_0_0_0_1.html">周推荐</a>
</li>
<li>
<a href="/rank/monthvote_0_0_0_1.html">月推荐</a>
</li>
<li>
<a href="/rank/allvote_0_0_0_1.html">总推荐</a>
</li>
<li>
<a href="/rank/goodnum_0_0_0_1.html">总收藏</a>
</li>
<li>
<a href="/rank/postdate_0_0_0_1.html">最新入库</a>
</li>
<li>
<a href="/rank/lastupdate_0_0_0_1.html">最新更新</a>
</li>
</ul>
<div class="path">
<a href="/">首页</a>
&gt;&gt;<a href="/rank/">排行</a>
&gt;&gt;月排行榜
</div>
<ul class="list">
{foreach $arrDayRankNovel as $key=>$category}
{include file="Public/novelListRank" /}
{/foreach}
</ul>
<div class="pagelist">
<a class="prev_off" href="/list/0/1.html">首 页</a>
<a class="prev_off" href="/list/0/1.html">&nbsp;1 &nbsp;</a>
<a href="/list/0/2.html">&nbsp;2 &nbsp;</a>
<a href="/list/0/3.html">&nbsp;3 &nbsp;</a>
<a href="/list/0/4.html">&nbsp;4 &nbsp;</a>
<a href="/list/0/5.html">&nbsp;5 &nbsp;</a>
<a href="/list/0/6.html">&nbsp;6 &nbsp;</a>
<a href="/list/0/7.html">&nbsp;7 &nbsp;</a>
<a href="/list/0/8.html">&nbsp;8 &nbsp;</a>
<a href="/list/0/9.html">&nbsp;9 &nbsp;</a>
<a href="/list/0/10.html">&nbsp;10 &nbsp;</a>
<a class="prev_on" href="/list/0/2.html">下一页</a>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,37 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
{/block}
{block name="main"}
<div class="path">
<span style="color: red;">"我"</span>
相关结果:
</div>
<ul class="list">
{foreach $arrSearchNovel as $key=>$category}
{include file="Public/novelListRank" /}
{/foreach}
</ul>
<div class="pagelist">
<a class="prev_off" href="/list/0/1.html">首 页</a>
<a class="prev_off" href="/list/0/1.html">&nbsp;1 &nbsp;</a>
<a href="/list/0/2.html">&nbsp;2 &nbsp;</a>
<a href="/list/0/3.html">&nbsp;3 &nbsp;</a>
<a href="/list/0/4.html">&nbsp;4 &nbsp;</a>
<a href="/list/0/5.html">&nbsp;5 &nbsp;</a>
<a href="/list/0/6.html">&nbsp;6 &nbsp;</a>
<a href="/list/0/7.html">&nbsp;7 &nbsp;</a>
<a href="/list/0/8.html">&nbsp;8 &nbsp;</a>
<a href="/list/0/9.html">&nbsp;9 &nbsp;</a>
<a href="/list/0/10.html">&nbsp;10 &nbsp;</a>
<a class="prev_on" href="/list/0/2.html">下一页</a>
</div>
{/block}
{block name="customize"} {/block}

View File

@@ -1,29 +0,0 @@
{extend name="baseH5" /}
{block name='nav-active-class'}home{/block}
{block name="title"}{/block}
{block name="head-js"}{/block}
{block name="logo-html"}
<h1 class="logo">
<a href="/">狂雨小说</a>
</h1>
{/block}
{block name="main"}
<div style="height:50px"></div>
<div class="mod new-book">
<div class="mod-head">
<h3>深度解说列表</h3>
</div>
<div class="top-index">
<ul class="clearfix">
{foreach $arrNewsNovel as $key2 => $vo}
{include file="Public/novelListRank" /}
{/foreach}
</ul>
</div>
</div>
{/block}
{block name="customize"} {/block}

Some files were not shown because too many files have changed in this diff Show More