文档库 最新最全的文档下载
当前位置:文档库 › PHPCMS V9模型二次开发[高级]

PHPCMS V9模型二次开发[高级]

PHPCMS v9模型二次开发[高级]

概述:PHPCMS v9模型二次开发主要分为底层模型开发,即代码级的模型开发;其次,是可视化的模型开发,即通过登录系统后台添加模型。

第一种模型开发对技术要求很高,但是,能实现很多PHPCMS v9没有实现或者不能实现的功能。

第二种模型开发完全隐藏了技术的实现,操作简单,使用方便,在没有特殊功能的时候,这个是首先。

我们今天先讲第二种,可视化的模型开发。

假如,现在我们有一个产品展示功能。要显示的信息如下:

*)产品名称

*)产品价格

*)出厂时间

*)规格参数

*)配件列表

*)产品图片

然后,PHPCMS v9提供的文章模型、图片模型、下载模型根本不能满足我们的这个需求。此时,我们就会涉及到添加模型的操作。

1、登录系统后台,进入导航“内容”----》"管理模型"

然后,在页面的右边找到“添加模型”,点击进入添加模型:

模型名称必须填写,当我们在添加栏目的时候就可以选择以这个名称命名的模型了。

模型表键名也必须填写,这个将会在数据库里面有二张表对应,假设此时的表前缀是:v9_则对应的两张表名为:v9_products、v9_products_data

2、点击确定创建好自定义的“产品模型”之后,点击“字段管理”

点击“字段管理”之后,在弹出的页面里面进行字段的禁用、删除、添加等操作。

比如:添加产品名称、产品价格、产品规格、出厂时间等字段。

删除:阅读收费、允许评论、分页方式、相关文章等字段。

禁用:关键词、推荐位等字段。

删除字段与禁用字段都很方便快捷,现在来谈谈添加字段。

在点击“字段管理”进入页面后,左上角会有一个“添加字段”的功能。

点击“添加字段”进入页面。如图:

我们以添加一个是否显示产品的功能字段,那么在字段类型那里可以选择“选项”;

由于,我们会经常使用这个字段进行查询,所以,我们在“作为主表字段”设置为是;

字段名设置为isshows,这个地方的字段名对应表中的v9_products表中的字段,添加字段完成之后,可以在这个表中看得出来。当然,如果你的模型键名称不是products的话,那就不是这个表名。

字段别名,我们设置为“是否显示”,这个对应表单中的名字。以下就是我们添加之后的图例:

这个时候,在字段里面就存在了刚才我们添加的字段了。如图:

这个时候,我们自定义的模型就已经OK了。现在我们就来添加栏目。

点击导航栏的“内容”,左侧菜单选择“管理栏目”,再选择“添加栏目”,如图:

添加栏目,如图示添加内容:

点击“提交”保存栏目。

这样,我们就可以在“管理内容”页面为这个产品展示的栏目添加内容了。

自定义的产品模型也添加好了,栏目也添加好了,数据也有了。这个时候是讨论怎样在模板调用这些数据的时候了。

假如,我们在首页要调用这个栏目的数据,假定此栏目ID是13,调用数据的方法如下:

{pc:content action="lists"catid="13"num="6"}

{loop$data$r}

  • {str_cut($r[title],45,'')}
  • {/loop}

    {/pc}

    大家有没有发现,调用自定义模型的数据的方式与我们调用文章模型的数据一模一样。所以,以后调用数据的方式要与文章模型的数据调用方式等同起来,没有任何差别。

    除此之外,再强调一点,文章模型、图片模型、下载模型调用的方法都是一样的,以及后来添加的自定义模型也是一样的,都是用的pc标签里面的content模型的标签。

    关于pc标签的content模型的标签使用参照PHPCMS v9手册的标签使用一节内容。

    到此,我们的自定义模型的介绍已经完毕了。

    接下来,我们来讲一讲代码级的模型开发。

    概述:有时候,我们想调用的数据不是通过界面的形式来添加数据,或者触发添加数据的机制不是手动的,而是有特定条件。比如:在用户登录的时候自动添加数据、在每天晚上凌晨添加数据等。所以,这时候就会用到代码级的模型开发。当然,我们今天要讲的是最核心的部分,掌握这部分,以后遇到更多的关于底层数据的问题,基本上都能迎刃而解啦。

    模型最终的实现出来的也是PHP文件,就像Smarty模板引擎一样,只不过是人为地把某一类功能的集合生成的文件称之为模型而已。这些文件存放的位置在项目目录\phpcms\model下,一般情况下,数据库里面的第一个表,在此目录下对应一个PHP文件。

    如现在我们要做一个功能,在登录的时候,向v9_mylogin表写入一条登录记录数据。

    表结构如下:

    CREATE TABLE`v9_mylogin`(

    `id`int(10)unsigned NOT NULL auto_increment COMMENT'主键、自增',

    `userid`int(10)unsigned NOT NULL COMMENT'用户ID',

    `logintime`int(10)unsigned NOT NULL COMMENT'登录时间',

    PRIMARY KEY(`id`)

    )ENGINE=InnoDB DEFAULT CHARSET=utf8COMMENT='登录记录表';

    先将这个表在项目对应的数据库里面创建好。

    然后在项目目录\phpcms\model\目录下创建一个mylogin_model.class.php的文件,然后,在打开这个PHP脚本文件,写入以下代码:

    defined('IN_PHPCMS')or exit('No permission resources.');

    pc_base::load_sys_class('model','',0);

    class mylogin_model extends model{

    public function__construct(){

    $this->db_config=pc_base::load_config('database');

    $this->db_setting='default';

    $this->table_name='mylogin';

    parent::__construct();

    }

    }

    ?>

    现在我来解释一下,为什么脚本的名字为什么是mylogin_model.class.php,因为,PHPCMS v9它底层代码的文件加载机制规定了,如果表名的前缀是"v9_",那么,创建一个新表就是前缀加上表名,即得:v9_mylogin。这个时候要想对此表进行增删改查,必须在model目录下创建一个去除表前缀后得到的mylogin,再拼接上

    _model.class.php的名字的PHP脚本文件名。

    切记,如果我们创建的脚本名字是mylogin_model.class.php,那么代码里面的class类名要更改为对应的名字。如,我们这里是mylogin_model。如果是userlogin_model.class.php,那么类名应该更改为:userlogin_model。

    其次是代码里面的$this->table_name='mylogin';

    这个地方也要与去掉表前缀"v9_"之后的名字对应起来。

    这样我们的代码给模板要更改的文件就创建好了。现在我们就来操作此表。

    1)打开文件项目目录\phpcms\modules\member\index.php,打到文件里面的login方法,然后找到登录成功的代码位置,大概在673行的位置,添加如下代码:

    //通过pc_base类的load_model静态方法调用mylogin_model.class.php类文件,并生成mylogin_model类生成一个对象并返回。

    $this->mylogin_db=pc_base::load_model('mylogin_model');

    //组建登录数据。

    $data['userid']=$userid;

    $data['logintime']=time();

    //向表添加数据。

    $this->mylogin_db->insert($data);

    其他的查询、删除等方法使用请参见:

    项目目录\phpcms\libs\classes\model.class.php

    相关文档
    相关文档 最新文档