### PHPCMS V9 二次开发实例——留言本
#### 1. 需求分析
在本实例中,我们通过开发一个留言本系统来帮助开发者更好地理解和掌握PHPCMS V9的二次开发流程。该系统包括后台管理和前台展示两大部分。
**后台管理功能:**
1. **管理留言信息**:能够查看所有留言,并对其进行回复或删除操作。
2. **留言显示控制**:后台可以控制哪些留言可以在前台显示。
3. **配置选项设置**:包括但不限于是否启用验证码、默认是否显示留言、是否允许游客留言等,并且这些配置信息能够针对多个站点进行存储。
4. **批量管理未回复留言**:支持批量处理未回复的留言。
**前台功能:**
1. **显示在线留言填写表单**:根据后台配置,决定是否在前台显示留言填写表单。
2. **提交留言**:用户可以直接在线提交留言,根据后台配置决定是否需要显示验证码以及是否需要管理员审核后才能显示。
3. **留言列表展示**:前端页面上展示留言列表,并按后台配置的每页条数进行分页展示。
#### 2. 数据库和数据表的设计
本实例使用MySQL数据库来存储所有与留言相关的数据。为了实现上述功能,我们需要创建一个名为`phpcms_guestbook`的数据表,用于存储留言信息。该表包含以下字段:
- **gid**:消息编号,主键,自增。
- **title**:留言标题,最大长度为80字符。
- **content**:留言内容,文本类型。
- **reply**:留言的回复内容,文本类型。
- **userid**:留言者的会员ID,中型整数,非负。
- **username**:留言者的用户名,最大长度20字符。
- **gender**:留言者性别,小型整数,非负。
- **head**:头像标识,小型整数,非负。
- **email**:留言者的电子邮件地址,最大长度40字符。
- **qq**:留言者的QQ号码,最大长度15字符。
- **homepage**:留言者的个人主页链接,最大长度25字符。
- **hidden**:是否隐藏留言,小型整数,非负,默认值为0。
- **passed**:留言审核状态,小型整数,非负,默认值为0。
- **ip**:留言者的IP地址,最大长度15字符。
- **addtime**:留言添加时间,整数类型,非负,默认值为0。
- **replyer**:回复留言的人的用户名,最大长度20字符。
- **replytime**:回复留言的时间,整数类型,非负,默认值为0。
下面展示了创建该数据表的SQL代码:
```sql
CREATE TABLE `phpcms_guestbook` (
`gid` smallint(5) NOT NULL AUTO_INCREMENT,
`title` char(80) NOT NULL,
`content` text NOT NULL,
`reply` text NOT NULL,
`userid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`username` char(20) NOT NULL,
`gender` tinyint(1) unsigned NOT NULL DEFAULT '0',
`head` tinyint(3) unsigned NOT NULL DEFAULT '0',
`email` char(40) NOT NULL,
`qq` char(15) NOT NULL,
`homepage` char(25) NOT NULL,
`hidden` tinyint(1) unsigned NOT NULL DEFAULT '0',
`passed` tinyint(1) unsigned NOT NULL DEFAULT '0',
`ip` char(15) NOT NULL,
`addtime` int(10) unsigned NOT NULL DEFAULT '0',
`replyer` char(20) NOT NULL,
`replytime` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`gid`),
KEY `hidden` (`hidden`, `gid`)
);
```
#### 3. 创建模块目录
在PHPCMS V9框架中,模块位于`phpcms/modules`目录下,每个模块对应一个子目录。对于本实例中的留言本模块,我们首先需要在`phpcms/modules`目录下创建一个名为`guestbook`的文件夹。
**模块标准结构如下:**
- **classes**:模块类库包。
- **functions**:模块函数库包。
- **templates**:模块模板包,用于存放后台模板。
- **default**:默认风格包,用于存放前台模板。
#### 4. 创建数据模型类文件
完成数据表和模块文件夹的创建之后,接下来需要创建数据模型类文件。数据模型类文件应位于`phpcms/model`目录下,文件命名规则建议为数据表名称加上'_model.class.php'。例如,对于`phpcms_guestbook`表,其数据模型类文件名为`phpcms_guestbook_model.class.php`。下面展示了一个简单的数据模型类文件示例:
```php
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class phpcms_guestbook_model extends model {
public function __construct() {
$this->
```
以上步骤完成了留言本系统的初步设计和开发准备工作。接下来可以根据实际需求进一步完善和扩展功能。