很早就想写cmswing的二次开发教程,一致苦于没有时间,cmswing也到了最后的开发阶段,文档和教程也到了不能不写的地步了,所以决定先从比较简单的插件二次开发入手,这样初学者也能比较容易理解,想来想去,就拿友情链接链接作为插件开发的案例吧,友情链接是网站中不可缺少的功能,虽然简单但是应用的技术比较全面,涵盖了增删改查业务,包括前台申请,后台管理审核。
再简单的功能,也有需求分析,有了合理,详细的需求分析,后面的开发才能少走弯路,当然随着开发经验的积累,需求分析可能会越来越多简单。这就看个人的能力了。
在首页需要展示友情链接,并且能后台能够控制排序。在前台有申请友情链接的入口,后台友情链接包括对友情链接的添加,编辑,删除,对前台申请的审核。友情链接多的时候可能需要分类。后台能对有链接功能进行配置,比如是否开启前台申请等功能。
大体描述出来了,我们可以根据描述大概提炼一下功能点。
展示,申请入口
管理:审核,删除,编辑
配置:是否允许申请,是否开启验证码
分类:添加,修改,删除
友情链接,数据库结构比较简单,无非就是,网站名称,网站地址,网站logo,网站介绍,排序,推荐,审核,添加时间,分类ID。
因为比较简单就比一一分析了,最终数据库结构如下。
/* Navicat Premium Data Transfer Source Server : 本地 Source Server Type : MySQL Source Server Version : 50715 Source Host : localhost Source Database : cmswing Target Server Type : MySQL Target Server Version : 50715 File Encoding : utf-8 Date: 01/13/2017 12:28:08 PM */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `cmswing_ext_link` -- ---------------------------- DROP TABLE IF EXISTS `cmswing_ext_link`; CREATE TABLE `cmswing_ext_link` ( `id` smallint(5) NOT NULL AUTO_INCREMENT COMMENT 'id', `typeid` smallint(5) NOT NULL DEFAULT '0' COMMENT '类别id', `linktype` tinyint(1) NOT NULL DEFAULT '0' COMMENT '链接类型 1 logo,0文字', `name` varchar(50) NOT NULL DEFAULT '' COMMENT '网站名称', `url` varchar(255) NOT NULL DEFAULT '' COMMENT '网站地址', `logo` varchar(255) NOT NULL DEFAULT '' COMMENT '网站logo', `introduce` text COMMENT '网站介绍', `username` varchar(255) NOT NULL DEFAULT '' COMMENT '申请者', `sort` smallint(5) NOT NULL DEFAULT '0' COMMENT '排序', `elite` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否推荐 0 不推荐,1推荐', `passed` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0没有审核,1通过审核', `addtime` bigint(13) NOT NULL DEFAULT '0' COMMENT '添加时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; SET FOREIGN_KEY_CHECKS = 1;
在创建数据库之前,必须先要链接创建规则,所有的插件的表明都是以cmswing_ext_为前缀的,我们这里友情链接是link,那么数据库表名就是cmswing_ext_link,如有多个表那就是cmswing_ext_link_t1,cmswing_ext_t2....
创建完数据库表后第一步算是完成了,下一节我们来讲,cmswing插件的后台添加,和目录的创建。