phpcms.php

<?php
//============================================================
//------------------------加载类与函数-----------------------
// 所有带有 pc_base:: 都是 phpcms/base.php 中声明的方法
// 加载系统类
pc_base::load_sys_class('类名','扩展地址',1);//1代表调用时实例化对象
// 加载模块类
pc_base::load_app_class('类名','模块名',1);
// 例:
$hello = pc_base::load_sys_class('hello');
$hello->nihao();
	
pc_base::load_sys_func('函数库名');			//加载系统函数
pc_base::load_app_func( '函数库名', '模型名');//加载模块函数
// 例:
pc_base::load_app_func('hello');//本模块下模块名不用写
// modules/goodstuff/functions/hello.func.php 	hello函数库
hehe();//调用hello函数库下的hehe()方法
//------------------------------------------------------------
//----------------------加载配置文件-------------------------
/**
 * 加载配置文件
 * @param string $file 配置文件
 * @param string $key  要获取的配置荐
 * @param string $default  默认配置。当获取配置项目失败时该值发生作用。
 * @param boolean $reload 强制重新加载。
 */
pc_base::load_config($file, $key = '', $default = '', $reload = false) ;
//------------------------------------------------------------
//------------------------加载模型----------------------------
pc_base::load_model($classname);//参数:类名
//============================================================
//----------------------model类中常用方法--------------------
phpcms/libs/classes/model.class.php
/**
* 执行sql查询
* @param $where 查询条件[例`name`='$name']
* @param $data 需要查询的字段值[例`name`,`gender`,`birthday`]
* @param $limit 返回结果范围[例:10或10,10 默认为空]
* @param $order 排序方式	[默认按数据库默认方式排序]
* @param $group 分组方式	[默认为空]
* @param $key 返回数组按键名排序
* @return array	 查询结果集数组
*/
select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')
/**
* 查询多条数据并分页
* @param $where
* @param $order
* @param $page
* @param $pagesize
* @return unknown_type
*/
listinfo($where = '', $order = '', $page = 1, $pagesize = 20, $key='', $setpages = 10,$urlrule = '',$array = array())
/**
* 获取单条记录查询
* @param $where 查询条件
* @param $data 需要查询的字段值[例`name`,`gender`,`birthday`]
* @param $order 排序方式	[默认按数据库默认方式排序]
* @param $group 分组方式	[默认为空]
* @return array/null	数据查询结果集,如果不存在,则返回空
*/
get_one($where = '', $data = '*', $order = '', $group = '')
/**
* 直接执行sql查询
* @param $sql	 查询sql语句
* @return	boolean/query resource	 如果为查询语句,返回资源句柄,否则返回true/false
*/
 query($sql)
/**
* 执行添加记录操作
* @param $data 要增加的数据,参数为数组。数组key为字段值,数组值为数据取值
* @param $return_insert_id 是否返回新建ID号
* @param $replace 是否采用 replace into的方式添加数据
* @return boolean
*/
insert($data, $return_insert_id = false, $replace = false)
/**
* 获取最后一次添加记录的主键号
* @return int 
*/
insert_id()
/**
* 执行更新记录操作
* @param $data 要更新的数据内容,参数可以为数组也可以为字符串,建议数组。
*	为数组时数组key为字段值,数组值为数据取值
*	为字符串时[例:`name`='phpcms',`hits`=`hits`+1]。
*	为数组时[例: array('name'=>'phpcms','password'=>'123456')]
*	数组的另一种使用array('name'=>'+=1', 'base'=>'-=1');程序会自动解析为`name` = `name` + 1, `base` = `base` - 1
* @param $where 更新数据时的条件,可为数组或字符串
* @return boolean
*/
update($data, $where = '')
/**
* 执行删除记录操作
* @param $where 删除数据条件,不允许为空。
* @return boolean
*/
delete($where)
/**
* 计算记录数
* @param string/array $where 查询条件
*/
count($where = '')
// 获取最后数据库操作影响到的条数
affected_rows()
// 获取数据表主键
get_primary()
// 获取表字段
get_fields($table_name = '')
// 检查表是否存在
table_exists($table)
// 检查字段是否存在
field_exists($field)
//------------------------------------------------------------
//-------------------------编辑器类--------------------------
// 在 phpcms/libs/classes/form.class.php
// 需要编辑器调用此类中的方法即可

