鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > cms安装教程 > phpcms > >

PHPCMS自带框架学习

来源:互联网 作者:佚名 时间:2015-08-18 08:50
文件目录结构根目录| – api 接口文件目录| – caches 缓存文件目录 | – configs 系统配置文件目录 | – caches_* 系统缓存目录| – phpcms phpcms 框架 主目录 | – languages 框架 语言包目录 | – libs 框架 主类库、主函数库目录 | – model 框架 数据
文件目录结构

根目录
|  –  api  接口文件目录
|  –  caches 缓存文件目录
       |  – configs 系统配置文件目录
       |  – caches_* 系统缓存目录
|  –  phpcms  phpcms框架主目录
       |  – languages 框架语言包目录
       |  – libs 框架主类库、主函数库目录
       |  – model 框架数据库模型目录
       |  – modules 框架模块目录
       |  – templates 框架系统模板目录
|  –  phpsso_server  phpsso主目录
|  –  statics  系统附件包
       |  – css 系统css包
       |  – images 系统图片包
       |  – js 系统js包
|  –  uploadfile  网站附件目录
|  –  admin.php  后台管理入口
|  –  index.php  程序主入口
|  –  crossdomain.xml  FLASH跨域传输文件
|  –  robots.txt 搜索引擎蜘蛛限制配置文件
|  –  favicon.ico  系统icon图标

根目录下面的index.php文件,内容如下。 <?php /**

*  index.php PHPCMS 入口
*
* @copyright			(C) 2005-2010 PHPCMS
* @license				http://www.phpcms.cn/license/ * @lastmodify			2010-6-1
*/
//PHPCMS根目录

define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);//定义常量,值为全路径,比如'F:\PHPnow\htdocs',对转移程序提到很好的准备.

include PHPCMS_PATH.'/phpcms/base.php';//调用初始化base文件

pc_base::creat_app();//base.php里面的creat_app方法。自行查看,没什么解释的。

?>


函数调用<?php

pc_base::load_sys_class('form', , 0); ?>
<textarea name="announce[content]" id="content"></textarea>
<?php 
echo form::editor('content','full','announce',,,1);
?>

配置文件默认在caches\configs\database.php 内容如下。 <?php

