《HongCMS开发者手册》二次开发指南
二次开发包使用说明书

二次开发包使用说明书(版本V1.1)目录一、DEMO软件使用步骤 (3)1.1串口通讯单个显示屏 (3)1.1.1设置屏幕参数以及模组参数 (3)1.1.2打开DEMO软件 (6)1.1.3发送数据 (6)1.2串口通讯多个显示屏 (7)1.2.1设置屏幕参数以及模组参数 (7)1.2.2 打开DEMO软件 (9)1.2.3发送数据 (9)1.3 TCP/IP通讯单个显示屏 (9)1.3.1 设置屏幕参数以及模组参数 (9)1.3.2 打开DEMO软件 (12)1.3.3 发送数据 (12)1.4 TCP/IP通讯多个显示屏 (13)1.4.1 设置屏幕参数以及模组参数 (13)1.4.2 打开DEMO软件 (14)1.4.3 发送数据 (14)二、节目编辑流程 (14)三、调用顺序样例 (15)开发包使用说明软件使用步骤使用步骤一、DEMO软件单个显示屏1.1串口通讯串口通讯单个显示屏1.1.1设置屏幕参数以及模组参数主要设置屏幕参数以及模组参数,设置参数应使用“LED图文屏编辑控制平台”软件,设置步骤如下。
1)进入“LED图文屏编辑控制平台”中的硬件参数,设置参数。
参数设置完后,点击“发送后保存”。
2)打开二次开发包中的配置文件(.ini文件)打开二次开发包中的LED.INI文件。
参数配置说明参数配置说明::[地址:1]LinkAddr=1CardType=HL06ACOMPort=COM1LinkMode=串口IPAddr=PortNO=8000BaudRate=9600bpsColor=2Width=512Height=256① 控制卡地址"[地址:n]"和"LinkAddr" 范围为:1~253;② 控制卡类型CardType 的取值为: HL00、HL01、HL02、HL03A 、HL06A 、HL06A+ ③ 控制卡通讯模式“LinkMode ”的取值为:串口、TCP/IP④ 控制卡以太网参数:“IPAddr ”和“PortNO ”:IPAddr 取值:实际卡所配置IP 地址如:192.168.0.2PortNO 取值:实际卡所配置端口如:8000注:仅TCP/IP 模式需配置该参数⑥ 显示屏的宽度和高度分别为“Width ”和“Height ”:Width 取值范围: 8~屏幕高度,并且是8的倍数,Height 取值范围:8~屏幕高度⑦串口波特率和串口号分别为“BaudRate”和“COMPort”:BaudRate取值为:9600bps,38400bps,115200bps;COMPort取值为:COM1、COM2、COM3、...... (注:COM1为COM1口,COM2为COM2口);⑧显示屏颜色:0~3;0.单色屏(红色),1.单色屏(绿色),2.双色屏(红色&绿色),3.双色屏(绿色&红色)注意:*地址的个数可以根据实际显示屏的个数添加;*不要修改该文件的文件名及后缀;*该文件必须和应用程序放在同一个目录下。
二次开发需求文档书写指南

