11月29, 2014

凤凰小贷网站项目总结

凤凰小贷网站项目是一个用onethink内容管理系统制作的小型企业网站,没有什么很特别的要求,就是一个简单的企业网站,很多细节方面还是需要注意下.

(1).但是由于自己没有使用过thinkphp开发过相关的网站,在自己接触这个项目的时候,还是遇到了不少的问题,通过制作这个网站,也让自己更加熟悉了onethink文件的相关目录,以及如何来规范网站的相关文件,方便后期的维护和修改.

(2).下面来梳理下制作过程中相关的步骤和思路过程.首相拿到网站的模版文件之后,放入到相关的项目文件目录下面.然后修改相关的配置文件.观察静态页面的相关代码结构,进行相关的文件分离,然后使用模版继续,在配置文件中使用自己定义的模版主题.

(3).在后台建立相关的栏目导航,然后在对应的控制器中写相关的方法来读取对应栏目的数据显示在页面上面,最后在模版中循环显示出来.首相遇到的问题是,当导航栏目下面有对应的子栏目的时候,我们点击导航栏目,要对应的进入显示第一个子栏目的内容.这时候,我们就需要观察模版页面,页面需要什么,我们就查询出需要的内容即可.点击导航和点击左侧对应的子栏目执行控制器中不同的方法.

(4).在该网站中,点击对应的导航栏目,左侧需要显示当前栏目下面的子分类.这个地方是每个有子栏目的地方都有这个需求,这个公共的部分我们可以写在HomeController.class.php的初始化方法_initialize()中.通过标识符来查找当前的栏目名称,通过cat_id来查找当前栏目下面的子分类,写了一个findPid的方法:

//显示当前栏目下面的子分类
$this->son_cat = D('category')->findPid($cat['id']);
findPid()函数在CategoryModel.class.php中,函数如下:
/*
    获取父栏目下面子分类
*/
    public function findPid($id) {

        $map['pid']=$id ;
        $pid = M('category')->field('pid')->where($map)->find();
        $son_cat = $this->getTree($pid['pid']);    
           return $son_cat['_'];

    }
(onethink系统中有getTree函数,所以可以这么直接调用.)

(5).在个值得一提的是相关的分页功能的实现.需要引入分页类,然后可以自己定义相关的配置来更改系统默认的配置项.同事写了一个list()方法,直接获取到对应栏目的新闻列表项目,然后定义了一个二维数组返回出来,正好也把分页功能给带上了.(同样,这个函数也是写在CategoryModel.class.php中的.)代码如下: 最顶部还需要加上这句:use Think\Page;

/*
  获取栏目文章列表
*/
public function lists($cat = null){
    if($cat == null )return false;
    //新闻列表以及分页数据的读取调用.
        import(“ORG.Util.Page”);//导入分页类
        $map['category_id'] = $cat['id'];
        $map['status'] = 1;
        $count = M('Document')->where($map)->count();
        $nowPage = isset($_GET['p'])?$_GET['p']:1;          
        $Page = new Page($count,10);;
        $Page->setConfig('prev','<<上一页');
        $Page->setConfig('next','下一页>>');
        $show = $Page->show(); 
        $db = new Model();
        $res['data'] = $db->table(''.C('DB_PREFIX').'document as a ,'.C('DB_PREFIX').'document_article as b')
                ->field('a.id,a.title,b.content,a.create_time')
                ->where('a.id = b.id and a.category_id = '.$cat['id'].' and a.status = 1')
                ->order(array('a.create_time'=>'desc'))
                ->limit($Page->firstRow.','.$Page->listRows)->select();
        $res['page'] = $Page->show();
        return $res;
  }

(6).下面就是内页栏目图片的读取,和新闻详细页面中文章上一篇,下一篇的读取调用了.栏目图片是关联onethink_category表中的icon字段和onethink_picture表中的id字段对应起来联查即可.,上一篇,下一篇直接调用系统默认的prev,next函数就看,(传递当前文章的一个一维数组信息.)

(7)最后一个纠结时间比较长的问题是当前导航栏目高亮显示和留言板模版的ajax提交弹出层,这两个问题当时尝试过几种解决方法,但是都没有达到理想的效果.最后在同事的帮助下帮忙搞定了.当前导航栏目高亮是通过当前页面的控制器来在模版中进行判断然后添加class的.而后面的留言板ajax提交成功弹出层效果却一直没弄好.首先在验证成功要提交的方法中return false;阻止表单提交跳转.主要原因是表单的前端验证使用了验证插件jQuery formValidator.js插件. 判断了onerror:function() {}的情况,最后的ajax提交判断应该写在onsuccess:function() {}方法中才行,根据后台返回的信息在前端用js判断,如果提交成功则弹出提示层,点击确定关闭弹出层,然后刷新当前页面,这个地方的ajax没有搞定主要是一个思路问题,第一个是表单提交没有返回false,第二个是ajax没有写在验证成功后的方法里面.

(8)可以借鉴同事的调试方式,自定义一个打印函数p,然后在系统中引入,学会打印sql语句来排查错误,有时候不太确定的sql语句,可以现在navicat中运行下,看下能否查询到想要的结果,然后对比数据库中的表来进行查看.有时候程序最重要的还是一个思路问题.

本文链接:https://901web.com/post/凤凰小贷网站项目总结.html

-- EOF --

Comments

请在后台配置评论类型和相关的值。