咨询电话:15632335515
当前位置: 主页 > 建站教程 >

实现PHPCMS多站点共用一套模型已解决_网站建设_青锋建站

发布时间:2018-12-31 19:41:29 作者:青锋建站

PHPCMS实现多站点共用一套模型的思路分析

  原来默认的phpcms需要对每个站点单创建栏目模型,但是我们经常用到的模型也就几种。如果新建站一个站点还要再创建一个模型的话,不仅重复了工作量而且还让模型字段占用过多的数据库。当模型较多时,调用模型字段将便查询的时间变长,降低了效率。
  青锋建站给大家想出的一个解决方法是让网站的超级管理员对模型进行分发,实现多个站点共享一个模型,而不是让每个站点管理员重新创建模型。当然这是集中管理的理念,主要应用于网络公司给客户做网站时可以提供效率,如果是个人站长做站群的话,更是非常合适。
  青锋建站实现PHPCMS多站点共用一套模型的工作过程是:首先对管理员模型进行改进,管理员可以创建共享模型和自主模型。自主模型单独创建数据表和模型字段,而共享模型只创建站点与模型对应关系、模型字段而不创建数据表。在进行模型分发时,将创建新的站点与模型对应关系、和站点数据表,不再创建模型字段,实现多个站点共享模型。而子站点管理员对共享模型没有修改,编辑的权重,只有管理员拥有。青锋建站的PHPCMS多站点共用一套模型理念主要侧重集中管理,在灵活性上不如系统默认的理念,主要是用于服务商,因为客户一般没有技术水平进行后台高级管理,这些工作落在了服务商,因此集中管理将大大节省服务商管理网站的时间,提升了效率。
  当然目前只是思路分析,实现上需要有一定的PHP基础,请大家关注青锋建站熊掌号,我们将近期发布PHPCMS实现多站点共用一套模型相关功能代码,以下是实现过程中的细节分析。

PHPCMS实现多站点共用一套模型的细节分析

  我们对原有的phpcms系统进行修改前需要对原来的系统有充分的了解,入口点当然是模型的业务逻辑和实现的脚本函数。首先要分析v9_model、v9_model_field、v9_type这几个数据表,然后分析sitemodel.php、sitemodel_model.class.php、type_model.class.php、model.sql这几个脚本以及模型操作的具体流程。
  根据脚本的功能函数并结合数据表了解功能实现的具体过程,首先查看sitemodel.php中相关模型增加的功能函数,我们实现的方法也主要围绕这个函数来进行。
public function add()
    {
        if(isset($_POST['dosubmit']))
        {
            //往v9_model数据表中添加数据:添加数据模型表单项:数据表名称,模型名称,描述,使用的模型等信息;
            $_POST['info']['siteid'] = $this->siteid;
            $_POST['info']['category_template'] = $_POST['setting']['category_template'];
            $_POST['info']['list_template'] = $_POST['setting']['list_template'];
            $_POST['info']['show_template'] = $_POST['setting']['show_template'];
            if (isset($_POST['other']) && $_POST['other']) {
                $_POST['info']['admin_list_template'] = $_POST['setting']['admin_list_template'];
                $_POST['info']['member_add_template'] = $_POST['setting']['member_add_template'];
                $_POST['info']['member_list_template'] = $_POST['setting']['member_list_template'];
            } else {
                unset($_POST['setting']['admin_list_template'], $_POST['setting']['member_add_template'], $_POST['setting']['member_list_template']);
            }
            $modelid = $this->db->insert($_POST['info'],1);
            //创建当前站点模型的数据表,并往v9_model_field插入当前模型的字段并更新缓存;
            $model_sql = file_get_contents(MODEL_PATH.'model.sql');
            $tablepre = $this->db->db_tablepre;
            $tablename = $_POST['info']['tablename'];
            $model_sql = str_replace('$basic_table', $tablepre.$tablename, $model_sql);
            $model_sql = str_replace('$table_data',$tablepre.$tablename.'_data', $model_sql);
            $model_sql = str_replace('$table_model_field',$tablepre.'model_field', $model_sql);
            $model_sql = str_replace('$modelid',$modelid,$model_sql);
            $model_sql = str_replace('$siteid',$this->siteid,$model_sql);
            $this->db->sql_execute($model_sql);
            $this->cache_field($modelid);
            添加v9_type表的数据,并更新缓存。
            $this->type_db = pc_base::load_model('type_model');
            $this->type_db->insert(array('name'=>$_POST['info']['name'],'module'=>'search','modelid'=>$modelid,'siteid'=>$this->siteid));
            $cache_api = pc_base::load_app_class('cache_api','admin');
            $cache_api->cache('type');
            $cache_api->search_type();
            showmessage(L('add_success'), '', '', 'add');
        }
        else
        {
            pc_base::load_sys_class('form','',0);
            $show_header = $show_validator = '';
            $style_list = template_list($this->siteid, 0);
            foreach ($style_list as $k=>$v) {
                $style_list[$v['dirname']] = $v['name'] ? $v['name'] : $v['dirname'];
                unset($style_list[$k]);
            }
            $admin_list_template = $this->admin_list_template('content_list', 'name="setting[admin_list_template]"');
            include $this->admin_tpl('sitemodel_add');
        }
    }
phpcms模型增加的几个过程:
1、往v9_model数据表中添加数据:添加数据模型表单项:数据表名称,模型名称,描述,使用的模型等信息;
2、创建当前站点模型的数据表,并往v9_model_field插入当前模型的字段并更新缓存;
3、添加v9_type表的数据,并更新缓存。
通过修改这几个表和脚本就可以实现phpcms多个站点共享一套模型,相信大家一看就明白了,如果是新手还是期待青锋建站的代码打包吧。最新怎么实现phpcms多个站点共享一套模型的插件已经完成,请到青锋建站-“PHP源码”栏目前去下载。
分享到:

相关文章MORE

  • phpcms站群布署多站点集中管理方案_网站建设_青锋建站
  • phpcms数据表结构与数据表字段含义_网站建设_青锋建站
  • phpcms程序目录与网站根目录分离_网站建设_青锋建站
  • phpcms如何实现同时调用主页栏目页内容页标题_青锋建站
  • 如何在phpcms模板中直接使用php代码_网站建设_青锋建站
  • 最新发布MORE

  • 实现PHPCMS多站点共用一套模型已解决_网站建设_青锋建站
  • phpcms站群布署多站点集中管理方案_网站建设_青锋建站
  • PHP中require与include语言结构使用详解_网站建设_青锋建站
  • 提高织梦安全的一些解决办法_网站建设教程_青锋建站
  • phpcms数据表结构与数据表字段含义_网站建设_青锋建站
  • 网站建设   石家庄网络公司   网站建设教程   网络营销技巧   石家庄SEO   建站分站   PHP源码   网站案例   建站新闻   青锋工作室
  • 联系电话:15632335515   QQ:943703539
  • 联系地址:石家庄高新区汾河道69号
  • Copyright © 2016-2026 青锋建站 版权所有
  • 15632335515