需求文档编写指南一份好的需求文档不仅可以使二次开发效果达到需求方预期的功能,还可以加快开发速度。
需求文档理应包括的信息:1.目前网站的版本号,如ShopEx 4.8.5;2.安装了哪些插件,做了哪些改动,为了详细了解需要提供ftp或者源码;3.请我们开发的功能图文描述。
下面给出三个描述开发功能图文需求例子,以作参考。
A.仿其他网站功能1.给出要仿的网站网址2.需要仿的功能截图例如:购物车添加删除按钮的功能需求,图文描述如下鼠标移到购物车文字上下方弹出购物车详细信息,如图所示这样简短的介绍,技术员就一清二楚了~B.在原有网站基础上新增修改功能(原始文档参考/9Xlt5A)1.需要改动界面的链接2.需要改动的界面详细介绍如忘记密码,手机短信取回密码功能描述用户点击忘记密码按钮后,如果填入手机号,则显示红色提示,替换方框内的文字填写完成信息后点击提交如果之前填写的是手机取回,则提示短信已经发送C.大改动的开发(原始文档参考下载链接/AxYCgo)需求是修改运费计算系统,该客户是家具厂自销模式,家具一般国内是通过体积重量来计费的。
首先用户提供了体积重量如何计算的公式介绍体积重量(kg)的计算方法为:长度(cm) x 宽度(cm) x 高度(cm) ÷ 6,000(如快件一般是以陆路运输, 其体积重量会以除数 12,000计算。
计算方法都是按地区及市场惯例决定, 当中可能各有差异。
)/cn/sc/delivery_step/enquiry/rate_enquiry.html根据计算公式可知,每个商品必须拥有长宽高体积重量等信息,作为计算运费的初始数据。
配送方式的界面需有填写运费单价的功能,与原系统计费单价区分。
下单运费显示页面显示出详细的包装信息给客户查看,展示运费是如何计算出来的最后犹豫计费方式复杂涉及到最优包装的选取还需写一个具体的计费例子/BhBHWa总而言之就是具体的图文描述加上耐心,认真的写需求文档,耐心的回复技术员的疑问,相信开发出来的功能一定会让您满意的。
二次开发手册

二次开发手册随着科技的不断发展,软件已经成为人们日常生活和工作中不可或缺的一部分。
为了满足用户对软件功能的需求,开发者经常需要进行二次开发。
本手册旨在为二次开发者提供一套完整、实用的指南,帮助其更好地进行软件二次开发工作。
1.二次开发的基本概念二次开发是指在已有软件的基础上,根据用户需求进行功能扩展、改进或定制的过程。
通过二次开发,可以充分利用已有软件的优点,提高软件的功能性和易用性。
2.二次开发的流程二次开发的流程包括需求分析、设计、编码、测试和部署等阶段。
其中,需求分析阶段是关键,需要充分了解用户需求,确定二次开发的具体内容和目标。
设计阶段需要对系统架构、数据库结构、界面设计等进行详细规划。
编码阶段需要按照设计要求进行编码实现。
测试阶段需要对二次开发的功能进行全面测试,确保其符合预期要求。
部署阶段需要对二次开发的软件进行部署和上线。
3.二次开发的技术实现在进行二次开发时,需要了解和掌握相关的技术实现。
例如,对于Web应用程序的二次开发,需要了解HTML、CSS、JavaScript等前端技术,以及后端语言如Python、Java等。
对于移动应用程序的二次开发,需要了解iOS或Android平台的开发技术。
此外,还需要了解数据库技术、版本控制技术等。
4.二次开发的常见问题及解决方案在进行二次开发时,可能会遇到一些常见问题,如兼容性问题、性能问题、安全性问题等。
针对这些问题,需要采取相应的解决方案。
例如,对于兼容性问题,需要进行充分的测试和调优;对于性能问题,需要进行性能分析和优化;对于安全性问题,需要加强安全措施和防范措施。
5.案例分析为了更好地说明二次开发的实践过程,本手册提供了几个案例分析。
这些案例涵盖了不同领域和不同规模的二次开发项目,通过分析这些案例的成功经验和问题所在,可以为读者提供宝贵的启示和帮助。
通过这些案例的分析和学习,读者可以更好地理解二次开发的实践操作和关键要点,为自己的二次开发工作提供指导和实践经验借鉴。
微信公众平台二次开发解决方案

