phpcms-v9二次开发所必须知道的步骤

 

一、做phpcms-v9二次开发时,我们经常需要用到如下代码,所以有必须在这里注释说明一下

 
defined('IN_PHPCMS') or exit('No permission resources.');  
//第一步:获取模型缓存路径  
define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);  
  
pc_base::load_app_func('util','content');  
class index {  
    private $db;  
    function __construct() {  
        //第二步:获取与数据库相关的配置信息,如:数据表前缀、数据库名、数据库用户名、数据库密码、数据库编码、数据库类型  
        $this->db = pc_base::load_model('content_model');  
  
        $this->_userid = param::get_cookie('_userid');  
        $this->_username = param::get_cookie('_username');  
        $this->_groupid = param::get_cookie('_groupid');  
    }  
    //首页  
    public function init() {  
        if(isset($_GET['siteid'])) {  
            $siteid = intval($_GET['siteid']);  
        } else {  
            $siteid = 1;//模型情况下siteid为1  
        }  
        $siteid = $GLOBALS['siteid'] = max($siteid,1);  
        define('SITEID', $siteid);  
        $_userid = $this->_userid;  
        $_username = $this->_username;  
        $_groupid = $this->_groupid;  
        //SEO  
        $SEO = seo($siteid);  
        $sitelist  = getcache('sitelist','commons');  
        $default_style = $sitelist[$siteid]['default_style'];  
        $CATEGORYS = getcache('category_content_'.$siteid,'commons');  
        include template('content','index',$default_style);  
    }  
    //内容页  
    public function show() {  
        $catid = intval($_GET['catid']);  
        $id = intval($_GET['id']);  
  
        if(!$catid || !$id) showmessage(L('information_does_not_exist'),'blank');  
        $_userid = $this->_userid;  
        $_username = $this->_username;  
        $_groupid = $this->_groupid;  
  
        $page = intval($_GET['page']);  
        $page = max($page,1);  
  
        $siteids = getcache('category_content','commons');//获取各栏目所对应的站点id  
  
        $siteid = $siteids[$catid];//获取当前栏目所对应的站点id  
  
        $CATEGORYS = getcache('category_content_'.$siteid,'commons');//获取当前站点下所有栏目的配置信息  
          
        if(!isset($CATEGORYS[$catid]) || $CATEGORYS[$catid]['type']!=0) showmessage(L('information_does_not_exist'),'blank');  
  
        $this->category = $CAT = $CATEGORYS[$catid];//获取当前站点下当前栏目的配置信息  
  
        $this->category_setting = $CAT['setting'] = string2array($this->category['setting']);  
  
        $siteid = $GLOBALS['siteid'] = $CAT['siteid'];//获取当前站点下当前栏目所对应的站点id值  
          
        $MODEL = getcache('model','commons');//获取各个模型的配置信息  
  
        $modelid = $CAT['modelid'];//获取当前站点下当前栏目所属的模型id,找到了模型,也就找到了要查询的模型表(数据表)  
  
        //设置模型表:通过缓存文件获取modelid,然后再通过模型modelid获取对应的模型表及对应的模型附表  
        $tablename = $this->db->table_name = $this->db->db_tablepre.$MODEL[$modelid]['tablename'];  
  
        //设置模型附表  
        $r = $this->db->get_one(array('id'=>$id));  
  
        if(!$r || $r['status'] != 99) showmessage(L('info_does_not_exists'),'blank');  
  
        //下面代码获取的是当前模型附表中数据  
        $this->db->table_name = $tablename.'_data';  
  
        //下面代码获取的是当前模型附表中数据  
        $r2 = $this->db->get_one(array('id'=>$id));  
  
        //将模型表数据和模型附表中数据合并在一起  
        $rs = $r2 ? array_merge($r,$r2) : $r;  
  
        //再次重新赋值,以数据库为准  
        $catid = $CATEGORYS[$r['catid']]['catid'];  
        $modelid = $CATEGORYS[$catid]['modelid'];  
          
        require_once CACHE_MODEL_PATH.'content_output.class.php';  
        $content_output = new content_output($modelid,$catid,$CATEGORYS);  
          
        //将查询出来的数据经模型处理函数处理后放入$data数据中  
        $data = $content_output->get($rs);  
  
        //注意:这行代码非常之重要,主要用来将数组中各个元素转化为变量,数据元素的键名为变量名,数据元素的值为变量值  
        extract($data); 
原文地址:https://www.cnblogs.com/sunscheung/p/4738600.html