杰奇cms章节分页怎么实现(主要针对2.4版本)
看这个教程之前请注意哦,相关的代码调用了不少杰奇内置的方法,所以只适合杰奇的官网版本,外面其它的手机端插件之类的,倒是也可以根据我的思路自行二次开发。另外就是,原本是可以完美实现的,但是碰到了一个巨大的问题,就是杰奇是加密的,我解密之后没有完全无错,导致windows下一切正常,linux下500,这个问题因为我的php不是很吊没能解决。
所以这篇文章的主要目的有两个,一是我已经快两个星期没有更新博客了,总想写点什么,二是这个问题一直没有解决,我在等一个路过的大佬可以指点一二。
我采用的版本为杰奇1.8,如果可以建立在packeage.php可以成功无错解密的前提下,几乎1.7到2.3都可以使用,无非就是改一下方法的名称。注意,严格来说只是一个半成品,可能存在安全问题之类的,算是提供一个参考。话说其实网上有解密版,或者至少是packeage.php这个文件解密的版本,比如17mb论坛的,和我之前分享过的杰奇2.3,那没准还可以帮助到一些人的样子。
另外就是,这个思路也可以实现那种弹出菜单的那种分页,总是非常全了,可是过程也不难。
写在开头:
说实话我是允许转载文章的,只需要注明源链接,原作者就好了,哪怕没有跟我说明也行。最近总是有家伙喜欢复制我的内容,改几个字,就名正言顺的成为他的。那么问题就来了,你又没有写的能力,还没有最基本的尊敬,那你比路边的乞丐还没有道义,目前我除了谴责还是谴责咯,没卵用的,无非就是打击自己的原创热情而已,混互联网就应该做好这种准备,没办法。
那我就不废话了,先说我已经实现的功能。
1.控制每个章节分页的字数
2.输出当前页和总页面的比(如1/4)
3.自动判断是否存上下页,如果无则按照杰奇默认上下章节链接。
步骤如下:
第一步:解密杰奇的packeage.php,在最顶部,也是就<?php的下面,写上全局方法。
function str_split_unicode($str, $l = 3000) {if ($l > 0) {$ret = array();$len = mb_strlen($str, "utf-8");for ($i = 0; $i < $len; $i += $l) {if (ord($str_cut[$i]) > 128) $i++;$ret[] = mb_substr($str, $i, $l, "utf-8");}return $ret;}return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
}
这里就是分页实现的核心,$l定义了每页的字数,我设置为了1000字,大概的原理就是,将章节的文字分割成1000字为间隔的数组。这样,就可以把杰奇的章节内容字段成为参数进入这个方法,然后被分割成数组,根据浏览器头部传入的也参数进行调用。但是这里有个问题,数组是从0开始的,如果在网页前台从0开始调用参数,似乎显得不太合适,然后我们也不知道怎么去控制页面走完之后怎么办。
第二步:分隔章节,引入两个参数,章节id,和当前页id(新定义),通过配合杰奇内置的方法组成链接。
if (isset($_REQUEST["cid"])) { //重新获取一遍章节id,赋予新字段t_cid$_REQUEST["cid"] = intval($_REQUEST["cid"]);$t_cid = $_REQUEST["cid"];
}
$t_url = jieqi_geturl("article", "chapter", $t_cid, $this->id, $tmpisvip, $this->metas["articlecode"]); //以杰奇自身的方法,生成当前页面的路径。
$jieqiTpl->setCaching(0);
if (isset($_REQUEST["cpage"])) { //以cpage为参数,从前台闯入,表示当前页的页码$_REQUEST["cpage"] = intval($_REQUEST["cpage"]);$t_page = $_REQUEST["cpage"];if($_REQUEST["cpage"] > 0){ //根据页码开始调用章节数组中的数据,并且和前面定义的当前页面链接,组合成上一页链接,并且页面走完的时候设置为空值,方便前台判断。$cpage = $_REQUEST["cpage"] - 1;$t_preview = $t_url."&cpage=".$cpage;}else{$cpage = 0;$t_preview = "";}
}else{$cpage = 0;$t_page = "";
}
$tmpvar = str_split_unicode($tmpvar);
$t_num = sizeof($tmpvar); //判断章节被分成了几页,用来生成比例。
if($t_num >= $cpage + 2){ //组合成下一页链接$npage = $cpage + 2;$t_next = $t_url."&cpage=".$npage;
}else{$t_next = "";
}
$tmpvar = $tmpvar[$cpage]; 根据传入的参数,设置新的章节内容调用。
注意,这些代码推荐要写在定义上一页,下一页的代码后面,这样有些字段方法就可以方便去拿,不需要自己再定义,我是写在了大概835行的位置。这里我们找到一个网站,我扒了一下代码,按照他的逻辑来寻找,当然也仅供大家参考(读爱小说网https://www.duaixs.com/)很全面,还可以继续自己扩展,那个让我做的朋友也想得比较周到。现在,所有的数据都定义,并且能获取到了,怎么在前台输出呢?
第三步:通过杰奇模板引擎,生成数据调用标签,注意把原本的jieqi_content定义去掉,如果不去的话就把这里的改成其它东西。
$jieqiTpl->assign("jieqi_content", $tmpvar); //章节内容
$jieqiTpl->assign("t_next", $t_next); //下一页链接
$jieqiTpl->assign("t_preview", $t_preview); //上一页链接
$jieqiTpl->assign("t_page", $t_page); 页面比例
杰奇是不能在模板直接写php代码的,所以只能用这种方式引入,这样就可以和杰奇原本的标签一个调用格式。于是就得到了以下的调用标签。
{?$jieqi_content?}
{?$t_page?}
{?if $t_preview != ""?}<a href="{?$t_preview?}" id="t_preview">上一页</a>{?else?}<a href="{?$preview_page?}">上一章</a>{?/if?}
{?if $t_next != ""?}<a href="{?$t_next?}" id="t_next">下一页</a>{?else?}<a href="{?$next_page?}">下一章</a>{?/if?}
杰奇cms章节分页怎么实现(主要针对2.4版本)相关推荐
- php五秒盾规则之树,杰奇cms章节分页实现原理,附代码
看这个教程之前请注意哦,相关的代码调用了不少杰奇内置的方法,所以只适合杰奇的官网版本,外面其它的手机端插件之类的,倒是也可以根据我的思路自行二次开发.另外就是,原本是可以完美实现的,但是碰到了一个巨大 ...
- 杰奇是否生成html,杰奇cms章节页面报错功能实现,基本思路
这是交流群里面一个群友提出来的问题,而网上的这种功能是手机端插件自带的,并不属于杰奇官方版的插件.然后今天简单的研究了一下,发现直接使用杰奇后台收件箱的功能是可行的,所以就随手写了一些代码.这些代码我 ...
- 杰奇cms不同设备访问自动跳转自动适应
杰奇cms不同设备访问自动跳转自动适应 杰奇CMS做的小说站点由于源码出现时间较为久远,忽略了自动适配&跳转移动端这个功能,导致很多没有技术能力的小说站长损失了移动端的流量,今天给大家分享的这 ...
- ygbook和ptcms哪个好_杰奇CMS 和 PTCMS 有什么区别? 为什么很多人选择杰奇?
前言 杰奇CMS 和 PTCMS 是国内比较有名的程序,当然还有YGbook,因为使用YGbook的人并不是很多,而且YGbook的功能和PTCMS差不多,YGbook的官网貌似也关闭了,所以在这就不 ...
- ygbook和ptcms哪个好_杰奇CMS 和 PTCMS 有什么区别? 为什么很多人选择杰奇?
前言 杰奇CMS 和 PTCMS 是国内比较有名的程序,当然还有YGbook,因为使用YGbook的人并不是很多,而且YGbook的功能和PTCMS差不多,YGbook的官网貌似也关闭了,所以在这就不 ...
- [function.require]: Failed opening required 杰奇cms
在配置杰奇cms移动端的时候,出现了[function.require]: Failed opening required 不要慌,百度一下即可解决.这个就是权限问题.由于移动端要请求pc端的文件,没 ...
- 杰奇php手机登陆自动跳转,杰奇cms电脑与手机自动判断跳转代码
目前阅读小说的客户大部分都是用手机在看小说那么时间电脑手机自动跳转 . 而绝大多数小说阅读网站都是使用杰奇小说程序搭建,比如众多的笔趣阁小说. 下面就以杰奇CMS为例,分享一下实现手机访问电脑域名自动 ...
- 杰奇1.7用php53,杰奇CMS 1.7商业版注入漏洞
杰奇CMS 1.7商业版用了Zend加密,批量解密后,发现程序员用了几个函数,使得这套系统基本没了注入漏洞.在判断ip时,程序员将.过滤再判断是否是为数字,值得借鉴. [php] class crit ...
- 杰奇安装 mysql失败_关于杰奇CMS安装乱码的解决方法
最近推广学院的小说网站兴趣小组,总是有几个同学来问我,为什么安装完杰奇CMS1.70版本的系统是乱码,如下图所示: 乱码问题分析: 1.网站编码错误,可能修改文章,导致了部分文件的编码更换了 2.网站 ...
最新文章
- java反射最佳实践,java反射性能测试分析
- dubbo开发环境和生产环境搭建
- 一文看懂深度学习与计算机视觉
- php ole word,介绍 · PHPword新版开发指南 · 看云
- 真实感水面绘制-资料收集
- Linux断点方法,一种基于Linux问题断点的定位方法及系统与流程
- oracle20g,GaussDB 100 OLTP: 缩减创建数据库的20G空间需求及GS-00714
- dev gridcontrol 单箱效果
- 圆通快递单css样式
- CSS3(三)Animation 入门详解
- 智遥工作流——会签与多人审批区别
- 百度网盘解除限速的神器(二)
- 基于网易云音乐API的微信小程序——网愈芸音乐
- 保险业首季度保费收入猛增五成
- Apache的配置与应用【Apache访问控制】以及apache日志管理【日志分割、awstats日志分析】
- 密码学:c/c 语言实现 pdf,典型密码算法C语言实现pdf
- 数值计算原理及其程序实现
- androidstudio窗口不显示
- ZT 一个老业务员的自白
- 爬虫之爬取豆瓣排行榜