微信公众平台二次开发解决方案篇一:微信公众平台二次开发手册微信二次开发手册1. 准备工作1) 申请微信服务号,进行微信认证;2) 成为开发者:申请成功后,从网页上登录微信公众平台,点击“开发者中心”,输入“接收微信平台转发消息的统一URL”和“TOKEN”提交成为开发者。
(这两个参数后面还可以修改)3) 获取AppId 和AppSecret :成为开发者后,在“开发者中心中”页面,可获取AppId和AppSecret两个参数。
2. 项目搭建及配置创建一个web项目,还需将包添加到项目中。
下载地址:提取码:6eb1包提供主要两个功能:a) 微信转发请求处理器WeiXinServlet,主要做以下事件:1接收微信转发的消息;2对消息进行封装成对象WeiXinMessage;3把消息对象WeiXinMessage转递给微信菜单处理器WeiXinProcessor进行业务逻辑处理,微信菜单处理器返回微信响应对象WeiXinPacket4把微信响应对象WeiXinPacket解析成xml消息,并响应微信请求。
b) 微信接口统一调用类WeiXinInterface,目前提供以下功能:(后面会按需要增加) 1获取全局Access_Token 2创建微信菜单3查询微信菜单4删除微信菜单在中配置用于接收微信消息的ServletWeiXinServletPROCESSOR_PACKAGEWeiXinServlet/weixin参数说明:1) PROCESSOR_PACKAGE:微信公众号功能菜单的处理器的Java包路径。
:将准备工作中输入的TOKEN 和开发都中心页面获取到的AppId和 AppSecrets三个参数配置到properties中。
3. 微信菜单管理微信菜单接口中要求第三方将自己的菜单数据以JSON 格式提交。
因此首先要在项目创建一个JSON格式的文件,把自定义菜单配置好。
按以下示例配置: { "button": [{"type": "click","name": "今日歌曲","key": "V1001_TODAY_MUSIC"},{"type": "click","name": "歌手简介","key": "V1001_TODAY_SINGER"},{"name": "菜单","sub_button": [{"type": "view","name": "搜索","url": "/"},{"type": "view","name": "视频","url": "p> },{"type": "click","name": "赞一下我们","key": "V1001_GOOD"}]}]}说明:button数组中存放的是一级菜单,最多存放三个一级菜单;sub_button数组中存放的是二级菜单,最多存放的5个二级菜单;支持两种菜单类型click:点击菜单将在微信中直接显示消息;view:点击菜单将打开微信网页;包中WeiXinInterface类提供微信菜单的创建,查询,删除接口。
【必看】微擎应用模块二次开发文档和初级教程手册

【必看】微擎应⽤模块⼆次开发⽂档和初级教程⼿册01.微擎的应⽤模块⽂件夹是addons,所有微擎应⽤模块都在这个⽂件夹⾥⾯。
02.运⾏环境推荐PHP版本5.6以上,mysql5.6,操作系统最好是Linux(centos)。
03.微擎允许对外公开访问的⽂件,就三个,分别是根⽬录api.php(微信开发者URL地址),/web/index.php(电脑端),/app/index.php(⼿机端)。
04.微擎的数据库等配置信息,放置在:/data/config.php⽂件中。
05.在微擎的manifest.xml配置⽂件中,direct的属性值要设置为0,⽐如:<entry * direct="0">,如果设置成1,有可能出现不经过⾝份权限验证,就可以直接访问。
06.微信开发者URL地址那⾥接收到微信推送过来的数据,主要⽤processor.php⽂件来响应。
07.addons/zhiwu55com/template/*,这个⽂件夹下⾯都是电脑端的模块⽂件。
08.addons/zhiwu55com/template/mobile/*,这个⽂件夹下⾯都是⼿机端的模块⽂件,⽐如:链接应⽤⼊⼝的那些页⾯模块⽂件,都在这个⽂件夹下⾯。
09.微擎的数据表,默认以ims_开头。
10.常量:IA_ROOT,微擎程序安装⽬录,⽰例值:D:/wwwroot/wwwzhiwu55cn,注意:返回的值最后没有斜杠。
11.常量:ATTACHMENT_ROOT,微擎程序附件⽬录,⽰例值:D:/wwwroot/wwwzhiwu55cn/attachment12.常量:MODULE_ROOT,当前模块⽬录,⽰例值:D:/wwwroot/wwwzhiwu55cn/addons/hzw_zhiwu13.当需要引⼊include⽂件的时候,尽量以IA_ROOT为基准路径引⼊,⽐如:include_once IA_ROOT .'/addons/wwwzhiwu55cn/inc/hzw.class.php'14.$_W(⼤写W),是系统中最为重要的全局变量,微擎系统中很多常⽤的数据都存储在这个变量之中15.$_GPC,全局请求变量,获取 $_GET,$_POST,$_COOKIES 中的变量,即$_GPC=array_merge($_GET,$_POST,$_COOKIES);16.$_W[‘siteroot’],⽹站URL根⽬录,⽰例值:/17.$_W[‘siteurl’],原始链接,⽰例值:/web/index.php?m=xxx&c=yyyy&do=hzw,即当前浏览器地址栏那⾥的地址。
使用函数式或命令式进行二次开发的流程

使用函数式或命令式进行二次开发的流程下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!一、什么是函数式和命令式编程。
1.1 函数式编程。
思途旅游CMS二次开发模板自定义编写规范及上传说明

思途CMS二次开发模板自定义编写规范模板上传机制说明1,用户模板上传目录为’templetes/smore/uploadstemplets’,所有用户通过后台上传的模板压缩文件都保存到’templetes/smore/uploadstemplets/zip’用户目录下,上传后程序会自动解压.(注意:压缩文件名不能与其它压缩文件重名,否则会覆盖文件):2.自定模板结构如下图其中,CSS为当前模板使用的CSS样式,images存储相应图片,js存储javascript文件,taglib存储当前模板可使用的标签,function.php里可定义当前模板使用的函数公共文件,index.htm为模板文件(注意:index.htm为固定格式不能更改).3.模板中引用js,css,自定义函数方法(getUserCss,getUserJs)引用css:{sline:php}Helper_Archive::getUserCss(‘当前目录名/css/css文件’);{/sline:php},如我当前模板目录为”header”,需要引用我当前模板下css目录下的css.css文件,则可以通过以下代码”{sline:php}Helper_Archive::getUserCss(‘header/css/css.css’){/sline:php}”.引用js:{sline:php}Helper_Archive::getUserJs(‘当前目录名/js/js文件’);{/sline:php},例子同上.引用function:{sline:php}Helper_Archive::getUserFunc(“当前目录名/php文件”);{/sline:php},如我引用当前模板目录下的function.php,则可以通过以下代码实现: {sline:php}Helper_Archive::getUserFunc(“当前目录名/function.php”);{/sline:php}4.全局变量:cfg_user_templet_dir:指向”/templets/smore/uploadtemplets/”目录,如:引用自定义模板内的一个图片”header.jpg”,则可以通过这样的方法进行引用,”<img src=”{sline:global.cfg_user_templet_dir/}/header/images/header.jpg”>”;5.模板中引用模板:使用{sline:include file=’模板文件路径’/}当调用的是当前模板目录的模板时使用语法{sline:include‘当前目录/模板名称’/}当调用的系统模板时使用语法{sline:include‘模板名称’/}/215.可上传模板页面,可参见后台模板管理:/22。
[原创]织梦dedeCMS二次开发文档手册,文件详解以及数据库结构字段说明
![[原创]织梦dedeCMS二次开发文档手册,文件详解以及数据库结构字段说明](https://img.taocdn.com/s3/m/5cb7fe24192e45361066f592.png)
本文由IT 我爱看网整理,对于学习dedecms数据库结构提供帮助。
织梦dedeCMS二次开发文档手册,文件详解以及数据库结构字段说明1、程序核心程序目录及简介/include目录程序核心目录config_base.php 环境定义文件。
用于检测系统环境,定义工作目录,保存数据库链接信息,引入常用函数等,建议不要修改。
config_hand.php 系统配置文件。
定义系统常用的配置信息定义,可从后台管理直接生成该文件。
config_passport.php 通行证文件config_rglobals.php 检测系统外部变量config_rglobals_magic.php 同上inc_archives_view.php 用于浏览文档或对文档生成HTMLinc_arclist_view.php 用于浏览频道列表或对内容列表生成HTMLinc_arcmember_view.php 用于浏览会员发布的文档inc_arcpart_view.php 用于解析和创建全局性质的模板,如频道封面,主页,单个页面等inc_arcsearch_view.php 用于文档搜索inc_arcspec_view.php 用于浏览所有专题列表或对专题列表生成HTMLinc_channel_unit.php 用户解析特定频道的附加数据结构信息inc_channel_unit_functions.php 系统共用函数集合inc_downclass.php 防采集随机字符串函数inc_freelist_view.php 用于对特定内容列表生成HTMLinc_functions.php 可供用户使用的函数集合inc_imgbt.php GetTypeidSelMemberinc_memberlogin.php 用于用户登录及获得会员状态inc_photograph.php 用于处理系统中的图片,例如水印,缩略图等inc_photowatermark_config.php 图片处理参数定义inc_rss_view.php 用于浏览频道RSS或对RSS生成静态文件inc_separate_functions.php SpGetArcList函数,用于获得文档列表inc_sitemap.php 用于生成网站地图inc_type_tree.php 用于选择栏目的目录树inc_type_tree_member.php 同上,会员使用inc_typelink.php 用于显示文章的位置和栏目位置等inc_typeunit_admin.php 用于频道管理时的一些复杂操作,主要用于后台inc_typeunit_menu.php 同上inc_userlogin.php 用于管理员登录inc_vote.php 用于管理投票jump.php 用于超链接跳转pub_charset.php 共用字符处理函数,GB/UTF-8/Unicode/BIG5等互换pub_collection.php 用于采集pub_collection_functions.php 采集用函数pub_datalist.php 后台管理用数据列表pub_datalist_dm.php 同上,不使用模板pub_db_mysql.php 用于操作数据库pub_dedehtml2.php 用于采集中的HTML解析pub_dedehtml.php HTML解析器pub_dedetag.php 用于dede模板标签解析pub_httpdown.php 用于下载http中的资源pub_oxwindow.php 后台程序扩展pub_splitword_www.php 织梦分词算法validateimg.php 验证码vdimgck.php 验证码/inc 共用函数目录inc_fun_funAdmin.php 获取拼音码等函数inc_fun_funString.php html代码处理等函数inc_fun_SpGetArcList.php 获取文档列表SpGetArcList对于菜鸟来说,config_base.php,这个文件,当你的程序出现问题,需要覆盖。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《HongCMS开发者手册》--二次开发指南模板语法参阅:/bbs/?thread-index-fid-1-tid-19.htm一、前言:说实在的,很怕写文档,特别是这种开发文档,无法知道别人需要什么样或者说什么程度的描述,自己高兴的事别人未必开心。
所以,这个文档总的想法是将重点介绍清楚,让用户了解系统脉络,细枝末节的技术google就行了。
前些日子因参与其它公司的项目,研究了些PHP开发框架,如CI, ThinkPHP等这些,觉得这些小型框架对我来说很不爽,因为本人一直喜欢4S的开发理念,即:Safe, Simple, Small, Stable (安全,简单,小巧,稳定),不刻意追求大而全的东西,认为简单是最美的。
这和性格有关,也很难改变。
就拿CI来说吧,前台游客只要一进入网站,就有至少1个数据库写入及1个session生成,一个session在服务器就要写入一个文件,试想如果网站同时来了1万个用户访问,文件IO开销巨大,说得不好听点,服务器可能就死球了。
对于框架,业内一直有这么一句话:学之者生,用之者死。
本人觉得这句话很值得琢磨一下。
如今没有几个公司不要求程序员有MVC的开发理念,MVC确实有好处,本人也喜欢,但也不去刻意追求. 当然也有反对MVC的, 包括PHP创始人。
HongCMS开发中有V和C,M基本没有,因为不需要或者说使用M编程反而累了,但完全可以使用Model,系统框架已经为它设计好了,程序包models/目录下有实例。
特别是后台admin/models/目录下的admin.php, 它就是后台用户(管理员)的模型。
说白了,模型就是一些类啦。
HongCMS系统框架APP.php非常小巧,仅5K大小,再加上XTpl超小模板引擎,HongCMS核心非常小巧、快速和高效。
有基础的朋友,如果对HongCMS进行二次开发,或是参考其中的理念,足可以开发出大型系统来。
这些思想,加上多年做双语企业网站的经验,同时有朋友要我开发一个中英双语的小型企业网站,于是HongCMS出生了。
对于一些从事网站开发的朋友来说,我想HongCMS更适合成为你的工具,像很多使用weenCompany的用户能赚钱一样,使用HongCMS当然能赚钱,同时在技术上会有更大的提高。
对于一般用户,HongCMS是中英文网站系统,对于懂程序的朋友来说,它是小型开发框架,开发由你。
二、目录布局与重要文件介绍1. 根目录下的几个文件.htaccess: 此文件是apache服务器下的伪静态规则文件,另外此文件还限制了浏览器可以访问或进入哪个目录或文件夹,增强了系统安全性。
如果你添加了一个目录如blog,这个目录下独立安装了另一个blog系统,那么需要修改htaccess文件,以便允许浏览器访问blog目录。
index.php: HongCMS是单入口系统,所有前台页面的访问均从index.php进入。
robots.txt: 此文件列举了一些目录,禁止SEO进入。
基本上HongCMS除index.php 文件夹都不希望SEO进入,因为SEO在其它目录或文件上抓不到有用的信息,但如果进入的话,反而可能会增加网站负担。
2. Admin目录: 后台管理目录, 里面存放的是后台管理入口文件,控制器和模型,也就是说,基本上后台管理的功能由其中的文件来完成。
3.0.0版本开始,后台管理有自己独立的入口文件index.php,同时后台管理目录可以任意修改。
后台管理相当于一个独立的模块。
3. Cache目录: 此目录动态保存模板的缓存文件,一般不需要手动管理其中的文件。
4. Config目录: 系统配置目录,此目录下的config.php保存数据库连接信息等;settings.php保存网站基本设置信息,可以在后台管理中设置其中的信息,当然也可以手动直接修改其中的内容。
5. Controllers目录: 前台控制器文件目录,基本上前台的功能由此目录下的文件完成。
6. Images目录: 此目录为预留目录,在.htaccess中已经设置好了浏览器可以进入此目录,方便用户上传一些图片等,然后在文章内容中直接显示。
7. Includes目录: 此目录存放函数库文件或系统加载的核心文件,在core.php中对系统加载进行基本配置,functions.admin.php后台管理的函数库文件,mon.php前台需要使用的函数库文件,functions.global.php里面是前后台都需要使用的函数库文件。
8. Install目录: 系统安装目录,在浏览器中进入此目录安装HongCMS。
9. Medels目录: 前台模型文件目录。
10. Public目录: 此目录存放前台模板文件,后台模板文件,前后台的JS文件等。
11. System目录: 系统框架核心目录,其中的backup目录用于保存后台管理中的数据库备份文件,errors目录中是系统出错时显示的错误信息页面。
plugins目录的是系统需要使用的一些类文件,如前后台的基础类文件,数据库类文件,JSON类文件,XTpl模板引擎类等等。
system目录中的APP.php文件最重要,它是系统框架的核心类文件。
可以这么说,系统的MVC开发模式由它确定。
有兴趣的朋友可以仔细地分析一下此文件,有利于理解框架。
12. Uploads目录: 很明显,此目录将保存的是后台管理中各种上传文件,包括编辑器中上传的各种文件。
三、core.php系统加载配置核心文件上面介绍了HongCMS为单入口网站系统,基本上所有的动态功能或动作均由根目录下的index.php文件引导完成。
打开index.php文件,我们看到引入了includes/core.php,可见core.php文件在系统加载方面起作核心作用。
core.php需要仔细了解一下,其中最重要的是__autoload自动加载魔术函数,这个函数作用巨大,它允许实例化扩展类或模型类时,不需要在程序中加载相应的类文件,PHP服务器会自动加载相应的类文件,所以说它是魔术函数。
这个自动加载函数主要是配合核心框架文件system/APP.php工作的。
APP.php是核心框架文件,它的主要工作是对URL进行路由,简单地说就是把URL中的各种参数解释成相应的PHP程序文件去执行相关动作。
APP.php文件的工作机制,有兴趣的朋友可以分析它,此文件很小仅5K,但它是框架的核心。
然后,在core.php文件中定义了一些前后台公共的常量,判断前台语言。
再就是实例化数据库类,为后面的工作做准备。
做二次开发的话,此文件一定要比较熟悉,因为它为系统加载运行做了最开始的一些准备工作。
四、URL路由及动作控制APP.php核心框架文件的主要工作是解释URL中传递的各种参数到相应的程序中,然后由程序中的动作来完成相关功能,也就是说APP.php行使的路由功能。
下面,我们来看几个具体的实例:例1: / admin/ index.php / products / save网址/ 模块/ 入口文件/ 控制器/ 动作上例中,admin是指admin模块,HongCMS按模块来保存关联的程序,后台管理的控制器和模型程序放在admin目录下,我们称admin为后台模块。
products指示APP系统需要调用哪个控制器,由admin和products组合确定了需要加载admin/controllers/products.php文件,这是由APP.php框架决定的。
打开admin/controllers/products.php文件,其中可以看到,这是一个类文件,类名为c_products,由SAdmin后台管理基类扩展而来。
类名c_products中的"c_"表示它是一个控制器, 为什么不直接使用products作为类名呢?这是为了同模型类区分开来,以便APP 框架能自动识别。
控制器的类名做了如此约束后,模型类的类名就可以自由书写了,达到互不冲突的目的。
这里SAdmin基类我们稍后介绍。
save指admin/controllers/products.php文件中的save()函数,这个函数来完成产品信息的保存功能,看似就像做了某个动作,不难理解。
参数可以通过URL来传递,如 / admin / index.php / products / save / ?id=1,也可以这样写 .... save?id=1,当然也可以传递多个参数。
例2:加载哪个控制器呢?首先它肯定是访问根目录下的index.php文件,由于在URL中没有指定控制器和动作,APP 框架默认解释为index / index,系统将加载根目录下controllers目录的index.php文件,并执行此文件中的index()函数,此函数显示首页的相关内容。
也就是说,如果URL中未指定控制器时为index控制器,未指定动作时为index动作。
可以看出相当于: / index.php / index / index,如果希望APP完成默认的路由,必须由后至前的方式来省略书写URL。
比如 / index.php / news就解释成了news控制器的index动作。
五、伪静态及URL处理函数现在的搜索引擎(SEO)已经非常厉害了,即使是动态页面也能很好地抓取其中的内容。
当然伪静态更有利于SEO,同时URL也更简单。
如上面/admin/index.php/products/save,开启了伪静态后,则可以写成:/admin/products/save。
有时用户的服务器或空间不支持伪静态,有时又支持,HongCMS后台基本设置中有一个开关,当服务器支持伪静态时,可以开启伪静态功能,不支持时可以关闭。
那么我们在页面或程序里URL的写法就不能固定,需要随着伪静态功能的开关而相应变化。
因而HongCMS 默认有2个伪静态处理函数,前台URL()和后台BURL()。
这2个函数分别保存在functions.global.php和functions.admin.php文件中。
以前台URL处理函数URL()为例,我们在程序中或模板页面中如何写URL呢?有了这个函数,可以说非常简单了。
如上index.php/news/index如何写呢?前台PHP程序中这样写:URL('news'),index.php文件名肯定不需要写了(index动作也不需要写,因为没有指定动作时默认为index动作),URL()这个函数会根据伪静态是否开启自动加上index.php。
传送参数也容易,如:URL('news/index?id=888&name=someone')前台模板中如何调用URL函数呢?很简单,在需要显示URL的地方使用花括号(这是模板语法,请参阅: /bbs/?thread-index-fid-1-tid-19.htm)上例中,如果写在模板里,这样写:{echo URL('news/index?id=888&name=someone')},呵呵,echo输出并加一个花括号而已。