// 在模板中显示日期选框
<?php form::date('表单名',$start_atime);?>
// 表单名用于区别
// $start_atime 表单的实际名称
/* Array
(
    [start_atime] => 2015-05-10
) */
// form类中还有其他常用表单方法,详见form类。
//------------------------------------------------------------
//----------------------查询数据并分页-----------------------
public function init(){
	//查询数据并分页
	$page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;
	$infos = $this->db->listinfo('','',$page,'5');
	$pages = $this->db->pages;
	
	// 添加按钮
	$menu_name = '添加';
	$show_validator = $show_scroll = true;
	$big_menu = array(
		'javascript:window.top.art.dialog({
			id:\'add\',
			iframe:\'?m=goodstuff&c=goodstuff_admin&a=add\', 
			title:\''.$menu_name.'\', 
			width:\'700\', 
			height:\'450\'
		},
		function(){
			var d = window.top.art.dialog({id:\'add\'}).data.iframe;
			var form = d.document.getElementById(\'dosubmit\');
			form.click();
			return false;
		}, 
		function(){window.top.art.dialog({id:\'add\'}).close()});
		void(0);',
		$menu_name
	);
	
	include $this->admin_tpl('goodstuff_list');
}
//------------------------------------------------------------
//---------------------添加数据实例--------------------------
// 添加
public function add(){
	if(isset($_POST['dosubmit'])){
		$this->db->insert($_POST['goodstuff']);//添加数据
		//更新附件状态
		if(pc_base::load_config('system','attachment_stat') & $_POST['goodstuff']['img']) {
			$this->attachment_db = pc_base::load_model('attachment_model');
			$this->attachment_db->api_update($_POST['goodstuff']['img'],'goodstuff-'.$id,1);
		}
		showmessage(L('operation_success'),HTTP_REFERER,'', 'add');
	}else{
		$show_validator = $show_scroll = $show_header = true;//开启验证
		pc_base::load_sys_class('form','',0);
		include $this->admin_tpl('goodstuff_add');
	}
}
//------------------------------------------------------------
//----------------------更新数据实例-------------------------
// 更新
public function edit(){
	if(isset($_POST['dosubmit'])){
		$this->db->update($_POST['goodstuff'],array('id'=>$_GET['id']));
		//更新附件状态
		if(pc_base::load_config('system','attachment_stat') & $_POST['goodstuff']['img']) {
			$this->attachment_db = pc_base::load_model('attachment_model');
			$this->attachment_db->api_update($_POST['goodstuff']['img'],'goodstuff-'.$_GET['id'],1);
		}
		showmessage(L('operation_success'),'?m=goodstuff&c=goodstuff_admin&a=edit','', 'edit');
	}else{
		$show_validator = $show_scroll = $show_header = true;//表单验证
		pc_base::load_sys_class('form', '', 0);
		//查出链接内容
		$info = $this->db->get_one(array('id'=>$_GET['id']));//获取要修改的记录
		extract($info);//将数组转为变量
		
		include $this->admin_tpl('goodstuff_edit');
	}
}
//------------------------------------------------------------
//-----------------------删除信息-----------------------------
public function del(){
	// 批量删除数据
	if(is_array($_POST['id'])){
		for ($i = 0; $i < count($_POST['id']); $i++){
			$this->db->delete(array('id'=>$_POST['id'][$i]));
			// 更新附件状态
			if(pc_base::load_config('system','attachment_stat')) {
				$this->attachment_db = pc_base::load_model('attachment_model');
				$this->attachment_db->api_delete('goodstuff-'.$_POST['id'][$i]);
			}
		}
		showmessage(L('operation_success'),'?m=goodstuff&c=goodstuff_admin');
	}else{
		$id = intval($_GET['id']);
		if($id < 1) return false;
		// 删除友情链接
		$result = $this->db->delete(array('id'=>$id));
		// 更新附件状态
		if(pc_base::load_config('system','attachment_stat')) {
			$this->attachment_db = pc_base::load_model('attachment_model');
			$this->attachment_db->api_delete('goodstuff-'.$id);
		}
		if($result){
			showmessage(L('operation_success'),'?m=goodstuff&c=goodstuff_admin');
		}else {
			showmessage(L("operation_failure"),'?m=goodstuff&c=goodstuff_admin');
		}
	}
	showmessage(L('operation_success'), HTTP_REFERER);
}
//------------------------------------------------------------
//------------------------跳转提示信息-----------------------
//添加后跳转到之前页面
showmessage(L('operation_success'),HTTP_REFERER,'', 'add');
//更新后跳转到之前页面
showmessage(L('operation_success'),'?m=link&c=link&a=edit','', 'edit');
//============================================================
//--------------------------内置函数--------------------------
subcat(1)				//传入父id获取子id
str_cut($string,5,'...');	//截取汉字
//============================================================
//-------------------------语言包-----------------------------
// 设置语言包:

// 目录在 phpcms/languages
// 如goodstuff模块
在 languages/en 和 languages/zh-cn 两个目录下分别建立goodstuff.lang.php文件
在en目录下的 goodstuff.lang.php 写:
	$LANG['list'] = 'list';//英文
在zh-cn目录下的 goodstuff.lang.php 写:
	$LANG['list'] = '列表';//中文

// 使用语言包

在后台的模板中输出对应的变量即可<?php echo L('list');?>
L() 函数在global.func.php 函数包中,有详细解释。

//===============程序更新覆盖源文件解决方法=================
//------------------------------------------------------------
/* 为了防止程序更新覆盖原来的文件,phpcms框架提供了解决方案
在添加功能时不要去改原文件,而是在当前模块下新建一个
 my_xxx.php的文件,此处的xxx为原来要修改的文件。用my_xxx.php
文件去继承xxx.php 文件。(my_xxx格式为系统支持的写法) */

// 在 my_xxx.php 文件中:
<?php
class my_xxx extends xxx{
	function __construct(){
		parent::__construct();
		$this->db2 = pc_base::load_model('goodstuff_model');//同样可以操作其他表
	}
	public function hello(){
		// 连接数据库什么的都可以
		$data = $this->db->select();
		$data2 = $this->db2->select();
		print_r($data);
		print_r($data2);
	}
}
// 调用时使用的控制器名仍然为 xxx 而不是 my_xxx

//============================================================
//-------------------三级菜单按钮显示方法--------------------
/* 在编辑三级菜单下面的超链接是,点击超链接是三级菜单
按钮(就是小的蓝色按钮会不显示),解决方法是在连接后面添加
menuid=<?php echo $_GET['menuid'];?> 就是menuid值,即可解决。
 */
<a href="?m=bigdata&c=bigdata&a=ga&menuid=<?php echo $_GET['menuid'];?>"> 比例图</a>
// 表单使用这个
<input type="hidden" value="<?php echo $_GET['menuid']?>" name="menuid">
//=========================SEO设置============================
//------------------------------------------------------------
// 设置>站点管理>修改>seo配置

//============================================================
//------------------------------------------------------------


安装程序.php

<?php
//=========================安装程序===========================
//------------------------------------------------------------
/*  
install
┝ languages			前台语言文件夹
┝ templates			前台模板文件夹
┝ config.inc.php		配置文件,也是安装时提示的信息
┝ extention.inc.php	在后台添加菜单的程序
┝ bigdata.sql			要导入的数据表
┝ model.php			要导入的数据库名,如bigdata.sql 文件
┕ module.sql			在module表中添加此模块信息
uninstall
┝ bigdata.sql			要删除的数据表,里面是删除该表的sql语句,DROP TABLE IF EXISTS `phpcms_bigdata`;
┝ extention.inc.php	删除其他表中关于此模块的信息,等一些清理的操作,如果删除失败return false;
┕ model.php			返回要删除的数据库文件,就是bigdata.sql文件,有多个则返回多个。
*/


// 安装与卸载程序位置 \phpcms\module\admin\classes\module_api.class.php

//-----------------------语言包目录--------------------------
//------------------------------------------------------------
/* 
┝ languages
	┝ zh-cn				中文语言包
		┝ bigdata.lang.php		语言包,键值对数组
*/
//----------------------sql文件书写规则----------------------
//------------------------------------------------------------
/* 
数据表命名规则:phpcms_模块名;

删除同名数据表
DROP TABLE IF EXISTS `phpcms_bigdata`;

CREATE TABLE IF NOT EXISTS `phpcms_bigdata` (
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=67 ;

插入初始数据
INSERT INTO `phpcms_bigdata` VALUES(30, '223.67.235.28', '中国', 'CN', '华东', 300000, '江苏省', 320000, '连云港市', 320700, '', '-1', '移动', 100025, 1430983710);
 */
//--------------------extention.inc.php作用-------------------
//------------------------------------------------------------
// 此文件是在后台添加菜单的程序
// 其中数组的结构为menu表的结构
// parentid 这是父级菜单的id
/* 	注意:数组中的m为模块名,卸载查询时,是根据"m"这个模块名来删除菜单的,
所以在安装程序中的m(模块名)的值填写错误可能会导致菜单删除不了。*/

defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
// 第二极菜单
$parentid = $menu_db->insert(array('name'=>'dataTool', 'parentid'=>2, 'm'=>'bigdata', 'c'=>'bigdata', 'a'=>'init', 'data'=>'', 'listorder'=>0, 'display'=>'1'), true);
// 第三级菜单
$parentid = $menu_db->insert(array('name'=>'dataList','parentid'=>$parentid, 'm'=>'bigdata', 'c'=>'bigdata', 'a'=>'init', 'data'=>'', 'listorder'=>0, 'display'=>'1'), true);
// 第四级菜单
$menu_db->insert(array('name'=>'ga', 'parentid'=>$parentid, 'm'=>'bigdata', 'c'=>'bigdata', 'a'=>'ga', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
// 这个数组就是每个菜单对应的英文名称
$language = array('dataTool'=>'数据管理','dataList'=>'数据列表','ga'=>'统计图');

//------------------------------------------------------------
//------------------------------------------------------------


创建模块.php

<?php
//============================================================
//-----------------------创建模块----------------------------
// 1.在 phpcms/modules 下新建一个文件夹(文件夹即为模块)
// 2.在文件夹中创建如下文件及文件夹:
	/* 
	|-classes	(dir)
	|-functions	(dir)
	|-templates	(dir)
	|-hello_admin.php	(file)
	*/
// 3.在数据库module表中添加相应记录(可以在后台的 模块>模块管理 中看到)。
// 4.在后台 扩展>菜单管理>添加菜单 中添加相应的菜单,(可使新模块在后台可见)。
	/* 
	模块名:此模块的名
	文件名:要运行的文件名(无后缀)
	方法名:init
	*/
//------------------------------------------------------------
//============================================================



控制器.php

<?php
//========================控制器==============================
//-----------------------后台控制器--------------------------
// goodstuff_admin.php
// 后台控制器的方法名不要与admin类中的方法名相同,
// 后台控制控制器,需加载并继承admin模块下的admin类,
// admin.class.php 中有很多方法。
// 控制器类默认继承系统的函数库,即系统函数直接调用

defined('IN_PHPCMS') or exit('没有此文件');
pc_base::load_app_class('admin','admin',0);//load_app_class('类名','模块名',0);//0表示加载后不创建对象
class goodstuff_admin extends admin{
	public function __construct(){
		parent::__construct();
	}
	public function init(){
		echo '无a默认调用';
	}
	public function hello(){
		include $this->admin_tpl('hello');
	}
}
//------------------------------------------------------------
//----------------------前台控制器----------------------------
// goodstuff.php
defined('IN_PHPCMS') or exit('No permission resources.');
class goodstuff{
	public function __construct(){}
	public function init(){
		echo '无a默认调用';
	}
	public function hello(){
		echo 'hehe';
		include template('goodstuff','hello','default');
	}
}
访问方法:localhost/phpcms/goodstuff.php?m=goodstuff&c=goodstuff&a=hello
m= 模块名
c= 控制器名
a= 方法名 若没有则调用init方法
//------------------------------------------------------------
//============================================================


模板.php

<?php
//============================模板============================
//------------------------后台模板调用-----------------------
// 后台模板命名规则: xxx.tpl.php
// 后台模板文件: phpcms\modules\模块名称\templates\xxx.tpl.php
如: phpcms\modules\goodstuff\templates\hello.tpl.php
include $this->admin_tpl('模板名','模块名');
// 示例:
public function hello(){
	$hello = '后台模板';
	include $this->admin_tpl('hello');
}
//-----------------一般变量的输出----------------------------
//------------------------------------------------------------
在 phpcms/modules/goodstuff/templates/hello.tpl.php 中
<?php echo $hello;?>
//----------------每个后台模板都包含的代码------------------
//------------------------------------------------------------
// 注意:后台模板中要包含权限验证模板头等信息,代码如下
<?php
defined('IN_ADMIN') or exit('No permission resources.');//权限验证
$show_dialog = 1;
include $this->admin_tpl('header', 'admin');//头文件
?>
//============================================================
//---------------------以弹窗方式添加数据--------------------

// 1.首先在页面中添加按钮。
	/* 
	将如下代码添加到某个方法中,
	在模块管理页面中就会出现按钮,
	*/
	// 添加按钮
	$menu_name = '添加';
	$show_validator = $show_scroll = true;
	$big_menu = array(
		'javascript:window.top.art.dialog({
			id:\'add\',
			iframe:\'?m=goodstuff&c=goodstuff_admin&a=add\', 
			title:\''.$menu_name.'\', 
			width:\'700\', 
			height:\'450\'
		},
		function(){
			var d = window.top.art.dialog({id:\'add\'}).data.iframe;
			var form = d.document.getElementById(\'dosubmit\');
			form.click();
			return false;
		}, 
		function(){window.top.art.dialog({id:\'add\'}).close()});
		void(0);',
		$menu_name
	);
	
// 2.修改代码中的参数,在参数iframe后面的就是弹窗所调用的方法。
	
// 3.在此模块中添加该调用的方法。
	/* 
	iframe:\'?m=模块&c=控制器&a=调用的方法\',
	*/
// 4.此调用的方法内容可参照其他模块,大致写法如下:
	public function add(){
		//有数据添加时执行数据添加
		if(isset($_POST['dosubmit'])){
			$this->db->insert($_POST['goodstuff']);//将提交的数据添加
			
			//有附件上传时更新附件状态(不知管不管用)
			if(pc_base::load_config('system','attachment_stat') & $_POST['goodstuff']['img']) {
				$this->attachment_db = pc_base::load_model('attachment_model');
				$this->attachment_db->api_update($_POST['goodstuff']['img'],'goodstuff-'.$_POST['goodstuff']['id'],1);
			}
			showmessage(L('operation_success'),HTTP_REFERER,'', 'add');//添加后跳转到之前页面
			
		//无数据添加时显示模板
		}else{
			$show_validator = $show_scroll = $show_header = true;//开启表单验证
			pc_base::load_sys_class('form','',0);
			include $this->admin_tpl('goodstuff_add');//这个模板可以从其他模板中复制
		}
	}
//------------------------表单验证----------------------------
//------------------------------------------------------------
// 使用 formValidator 插件验证时需开启验证
// 开启验证代码如下:将其放入所需验证的方法中
$show_validator = $show_scroll = $show_header = true;
// js代码
$(function(){
$.formValidator.initConfig({formid:"myform",autotip:true,onerror:function(msg,obj){window.top.art.dialog({content:msg,lock:true,width:'200',height:'50'}, function(){this.close();$(obj).focus();})}});
$("#id").formValidator({onshow:"请输入标题",onfocus:"请输入标题"}).inputValidator({min:1,onerror:"标题不可为空"}).inputValidator({max:20,onerror:"字符过长"});
})
//============================================================
//------------------------前台模板调用-----------------------
// 前台模板文件在:phpcms\templates\default\模块名称\xxx.html
如: phpcms\templates\default\goodstuff\hello.html
include template('目录名', '模板名称', '风格名称');//风格名称默认不填为defalut
include template('goodstuff', 'hello', 'default');

// 加载模板示例
public function init(){
	include template('goodstuff','hello','default');
}
public function hello(){
	$hello = 'hello every one';
	include template('goodstuff','hello','default');
}
在 phpcms\templates\default\goodstuff\hello.html 中
<html><?php echo $hello;?></html> //以这样的方式输出

//=======================模板标签的使用======================
//------------------------------------------------------------
/* 
	{$hello}
	{php echo 'hello';}
	{trim(' ',$helllo)}
	{if $num == 10}hello{else}{/if}
 */
//------------------------------------------------------------
//--------------------循环标签loop的使用---------------------
/* 
{loop $data $k $v}
	{$n} {$k} {$v} 
	//$n 为loop循环中默认计数的,相当于for循环中的 i
{/loop}
 */
//-----------------------pc标签的使用方法--------------------
//------------------------------------------------------------
/*
{pc:content  action="position" posid="2" order="listorder DESC" num="4"}
	<ul> 
	{loop $data $key $val} 
		<li><a href="{$val['url']}">{$val['title']}</a></li> 
	{/loop} 
	</ul> 
{/pc}
	
主要参数:

position	内容推荐位列表,就是用于首页推荐的列表信息
posid		“内容 > 推荐位管理” 可以看到相应的 ID 就是 posid


{pc:content action="lists" catid="25" num="20" page="$_GET[page]" return="data"}
	{var_dump($data);}
	或者
	{loop $data $n $r}
	{/loop}
{/pc}

action		参数有:position 推荐,lists 内容列表
catid		栏目id, 获取id: 内容> 管理栏目> 可查看到相应的栏目的id
cache		缓存存储时间,秒
num			获取信息条数
page		当前分页。一般填写为$_GET[page]
urlrule		URL规则
order		排序 order="id desc"
return		设置返回的变量名 默认为 return="data"
moreinfo	是否调用副表数据 moreinfo=1
			副表:主表中不包含文章内容,内容图片等信息放在副表中、
			加上 moreinfo=1 即可将副表中的内容插入到主表中(分表设
			计:内容多时,将一张大表分成多个表)

 */
//------------------------------------------------------------
//----------------------pc标签手动编辑方法-------------------
/* 
	界面 > 模板风格 > 详情列表 > 选择模块 > 可视化
	可以手动操作,并且在模板里面自动补齐其余参数
 */
//-------------------------get标签----------------------------
//------------------------------------------------------------
/* 
其使用SQL语句直接获取数据
手册中:标签使用 > 工具箱 > get标签

{pc:get sql="SELECT * FROM phpcms_news a,phpcms_news_data b WHERE a.id=b.id ORDER BY id DESC" cache="3600" page="$page" return="data"} 
	{var_dump($data)}
	或者
	{loop $data $key $val}
	{/loop}
	{if $pages}<DIV class=page>{$pages}</DIV>{/if}//有分页则显示
{/pc} 

参数:
	sql		直接写sql语句 sql="select * from news a,news_data b where a.id=b.id"
			注意:不可写 limit 用 num="10"
	dbsource		数据源,本地为空,如:dbsource="discuz"
	其他参数:cache,page,return
	
*/
//------------------------------------------------------------
//------------------------碎片管理----------------------------
// 内容 > 碎片管理
// 1. 在模板中加入 {pc:block pos="logo"}{/pc}
	// pos	位置标识,随意起名
// 2. 在可视化中(界面 > 模板风格 > 详情列表 > 选择模块 > 可视化):编辑。
// 3. 在可视化编辑中填入名称。
// 4. 在 内容 > 碎片管理  的右边可以看到刚才添加的碎片起的名字
//------------------------------------------------------------
//-------------------在模板中包含模板------------------------
/* 
{template "content" , "header"}
{template "模块名" , "模板名"}
*/
// 说明:在本模板中没有的模板 会自动继承默认的模板(即default中的模板)
//------------------------------------------------------------
//------------------------模板常量----------------------------
/* 
{CSS_PATH}		//使用方法
CACHE_PATH		缓存文件夹地址
SITE_PROTOCOL	主机协议
SITE_URL		当前访问的主机名
HTTP_REFERER	来源
SYS_START_TIME	系统开始时间
CHARSET			页面字符集
SYS_TIME		当前时间戳
WEB_PATH		网站根路径
JS_PATH			JS路径
CSS_PATH		CSS路径
IMG_PATH		图片路径
APP_PATH		动态程序路径
PLUGIN_STATICS_PATH 应用静态文件路径
*/
//========================模板切换============================
//------------------------------------------------------------
// 首页模板切换
/* 
	1. 设置>站点管理>修改>模板风格配置
	2. 刷新前端页面
 */

// 模块模板切换
/* 
	1.内容 > 模型管理 > 修改 > 模板设置 > 内容页模板
	2.内容 > 内容相关设置 > 管理栏目 > 修改 > 模板设置 > 可用风格
 */

//------------------------------------------------------------
//============================================================


模型.php

<?php
//=========================模型===============================
//------------------------------------------------------------
// phpcms/model/					数据库模型目录
// 数据表名称+'_model.class.php'	数据模型文件的命名规则

// 如: goodstuff_model.class.php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model','',0);
class goodstuff_model extends model{
	public function __construct(){
		$this->db_config = pc_base::load_config('database');
		$this->db_setting = 'default';		//数据库链接池名称,默认default,一般不改
		$this->table_name = 'goodstuff';	//数据表名称
		parent::__construct();
	}
}
//--------------------------使用模型--------------------------
//------------------------------------------------------------
// 在模块的控制器中使用
defined('IN_PHPCMS') or exit('no such file');
class goodstuff{
	private $db;		// (1)
	public function __construct(){
		$this->db = pc_base::load_model('goodstuff_model'); // (2)
	}
	public function init(){
		var_dump($this->db->select());// (3)
	}
}
// 更多数据库操作方法详见 phpcms/libs/classes/model.class.php
//------------------------------------------------------------
//============================================================


配置文件.php


<?php
//============================================================
//------------------------可视化编辑-------------------------
// phpcms/caches/configs/system.php
// 开启在线编辑(默认关闭)
// 在20 行修改 'tpl_edit'=> 1,  1表示支持在线编辑
// 然后在 界面>模板风格 里面可以在线编辑内容

// 切换主页模板
// 设置>站点管理>修改
//------------------------------------------------------------
//-----------------------上传附件路径------------------------
// 将绝地路径改为相对路径
// 配置文件路径 \phpcms\caches\configs\system.php
'upload_url' => '/phpcms/uploadfile/', //附件路径

// 其他路径设置项
'js_path' => 'http://localhost/phpcms/statics/js/', //CDN JS
'css_path' => 'http://localhost/phpcms/statics/css/', //CDN CSS
'img_path' => 'http://localhost/phpcms/statics/images/', //CDN img
'app_path' => 'http://localhost/phpcms/',//动态域名配置地址
//------------------------------------------------------------
//============================================================