| 收藏本站 | 关于我们
首页 免费模板 收费模板 部分案例 分类模板 地方门户 二次修改 服务定制 酷站欣赏 设计学院 特效代码 字体下载
当前位置:首页 >> 二次修改
齐博分类系统程序进行二次开发的个人心得
发布时间:2012-06-16 10:47:48
标签Tags:二次开发 分类
原创作者:lylboy

一、齐博分类程序执行过程
    首页执行过程:
    1,想写写首页的执行过程,于是刚刚回过头去看了一下index.php的程序,可从上看到下觉得没有什么值得写的,因为所有过程基本都有注释,一看就懂了。那就写重要一点的吧,首页里一开始判断安装状态之后包含进的:global.php是核心加载程序;里面有两句:
    require_once(Mpath."../inc/common.inc.php");
    require_once(ROOT_PATH."data/all_fid.php");   
       第一个common,顾名思义,包含进来的是一般的全站执行程序。比如php版本的判断并据此进行$_POST/$_GET传值处理。另外一个重要的就是156行:list($usr_sid,$usr_oltime,$usr_lastvist,$usr_lasturl)=explode("\t",get_cookie('USR'));每次通过取用户cookies判断登录状态(齐博不用session判断用户登录,这样可以减轻服务器的压力)。
    第二个all_fid.php页面就是重要的数据源了,齐博后台管理分类,栏目,模型等最后都会生成php数据文件,存放在data文件夹里面。其中all_fid.php就是一个栏目数组值。在首页模板htm页面里会对all_fid.php进行循环输出,也就是首页上显示的各栏目,当然输出时会根据用户配置前后的栏目排序(存放在config.php里的$webdb[sort_layout]值)进行顺序输出,首页就这么结束了。
    其它的比如最上面的登录模块,右边的焦点信息/热点信息等都是通过JS加载执行,比如登录模块,通过job.php最终加载 template\default\login_tpl 下面的0.html进行输入判断,要更改登录样式就到这里改了。
    最新信息同样是通过job.php来转到最终的页面,最新信息时发送变量$job='allnewinfo';最后加载到f/inc/job/allnewinfo.php");里面$rows,$leng=30分别是输出最新信息的行数和每个标题的字符长度,所以如果要在其它页面加载最新信息,只需要包含这个文件路径,并加载前定义你要加载的行数和标题长度即可。要修改显示的最新信息那就修改文件里$show变量自增加的那句代码里的html代码了。热门信息也一样,也是在这个文件夹下的hotinfo.php.其它类似
    就写这么点吧,接触一个新程序进行二次开发也是一件很痛苦的事情,希望能对各位有所帮助。经验其实也很简单,对高人而言也就是一些皮毛而已。

 

=============================================

 

   列表页执行过程
   
    列表页开始加载的一大堆程序和index.php一样,之后有以下几个重要部分。
    1,第56行代码//字段筛选,循环读取$field_db对该模型下的字段[listfilter](是否应用筛选)判断然后加进$TempSearch_array数组;同时通过此句//$search_fieldDB[$key][$$key!=''?$$key:0]=" selected class='ck' style='color:red;'";对每一个筛选项的当前选定值应用样式以突出当前所选项,要改当前选中的样式的就在这里改代码了。这里的列表指的就是小栏目的内容列表,大分类下的小分类列表就不列了,这个页我觉得一般不需要用。减少内容的层次,使得内容扁平化用户更能理解。
    2,不知道多少行的function ListThisSort()函数,这是本页的核心了,就是对SQL语句进行组装,查询并对取得的数据一一做处理,比如对发布时间进行处理等,很简单。不过要增加价格筛选机制就必须修改这里的SQL语句组成部分。
    3,完成以上两步之后就包含进入生成的模板list_X.html,里面就是各项需要筛选的字段连续输出,我一直不喜欢齐博的这个list_X.html文件,冗余代码太多。
    好像也就这么多,因为感觉不到有什么可写的。不过改分类系统的时候要注意的一项是齐博的缓存,这里就要注意list.php靠后面的require(foot)这句代码,如果直接去掉了这行,没开启缓存不会有什么问题,如果你到全局变量设置里把首页和列表页的缓存打开了,就有问题了。因此我在另一回复中提到过建议不要直接删除这句require语句,要注释就注释最终执行require(html(foot));那句。

 

===============================================

 

    今天来写一个内容页执行的过程,首先加载一个f/global.php,就不再多说了,前面的都一样,执行的过程很简单,全页最重要的也就是50几行执行查询将本页的内容全部取出,之后就是对取出的数组数据进行分别处理。
    在这里分享一个前两天我突然发现缓存里有一个label_index的缓存文件夹,以前没注意,可一进去发现这些生成的文件全都是着我打开页面时加载的,因为我将齐博的分类程序改版之后在模板里再也没有src之类的可生存缓存的文件,当时就在想是哪个地方,经过排查就在bencandy.php的180来行吧,有一行:require(ROOT_PATH."inc/label_module.php");反正后面又调用了一大堆程序来生成标签缓存,在index.php和list.php里面同样都有这样一行代码,所以如果大家不需要标签缓存的都可将这行代码去掉,它影响的是搜索框下面的:热门搜索标签。
    在对输出结果的处理上,页面140来行的时候,有一句对$rsdb[mobphone]的处理,从里面大家可以看到齐博的分类程序只是简单对电话号码进行了base64_encode加密处理,因为齐博本身就开源吧,所以也没有将这个地方做得很复杂,这样的网站前台通过采集就可以将电话号码采走,达不到将电话制作成图片防止采集的目的了。其它那些制成图片的信息也都一样。
    在这里再分享一个对内容页的导航的处理,因为我改动这后不再对大栏目进行列表,因此内容页中的大栏目的链接就没有链接去路,必须把这个链接去掉,在这里分享这些导航的链接生成,调用的地是f/inc/function.php里面的504行,function get_guide函数,可以对$show变量进行控制来达到对链接的处理。
    完成这些处理之后,页面就去寻找template/风格/下面的bencandyX.html模板页面了,X就是这块内容使用的模型的ID值。
    在这里再分享一下齐博生成模板的过程,总共四种页面list.html/bencandy.htm/post.html/search.htm四个页面的模板分别是list_0.html/bencandy_0.html,大家可以去看,如果某个风格里有此文件,则即是此模板,如果没有则在template/default/里面。在后台执行模型修改或者生成时最后会调用f/inc/下面的module.class.tpl.php和module.class.php两个核心文件,module.class.tpl.php里即是对各种模板的生成,可以看到齐博在例如list_0.htm页面里已经准备好了,例如这样一对<!-{template}->(.*?),然后通过正则取出这段,并循环这段再其替换生成list_X.htm,从而实现每个栏目调用不同的各自的内容。

 

点击率:9262
相关文章
网页特效代码
 服务流程 | 积分说明 | 使用说明 | 粤ICP备17004399号 电视直播 | QQ头像获取