return array ( 'default' => array ( 'hostname' => 'localhost',//服务器名称 'database' => 'phpcmsv9',//数据库名 'username' => 'root',//数据库用户名 'password' => '123456',//密码 'tablepre' => 'v9_',//数据库前缀,可以是任意,如没特殊要求,就填写默认 'charset' => 'utf8',//数据库字符集. 'type' => 'mysql',//数据库类型,比如access mysql mssql .... 'debug' => true,//是否开启错误提示 'pconnect' => 0,//是否永久连接数据库 0,不是 1,是 'autoconnect' => 0 ), );

?>

创建模块控制器类

创建模块控制器类 在创建模块中我们已经创建好了一个名为“test”的模块,接下来我们继续为这个模块添加两个控制器类。

phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为mytest的控制器,那么他的命名为mytest.php即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。

控制器类文件包含两种形式:

1.mytest.php 控制器,前台浏览(不含权限控制)

<?php defined('IN_PHPCMS') or exit('No permission resources.'); class mytest { function __construct() { } public function init() { $myvar = 'hello world!'; echo $myvar;

    }

public function mylist() { $myvar = 'hello world!this is a example!'; echo $myvar;

    } 

} ?>


这个控制器的url访问方法前面已经介绍过了,


http://www.yourname.com/index.php?m=test&c=mytest http://www.yourname.com/index.php?m=test&c=mytest&a=mylist

没有填写 “a” 的情况下,默认调用init方法

2.mytest_admin.php 控制器,后台管理(含权限控制)

后台控制控制器需要加载admin模块下的admin类,并继承该类。需要注意的是因为你添加的控制器类继承了其他的类,你要小心你控制器的方法名不要和该类中的方法名一样了,否则会造成影响,具体请查看admin类中有哪些方法。

<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_app_class('admin','admin',0); class mytest_admin extends admin { public function __construct() { } public function init() { $myvar = 'oh,i am phpcmser'; echo $myvar; } } ?>


在控制器中增加模板调用

phpcms 可以实现完全的模板与程序分离,所以在我们的控制器程序中要加载模板,才可以更友好的显示出来。

1.加载前台模板

前台模板文件在phpcms\templates\default\模块名称 目录中,本示例也就在phpcms\templates\default\test中

加载模板方法如下:

include template('test', 'mytest', 'default');

其中 test为模块名称 mytest 为模板目录下模板名称,default为风格名称,默认不填为defalut

在上面例子中如果要给mytest.php中init方法加载一个mytest的模板,如下

public function init() { $var = 'hello world!'; include template('test', 'mytest', 'default');

  }


这样我们通过url访问该方法的时候也就加载了对应的模板。

2.加载后台模板

后台模板文件在phpcms\modules\模块名称\templates 目录中,本示例也就在phpcms\modules\test\templates 中

加载模板方法如下:

include $this->admin_tpl('mytest_admin_list');


其中mytest_admin_list为phpcms\modules\test\templates中mytest_admin_list.tpl.php,注意:此处模板必须以.tpl.php 作为后缀

在上面例子中如果要给mytest_admin.php中init方法加载一个mytest_admin_list的模板,如下


public function init() { $myvar = 'oh,i am phpcmser'; include $this->admin_tpl('mytest_admin_list'); }

 

创建数据库模型类

数据库模型位于:phpcms/model/ 目录下。

数据模型文件的命名规则建议为数据表名称+'_model.class.php'

如果在我们的创建的模块中我要使用一个数据库“test”,首先需要建立一个数据库模型文件,文件名称为'test_model.class.php'

内容如下:

<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_sys_class('model', , 0);  class test_model extends model { public function __construct() { $this->db_config = pc_base::load_config('database'); $this->db_setting = 'default'; $this->table_name = 'test'; parent::__construct(); } } ?>

注意:

1.数据库模型类名称必须与文件名称相同; 2.$this->db_setting = 'default'为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。 3.$this->table_name = 'test'为数据表名称

这样我们就建立好了一个数据库模型类。 在模块的控制器中使用 $this->db = pc_base::load_model('test_model'); 来加载。 具体如下

<?php defined('IN_PHPCMS') or exit('No permission resources.'); class mytest { private $db; function __construct() { $this->db = pc_base::load_model('test_model'); } public function init() { $result = $this->db->select(); var_dump($result);

    }

} ?>

其中$this->db中所支持的方法请参照phpcms/libs/classes/model.class.php中方法

Templates.gif


phpcms→核心程序文件夹
templates→模板总文件夹
default→默认模板文件夹
announce→公告模块模板
comment→评论模块模板
content→内容模块模板(包括首页、列表、频道、内容、列表搜索等主要模板文件)
formguide→自定义表单模板
link→友情链接模块模板
member→会员中心模板
message→消息模块模板
mood→文章心情模板
pay→支付模块模板
plugin→应用中心模板
poster→广告样式模板
search→全站搜索模板
special→专题模板
vote→投票模板
wap→手机门户模板

 

公共调用

{template "content","header"} ---------- 调用根目录下phpcms\template\content\header文件
{CHARSET} -------------------------------------字符集 (gbk或者utf-8)
{if isset($SEO['title']) && !empty($SEO['title'])} ---------- 网站标题
{$SEO['title']}{/if}
{$SEO['site_title']}
{$SEO['keyword']} ---------- 关键字
{$SEO['description']} ---------- 网页描述
{CSS_PATH} -----------------------------------地址替换为根目录下\statics\css
{JS_PATH}--------------------------------------地址替换为根目录下\statics\js
{IMG_PATH}--------------------------------------地址替换为根目录下\statics\images
{pc:content action="position" posid="9" order="id" num="10" cache="3600"}

pc标签{pc:content 参数名="参数值" 参数名="参数值" 参数名="参数值"}
{loop $data $k $v}循环开始
<a href="{$v[url]}">{$v[title]}</a> 底层模板
{/loop}循环结束
{/pc}

显示pc标签值

action="position"-------------对话框的类型=“内容推荐位列表”
posid="9"--------------------推荐位ID=“9”
order="id"--------------------排序类型=“id”
num="10" -------------------数据调用数量=“10”
cache="3600"----------------缓存="3600"毫秒
{APP_PATH}-----------------项目地址
{get_siteid()}---------------- 网站id
action="hits" 排行,热点等
action="lists" 主要用于列表等。
catid="$catid" 当前栏目ID 指定数字,即为指定的栏目
num="" 调用文章的数量
order="id DESC" 按ID降序排列
order="id ASC" 按ID升序排列
order="views DESC" 按浏览数降序排列
thumb="1" 缩略图
return="" 返回值
page="$page" 需要分页
每当列表几行的时候出现一次这个{if $num%2==0} {/if}
循环标签{loop $data $r} {/loop} 循环输出内容 {loop $info $r} {/loop}

列表页常用调用

日期 {date('Y-m-d H:i:s',$r[inputtime])}
文章链接 {$r[url]}
文章标题 {$r[title]}
标题截取 {str_cut($r[title],40,'...')}
缩略图 loop是info的时候用 {thumb($r[thumb],110,0)} loop是data的时候用{thumb($v[thumb],90,0)}

分页标签{$pages}

内容页标签

标题 {$title}
内容 {$content}
日期 {$inputtime}
来源 {$copyfrom}
点击数 <script language="JavaScript" src="{APP_PATH}api.php?op=count&id={$id}&modelid={$modelid}"></script>

网友评论
<