phpcms v9二次开发笔记

一、目录结构

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

二、路由

单入口,模块访问方法[示例]:

http://yourdomain.com/index.php?m=content&c=index&a=show&id=1

m = content 为模型/模块名称 位于phpcms/modules/content
c = index 为控制器名称 位于phpcms/modules/content/index.php
a = show 为时间名称 位于phpcms/modules/content/index.php 中show()方法
id = 1 为其他参数 与正常get传递参数形式相同

路由配置:

phpcms/caches/configs/route.php

默认是

return array(
    'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),
);

即定义了m,c,a以及默认会访问content模块的index控制器的init方法

三、模块

phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块。即url访问中的m。

如果要创建一个模块,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。

例如我要开发一个叫做test的模块,那么首先在 phpcms/modules 目录下创建文件夹,并将其命名为test。

test模块的标准结构通常是这样的。

classes 为模块类库包
functions 为模块函数库包
templates 为模块模板包。这里通常放置含有权限控制的控制器模板,也就是后台模板。

如果您的模板有单独的前台模板,你需要在phpcms\templates\default下创建一个您的模块目录来放置前台模板,"default"为你的风格包名称,我们默认适用default

四、控制器

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

phpcms还有模块体系,即控制器属于模块。

五、模型

数据库模型位于: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');

来加载。

六、视图

视图位于phpcms\templates\default下。其中default表示默认主题目录。default下的视图文件夹与模块文件夹一一对应。

七、配置

配置文件位置:caches/configs/,其中:

database.php数据库
route.php路由
system.php系统配置

八、系统类库及函数调用

1、系统类库位于系统的phpcms/libs/classes目录下面,函数库文件名为*.class.php,其中global.func.php为框架中默认加载,global.func.php中函数可直接使用
2、系统函数库位于系统的phpcms/libs/functions目录下面,函数库文件名为*.func.php

使用pc_base::load_sys_class()加载类
使用pc_base::load_sys_func()加载函数
使用pc_base::load_model()加载数据模型
使用pc_base::load_config()加载配置文件

我们可以在类的前面加载需要的类库。例如:

pc_base::load_sys_class('model', '', 0);
class test_model extends model {}
时间: 2024-04-19 17:45:36

phpcms v9二次开发笔记的相关文章

destoon二次开发笔记 数据库 模板制作

入门代码示例 一.初始化系统 包含系统根目录下的common.inc.php即可初始化系统. 例如在站点根目录下创建一个hello.php. 示例代码:  代码如下 复制代码 <?php require 'common.inc.php'; echo 'Hello World'; ?> 二.编写逻辑 系统初始化之后,就可以在php文件里编写逻辑代码,同时也可以调用系统内置的变量.函数和类了. 示例代码:  代码如下 复制代码 <?php require 'common.inc.php';

如何给phpcms v9增加类似于phpcms 2008中的关键词表_php技巧

最近用phpcms v9二次开发一个人站点,之前用2008中有个比较舒服的关键词全部显示出来功能,而v9将关键词列表功能增加到了搜索中,如果搜索一个关键词就会自动产生一个增加到了search_keyword表中,这一点不是很喜欢v9;站内搜索功能,我觉得一般会用得比较少,而我们在增加文章的时候实际上就把关键词分隔开了,为什么还要多此一举了,其实改起来也比较简单 在model文件夹中增加一个keyword_ext_model.class.php.keyword_model实际是存在model文件夹

phpcms v9自定义HTML文件名字的二次开发

1.修改你需要设置的模型,添加一个字段,配置如下:   开发-phpcmsv9二次开发教程"> 2.打开/phpcms/modules/content/create_html.php,找到代码: $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']); 批量替换为: $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputt

.Net WInform开发笔记(二)Winform程序运行结构图及TCP协议在Winform中的应用_C#教程

中午没事,把去年刚毕业那会画的几张图翻出来了,大概介绍Winform应用程序运行的过程,以及TCP协议在Winform中的应用.如果有Windows消息机制等基础,很好理解这两张图. (1)Winform应用程序运行结构图 开发笔记(二)Winform程序运行结构图及TCP协议在Winform中的应用_C#教程-tcp ip协议 层结构图"> (2)TCP通讯协议在Winform程序中的应用示意图 熟悉整个程序的来龙去脉,编程的时候就会很轻松,不会云里雾里. 另附公司招聘面试题一份,用了几

Android开发笔记之Android中数据的存储方式(二)_Android

我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效率.如果学过JavaWeb的朋友,首先可能想到的是数据库.当然了数据库是一个方案,那么是否还有其他的解决方案呢?今天我们在讲下Android开发笔记之Android中数据的存储方式(一) 提到的除了SharedPreferences和Files(文本文件)以外的其他几种数据储存方式:xml文件.SQ

Android开发笔记之Android中数据的存储方式(二)

我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效率.如果学过JavaWeb的朋友,首先可能想到的是数据库.当然了数据库是一个方案,那么是否还有其他的解决方案呢?今天我们在讲下Android开发笔记之Android中数据的存储方式(一) 提到的除了SharedPreferences和Files(文本文件)以外的其他几种数据储存方式:xml文件.SQ

PHPCMS V9信息模型即将面世 黄页模块6月发布

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 PHPCMS V9(简称V9)采用PHP5+MYSQL做为技术基础进行开发.V9采用OOP(面向对象)方式进行基础运行框架搭建.模块化开发方式做为功能开发形式.框架易于功能扩展,代码维护,优秀的二次开发能力,可满足所有网站的应用需求. 5年开发经验的优秀团队,在掌握了丰富的WEB开发经验和CMS产品开发经验的同时,勇于创新追求完美的设计理念,

PHPCMS V9 添加二级导航的思路详解_php实例

今天看了看phpcms 写到二级导航时发现点问题,查询导航栏的信息时返回的$r[arrchildid]与自己想象的不符,文档上说是返回子栏目id但是却有些不同. 开始的思路: <ul class="nav navbar-nav"> <li class="active"><a href="{siteurl($siteid)}">首页</a></li> {pc:content action=

Phpcms V9设置文章定时发布程序代码

phpcms v9 本身是没有定时发布这一项功能的,这需要我们进行二次开发才能实现,关于定时发布的好处不用多说了吧,当我们在没有时间进行更新站点的时候,不会出现文章断更的情况,比如过年或者自己过节没有时间更新了,可以提前写好文章,让其自动进行更新,在 wordpress 中有这样一个很好的时间机制,下面夏日博客就来说下在 phpcms v9 中如何实现文章定时的发布,这是在 pc 论坛上面看到的一个方法,感觉不错就分享下代码吧. 1.修改api/count.php这一文件,在PHP语句结束代码