苹果CMSV10插件目录结构介绍
苹果CMS V10插件目录结构
苹果CMS V10 的插件统一存放在网站根目录的 addons 目录中,每个插件对应一个独立目录。插件目录名称就是插件标识,必须与插件标识保持一致,并且全部使用小写字母,不允许使用大写字母、下划线等特殊符号。
例如,一个名为 mydemo 的插件,其基本目录结构如下:
maccms └─ addons └─ mydemo // 插件标识 ├─ application // 覆盖根目录/application中的文件 ├─ assets // 复制到/static/addons/mydemo ├─ controller // 插件控制器目录 ├─ lang // 插件语言包目录 ├─ model // 插件模型目录 ├─ view // 插件视图目录 ├─ Mydemo.php // 插件核心安装、卸载控制器 ├─ bootstrap.js // 插件JS启动文件 ├─ LICENSE // 版权文件 ├─ config.html // 插件配置视图模板,可选 ├─ config.php // 插件配置文件 ├─ info.ini // 插件信息文件 └─ install.sql // 插件数据库安装文件
苹果CMS V10插件目录及文件说明
苹果CMS插件目录中的不同文件和文件夹承担不同功能。开发插件时,需要根据实际功能将文件放置到对应目录中。
1、APPlication目录
application 目录中的文件会覆盖到网站根目录的 /application 目录中。
这个目录主要用于开发插件涉及的后台管理功能。例如,可以先在苹果CMS后台完成对应的管理功能开发,测试无误后,再将相关文件整理并打包到插件的 application 目录中。
苹果CMS在插件安装和卸载过程中会进行文件冲突检测。如果发现需要覆盖或删除的文件已经存在,系统会提示用户确认相关操作。
2、assets目录
assets 是插件中比较重要的资源目录。插件安装后,苹果CMS会将该目录中的文件和文件夹复制到:
/static/addons/插件标识/
例如插件标识为 mydemo,那么资源文件最终会被复制到:
/static/addons/mydemo/
需要注意的是,assets 目录中的文件不会进行文件冲突检测。因此开发插件时,应注意资源文件的命名,避免与其他插件或网站现有文件产生冲突。
在插件视图文件中,可以使用 __ADDON__ 指向当前插件的资源目录。例如开发CSS、JS、图片等静态资源时,可以先使用相对路径完成页面开发,完成后再统一增加 __ADDON__ 前缀。
3、controller目录
controller 是插件控制器目录,主要用于编写插件前台功能及相关业务逻辑。
它属于插件MVC结构中的控制器部分,插件安装后不会被复制或移动到其他目录。
4、lang目录
lang 是插件语言包目录,用于存放插件所需的语言文件。
如果插件需要支持不同语言环境,可以将对应的语言内容放置在该目录中进行管理。
5、model目录
model 是插件模型目录,主要用于存放插件的数据模型及相关数据库操作代码。
该目录同样属于插件自身的MVC结构,安装插件时不会复制到网站其他位置。
6、view目录
view 是插件视图目录,用于存放插件前台页面模板以及相关视图文件。
插件的 controller、model、view 三个目录共同组成插件的MVC功能结构。
7、Mydemo.php核心文件
Mydemo.php 是插件的核心文件,主要用于处理插件安装、卸载以及插件相关事件。
在该文件中,可以编写插件安装或卸载时需要执行的脚本,也可以实现插件菜单的生成、删除以及插件行为方法等功能。
插件核心文件的命名通常遵循插件标识首字母大写的规则。例如插件标识为:
mydemo
对应的核心文件为:
Mydemo.php
苹果CMS支持的插件行为事件以及相关开发方式,可以结合具体插件功能进一步进行扩展。
8、bootstrap.js启动文件
bootstrap.js 是插件的JavaScript启动文件。
插件安装并启用后,苹果CMS会将该文件中的内容合并到:
/static/js/addons.js
因此,可以在 bootstrap.js 中编写插件所需的核心JavaScript代码或者注册相关事件。
在该JS文件中可以使用 require 加载其他模块,同时还可以使用 Fast、Backend、Lang 等全局对象,因为这些对象在插件启动之前已经完成加载和注册。
9、LICENSE版权文件
LICENSE 用于保存插件的版权及授权相关信息。是否必须提供以及具体内容,可以根据插件发布和授权方式自行设置。
10、config.html配置模板
config.html 是插件的自定义配置视图模板,属于可选文件。
如果插件需要在苹果CMS后台提供自定义配置界面,可以通过该文件设计对应的配置页面。
11、config.php配置文件
config.php 是插件的配置文件。当用户在苹果CMS后台的插件管理中点击插件的“配置”按钮时,会使用该文件处理相关配置。
如果插件需要提供后台配置功能,需要根据插件实际需求编写对应的配置内容。
苹果CMS V10插件info.ini文件详解
info.ini 用于保存插件的基本信息以及插件启用状态等内容,是插件结构中的重要文件。
一个基本的 info.ini 示例:
name = mydemo title = 示例插件 intro = 这是一个示例插件的介绍 author = 平果站 website = http://www.pgzhan.com version = 1.0.0 state = 1 image = /static/addons/mydemo/img/logo.jpg url = /addons/mydemo.html
info.ini常用参数说明
| 参数 | 说明 |
|---|---|
name | 插件标识,例如 mydemo。 |
title | 插件名称,用于后台显示。 |
intro | 插件简介。 |
author | 插件作者或开发者信息。 |
website | 插件作者或项目网站地址。 |
version | 插件版本号。 |
state | 插件状态,根据程序规则设置。 |
image | 插件图标或展示图片路径。 |
url | 插件访问地址或相关入口。 |
苹果CMS V10插件install.sql数据库文件
install.sql 是插件的数据库安装文件,文件内容只能使用SQL语句。
插件安装时,苹果CMS会自动读取该文件并导入其中的SQL语句,因此可以通过该文件创建插件所需的数据表、字段以及初始化数据。
在 install.sql 中可以使用:
__PREFIX__
作为数据库表前缀占位符。苹果CMS在安装导入SQL时会自动将其替换为当前网站实际使用的数据表前缀。
例如,插件数据库表可以使用类似以下方式定义:
CREATE TABLE `__PREFIX__mydemo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL DEFAULT '', `time` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) );
这样可以避免插件直接写死数据库表前缀,提高插件在不同苹果CMS站点环境中的兼容性。
苹果CMS V10插件开发流程
开发一个完整的苹果CMS V10插件时,可以按照以下思路组织文件:
首先确定唯一的插件标识,并使用全小写字母命名插件目录。
创建插件核心文件,例如
Mydemo.php。创建
info.ini,填写插件名称、版本、作者等基础信息。根据插件功能创建
controller、model、view和lang目录。需要静态资源时,将CSS、JS、图片等文件放入
assets目录。需要数据库表时,在
install.sql中编写安装SQL。需要后台功能时,可以通过
application目录扩展或覆盖相应功能。需要插件启动JS时,可以在
bootstrap.js中注册相关代码和事件。完成测试后,将整个插件目录打包,即可用于安装部署。
苹果CMS V10插件开发注意事项
插件目录名称必须与插件标识保持一致,并按照程序要求使用小写字母。
application中的文件可能覆盖网站根目录对应文件,发布插件前应仔细检查文件冲突。assets中的文件不会进行冲突检测,静态资源命名时应尽量使用具有插件特征的名称。controller、model、view和lang属于插件自身目录,不需要复制到其他位置。info.ini用于保存插件基础信息,是插件正常识别的重要文件。install.sql中涉及数据表时,建议使用__PREFIX__,不要直接写死数据库表前缀。插件正式发布前,应分别测试安装、启用、配置、禁用和卸载流程,确认文件及数据库处理正常。
总结
苹果CMS V10采用独立插件目录管理机制,每个插件都可以拥有自己的控制器、模型、视图、语言包以及静态资源。理解 application、assets、controller、model、view、bootstrap.js、info.ini 和 install.sql 等文件的作用,是进行苹果CMS插件开发和二次开发的基础。
其中,info.ini负责插件基本信息,Mydemo.php负责插件核心安装、卸载及相关行为,bootstrap.js负责插件前端JavaScript启动,而 install.sql则用于插件数据库结构安装。按照规范组织插件目录后,可以将开发完成的功能直接打包成独立插件进行部署。
