《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.基础业务单据方案定义基础业务单据适用于采用主-明细结构的业务流程,主表和明细表为一对多的关系,并通过一个字段关联(一般为DJID),如采购入库单、处方划价单等。
如图:1.1方案总体方案编号:业务方案的编号,每个方案都有一个编号,编号不能重复。
方案名称:方案的名称,同时也是方案窗体的标题。
单据标识: 单据编号的开头部分单据编号长度: 单据编号的总长度单据编码格式: YYYY 代表四位的年,YY代表两位的年,MM:两位月,DD:两位日,CZY:操作员编号,用'+'号连接各个部分也可使用固定字符。
如:'SFD'+YYYY+MM+DD ,设置编码格式后单据标识不起作用,但同样受到编号长度的约束。
主明细关键字段: 定义主表和明细表的关键字段,一般为'DjID'明细序号字段: 定义明细表的序号字段,一般为'Xh'(如图:)1.2基础业务单据方案主要构成要素:主表SQL: 定义单据数据主表的数据来源的SQL语句。
主表用来存储单据主体数据,如单据编号、日期、操作员、以及明细表的汇总信息等。
明细表SQL: 定义单据明细数据来源的SQL语句。
明细表用来存储明细数据一次检索SQL: 定义辅助明细数据输入的检索数据来源的SQL语句;一次检索数据只作为数据的来源,不存储数据。
插入明细数据时,扫描明细数据字段和检索数据字段,如果字段名称相同则将检索数据写入该字段。
二次检索SQL: 定义在一次检索完成之后的辅助明细数据输入的检索数据来源的SQL语句;是一次检索的补充。
比如做门诊收费功能时用做选择处方。
保存执行SQL: 定义单据在保存时执行的SQL语句。
1.3相关设置:显示一次检索:设置是否显示检索栏。
(有的业务单据不需要检索栏)数字码字段:当输入框中输入纯数字时,将以设置的数字码字段进行动态查找汉字码字段:当输入框中含有汉字时,将以设置的汉字码字段进行动态查找拼音码字段:当输入框中为字母时,将以设置的拼音码字段进行动态查找条形码字段:当输入框中为输入条码时,将以设置的条形码字段定位检索数据二次检索输入提示:设置二次检索时的输入提示二次检索后结束输入:设置是否在二次检索后结束输入(具体参看图形)1.4打印设置报表名称:打印样式的文件名,不用加后缀单据SQL语句:打印数据来源的SQL语句保存后默认打印:设置保存后是否默认为打印1.5颜色设置明细网格显示选项背景色:指定明细网格的背景色,默认为白色行醒目显示条件:定义明细数据行醒目显示的条件,当满足条件时,该行将以指定的颜色显示。
安全中间件二次开发手册

安全中间件二次开发手册安全中间件是一类常用于网络应用和系统的软件组件,它们的目标是保护应用程序免受各种安全威胁。
常见的安全中间件包括防火墙、入侵检测系统、反病毒软件等。
本文将介绍如何进行安全中间件的二次开发,以满足特定应用场景的需求。
1. 了解安全中间件的基本原理和架构:在进行二次开发之前,首先要了解所使用的安全中间件的基本原理和架构。
这包括它们的工作方式、关键功能和核心组件等。
通过了解这些基本概念,可以更好地理解和使用安全中间件的接口和功能。
2. 分析所需功能和需求:在进行二次开发之前,需要明确所需的功能和需求。
这可以通过与其他开发人员、系统管理员和用户的沟通来完成。
根据实际需求,可以确定需要增加、修改或删除安全中间件的特定功能。
3. 阅读和理解安全中间件的文档和代码:安全中间件通常提供详细的文档和示例代码,用于帮助开发人员了解其接口和功能。
仔细阅读和理解这些文档和代码可以帮助开发人员更好地理解和使用安全中间件。
4. 修改或扩展安全中间件的功能:根据实际需求,可以通过修改或扩展安全中间件的功能来满足特定的需求。
这可以通过编写插件、修改配置文件或添加新的模块来实现。
在修改或扩展安全中间件时,需要遵循安全中间件的开发规范和最佳实践。
5. 测试和调试安全中间件:在进行二次开发之后,需要对修改后的安全中间件进行测试和调试。
这可以通过编写单元测试、功能测试和性能测试来完成。
通过测试和调试,可以发现和修复潜在的问题和错误,确保安全中间件能够正常工作。
6. 文档和发布安全中间件:在完成二次开发之后,需要对安全中间件进行文档编写和发布。
文档应包括安装指南、用户手册和开发人员文档等。
通过撰写详细的文档,可以帮助其他开发人员和用户更好地理解和使用安全中间件。
总结:安全中间件的二次开发需要开发人员具备一定的安全知识和开发经验。
通过了解安全中间件的基本原理和架构,并根据实际需求修改或扩展安全中间件的功能,可以满足特定场景下的需求。
技术开发培训平台二次开发规范

技术开发培训平台二次开发规范1. 引言技术开发培训平台是为了提供教育机构、企业等组织的培训需求而开发的系统。
为了满足不同用户的特定需求,可能需要进行二次开发。
本文档旨在规范技术开发培训平台的二次开发,保证开发过程的顺利进行及开发代码的可维护性。
2. 开发环境要求在进行技术开发培训平台二次开发时,需要使用以下开发环境:•编程语言:推荐使用Java或Python进行二次开发,同时也支持其他主流编程语言。
•开发工具:推荐使用集成开发环境(IDE)进行开发,如IntelliJ IDEA、Eclipse等。
•数据库:技术开发培训平台使用关系数据库存储数据,二次开发时需要根据需求选择适合的数据库,如MySQL、Oracle等。
3. 项目结构规范在进行技术开发培训平台二次开发时,应按照以下项目结构规范进行开发:- src/- main/- java/ # Java代码- resources/ # 资源文件- web/ # 前端代码和静态文件- test/ # 测试代码- doc/ # 文档- build.gradle # 项目构建脚本•src/main/java/:存放Java代码,包括后端API、数据模型、业务逻辑等。
•src/main/resources/:存放资源文件,如配置文件、模板文件等。
•src/main/web/:存放前端代码和静态文件,如HTML、CSS、JavaScript等。
•src/test/:存放测试代码,包括单元测试、集成测试等。
•doc/:存放文档,包括需求分析、设计文档等。
•build.gradle:项目构建脚本,用于管理项目依赖、编译、打包等。
4. 代码规范为了保证二次开发代码的可维护性,应遵循以下代码规范:•代码命名:采用驼峰命名法,类名使用大写开头,方法名和变量名使用小写开头。
命名应具有描述性,避免使用缩写和单词简写。
•代码缩进:使用4个空格进行缩进,不使用Tab键。
•每行最大长度:每行代码不超过80个字符。
二次开发使用手册.

二次开发使用手册条屏通讯控件thtplg.ocx(V3.3)一、说明每一个功能使用,均须先调用TP_SZLG_CardInit打开通讯口初始化,及在使用完成后,须调用TP_SZLG_CardEnd()关闭通讯口。
thtplg.ocx控件中,功能函数可以独立使用,点阵、方式函数,视需要可分开,混合使用。
二、功能函数1、TP_SZLG_CardInit(Com As Long, Port As Long, ScreenNo As Long)说明:通讯开始初始化输入参数:Com :串行口Port:波特率,使用19200ScreenNo :屏号,1-255,0为广播屏号,所有屏可接收,但无返回值。
输出参数:0-失败。
(串口被占用,或无效)1-成功。
2、TP_SZLG_CardEnd()说明:关闭通讯口输入参数:无输出参数:无3、TP_SZLG_Reset() '复位说明:显示屏复位输入参数:无输出参数:0-失败。
1-成功。
4、TP_SZLG_Screen_Send(Buffer() As Byte)说明:加载屏参数输入参数:Buffer: 13字节数组0-(不使用)1-驱动极性,0-低亮,1-高亮2-显示时间,1-显示3-接收超时复位,1-使用4-颜色,0-双色,1-单色5-亮度(1-64)6-宽度(4到24个汉字)7-高度(1到4行)8-扫描方式(16:1/16,8:1/8,4:1/4,2:1/2,0:静态扫描)9-备用10-备用11-备用12-备用输出参数:0-失败。
1-成功。
5、TP_SZLG_Screen_Seek(Buffer() As Byte)说明:读屏参数输入参数:Buffer: 13字节数组输出参数:0-失败。
1-成功。
Buffer:返回13字节数据1-屏号2-波特率参数,0-9600,1-19200,2-28800,3-576003-幕数4-极性,0-负极性低亮,1-正极性高亮5-时间,0-不显示,1-显示6-超时复位,0-不使用,1-使用超时复位功能7-颜色,0-双色,1-单色8-亮度(1-64)9-宽度(4到24个汉字)10-高度(1到4行)11-扫描方式(16:1/16,8:1/8,4:1/4,2:1/2,0:静态扫描)12-存储,1-24c64 8K,2-24c256 32K,3-24c512 64K6、TP_SZLG_Screen_Time()说明:校时输入参数:无输出参数:0-失败。
永中Office二次开发技术手册完整版

永中O f f i c e二次开发技术手册HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】永中O f f i c e二次开发技术手册前言一、宏和二次开发在实现办公自动化的今天,我们经常会碰到这样一个问题,在使用办公软件时总要重复流程一样的相同操作,这使工作变得繁琐而枯燥,能不能提供一种方法,使这些相同操作能够通过一个命令自动完成或者使用更为简单的途径得到呢?宏因此而产生了。
宏是指用一个符号名称所代表的一段程序代码,将定义代码段按实际参数进行加工,形成实际代码直接插入程序的执行序列中。
许多应用程序具有建立宏的功能,它们可以把操作人员为解决某项问题而执行的一些操作命令记下来,形成一个文件段,并且用一个符号表示。
当同样的问题重复执行时,只要输入代表这一系列命令的宏命令即可。
这些代码可以是由用户编写,也可以通过办公软件提供的宏录制功能记录下简单任务而生成。
结合自己的需要,利用宏充分开发应用程序潜在的功能,可以获得使用上最大限度的满足,这也就是通常意义上的二次开发,即利用宏语言扩展宿主程序的功能、集成不同类型的数据以实现办公软件在具体事件中的解决方案。
永中Office为您提供了非常丰富而全面的宏API(API表示应用程序接口),通过这些API您可以非常自如操作永中Office。
并且使您在实现自定义的解决方案时更加得心应手,更灵活的发挥永中Office 的集成优势。
二、本手册结构第一部分为二次开发环境。
永中Office的二次开发,我们推荐,一是利用永中Office自带的宏编辑器进行开发,二是可以在Eclipse上开发。
第二部分为应用和API我们在第2章给出了二次开发结构,也即永中Office二次开发的类层次图。
有了该类层次图,就可以了解永中Office二次开发中的层次和对象了。
第3章为总控,这里有二次开发应用的总入口第4章为电子表格应用第5章为文字处理应用,自由表格也在这一章第6章为幻灯片演示第7章为公共组件,包含2个主要组件:自选图形和图表第三部分为其它语言调用与应用第8章为永中Office COM组件开发第9章为嵌入浏览器样例第10章为嵌入Java应用程序样例附录附录一为永中Office 二次开发技巧集,我们列举了一些二次开发技巧附录一为永中Office 二次开发FAQ我们希望起到抛砖引玉的作用。
GPower CMS二次开发手册

Gpower CMS 二次开发手册通元软件版权所有,2004目录1. 概述 (3)2. 总体结构 (4)2.1. 系统架构 (4)2.2. 框架式开发 (4)2.3. 系统分层实现 (6)3. Framework开发 (8)3.1. Spring Framework (8)3.2. 实体引擎组件 (8)4. Gpower CMS开发接口 (12)4.1. Gpower CMS模块 (12)4.2. 业务实体描述 (13)4.3. 核心业务组件 (13)4.3.1. 内容管理服务组件 (13)4.3.2. 内容发布服务组件 (14)4.4. 模板引擎扩展 (14)1.概述Gpower CMS是业界领先的网站内容管理系统,专门用于国内大中型企业、政府、ICP 的网站建设。
Gpower CMS的核心开发技术人员曾在搜狐、中华网开发内容管理,并为多家大型企业建立了门户网站。
Gpower CMS结合了研发人员多年的内容管理系统经验,充分吸取了国外著名内容管理厂商Vigenette的StoryServer,Interwoven的TeamSite等产品的特点,采用了国际领先的Java、XML技术和组件化的开发。
系统完全基于浏览器的操作界面,可轻松创建与管理企业、政府的内部与外部网站。
Gpower CMS采用Struts + Spring Framework + Hibernate的先进技术,可无缝支持JSP 应用服务器(Tomcat、Resin)和J2EE服务器(Weblogic、WebSphere、JBoss),支持Oracle、SQL Server、MySQL、DB2等数据库。
根据客户的需要,从小型系统到分布式系统,可无缝扩展与伸缩。
2.总体结构2.1. 系统架构Gpower CMS的系统架构如下:此架构为多层架构:✧表现层:根据客户的需要,支持多种表现形式,包括浏览器、Windows客户端(C++Builder、Visual .NET)✧业务层:基于Framework的结构,Framework包括基础核心组件:全文检索、事件触发、消息管理、对象关系映射等。
二次开发开发流程

二次开发开发流程二次开发流程指的是在已有的软件或系统的基础上进行修改和扩展,以满足用户的特定需求。
下面将详细介绍二次开发的流程,并探讨其中的关键步骤和注意事项。
一、需求调研和分析在开始二次开发之前,首先需要进行需求调研和分析。
这一步通常包括与用户的沟通,明确用户的需求和期望,并分析现有软件或系统中的问题和不足之处。
通过需求调研和分析,可以为后续的开发工作提供指导和准备。
二、编写开发计划在需求调研和分析的基础上,编写开发计划是非常重要的一步。
开发计划应该明确开发的目标、范围、里程碑和交付日期等,以及需要的人力和物力资源。
同时,还要考虑风险管理和质量保证等方面的内容。
编写开发计划的目的是为了确保开发工作的顺利进行,并提高开发效率和质量。
三、系统设计和架构在有了清晰的开发计划之后,就可以进行系统设计和架构的工作了。
系统设计应该考虑到二次开发的目标和需求,并采用适当的设计模式和架构原则。
在系统设计中,可以涉及到数据模型的设计、业务逻辑的定义、页面布局和交互设计等方面。
通过系统设计和架构的工作,可以为后续的编码和测试工作提供指导和依据。
四、编码和测试编码和测试是二次开发流程中的关键步骤。
在编码阶段,开发人员需要根据系统设计和架构的要求,进行具体的编码工作。
编码应该遵循良好的编码规范和开发标准,并进行适当的模块化和复用。
在编码过程中,还需要进行代码的版本控制和文档的维护。
测试阶段是为了验证系统的正确性和稳定性。
测试工作可以分为单元测试、集成测试和系统测试等不同的层次。
在测试过程中,需要编写测试用例和测试脚本,并进行相应的测试工作。
测试结果应该被记录和分析,以便及时修复和改进。
五、部署和维护在完成编码和测试之后,就可以进行系统部署和维护的工作了。
部署工作包括将开发完成的代码和资源部署到实际的生产环境中,并进行必要的配置和调试。
维护工作包括对系统的运行状态进行监控和维护,以及进行必要的升级和补丁的更新。
在二次开发流程中,还有一些关键的注意事项需要特别关注:1.沟通与合作:在整个开发流程中,与用户和团队成员的有效沟通和合作是非常重要的。
微软CRM系统二次开发步骤以及注意事项教学提纲

微软CRM系统二次开发步骤以及注意事项微软CRM系统的二次开发主要包括四个方面:1)自定义实体的设置;2):站点图的设置;3)IS V.Config文件(实体页面导航条以及功能菜单)的配置;4)客户端JavaScript的设计。
特别注意:对系统中进行的二次开发之后一定要在自定义界面选择“发布”,不然是不能使用的。
一:自定义实体的设置微软CRM系统提供按照自己需求要求,对CRM系统功能进行扩充,因此也涉及到用户自定义实体的设计工作,在白沙集团,按照烟草行业的需求,以及结合微软CRM系统的要求,做出了一个烟草行业的自定义实体的数据库文件,见《微软CRM自定义实体》,在该文件中定义了31张自定义数据库表。
进入自定义设置的方法是依次按照系统导航条选择:设置→设置→组织设置→系统设置→自定义,进入自定义设置界面,然后“新建”,按照系统以及自定义实体数据库表的要求,对系统进行表的添加,注意的是:对于自定义的表名系统是要提供默认前缀的,系统默认的是new_,同时系统要求提供一个真正的数据库表的名称和一个显示名称,还要注意的是系统只提供数据库的一对多,和多对一的关系,不提供多对多关系的数据库设计。
添加完表后,就要添加相关的表字段的设置,一般的字段设置直接添加,涉及到表与表之间的关联字段,则是通过字段之间的关系设置完成的,有专门的“关系”菜单进行设置,如果要想直接通过关系,直接在页面上直接显示,则要把关系字段进行影射,注意的是在做关系和影射时,两个字段的类型要一定一样才行。
以下为在实体定义中的关系和影射设置图:定义完好表以及字段之后,则要对表单和视图进行设计,以便在页面上进行显示操作,以下是设置表单的页面界面:在上图中的Add a Tab表示添加一个标签,如上图中的Detail;Add a Section表示添加一个节,如上图中的“Business Information”,Add Fields表示在那个节中添加具体的字段,如“Ownership”;Add an IFrame表示添加一个页面框架,跟html中的IFrame是一致的,用来引用外部的页面。
二次开发培训文档

二次开发培训文档一、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JA V ASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录Crm..Workflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放二、说明一个JSP页面,一个JA V A程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“select labelname from htmllabelinfo where indexid=413 and languageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.3、JA V A程序的基本组成在ECOLOGY中开发JA V A程序建议继承weaver.general. BaseBean,在BaseBean 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
三、几个常用的底层类的说明最基本的底层类,数据库操作类,上传下载文件,如何构建缓存,基本的工具类Ecology系统底层包开发指南.doc四、页面权限控制的说明,怎样在页面中引用权限,怎么样新增一个权限,如何在新开发的模块上引入权限控制在这一部分将描述:新增的页面如何保持和ECOLOGY的风格保持一致;新增的页面上引用ECOLOGY中的权限;新增的页面上引用新的ECOLOGY中还没有的权限;1、可以根据<泛微协同商务系统(Ecology)_JSP式样编写指南>保证新开发的页面在风格上和原有系统保持一致泛微协同商务系统(Ecology)_JSP式样编写2、使用ECOLOGY分页控件实现数据的分页显示泛微分页控件使用帮助及规范.doc3、引用系统中的权限首先从系统的权限设置中找到需要引用的权限名称,如下如找到“地址类型维护”这个权限,其ID为41,然后通过“select rightdetailfrom systemrightdetail where rightid=41”得到其rightdetail=“AddAddressType:Add”,那么在JSP页面中通过如下语句,就可以使得只有的“地址类型维护”这个权限用的用户可以查看该页面<% if(!HrmUserVarify.checkUserRight("AddAddressType:Add ", user) ) {response.sendRedirect("/notice/noright.jsp");return;}%>4、新增新的权限控制新功能的查看新增功能模块添加权限控制.d o c五、系统的人员组织结构的介绍1、主要数据结构HrmResource(人员基本信息表).doc HrmSubCompany(分部信息表).docHrmDepartment(部门信息表).doc2、如何从缓存中获取人员信息(对三个缓存的简单介绍)六、对流程,文档数据的存放说明(主数据,明细数据,一般信息等在数据库中如何存放,主要为了考虑报表的问题)1、文档的主要数据结构文档信息的主要存储表DOCDETAIL:文档信息存储表,主要存放文档的基本信息DOCDETAILCONTENT: 文档内容存放表(如果是ORACLE数据库,如果文档的类型是HTML文档,那么文档内容存放在该表中,SQLSERVER数据库不用该表)DOCIMAGEFILE:文档,附件关联表,此表记录文档和附件(WORD,EXCEL格式文档在数据库中按照附件格式存放)的关系(即一个文档关联了几个附件)IMAGEFILE:附件路径存放表,此表记录了文档的附件(或者WORD,EXCE)存放在文件服务器上的位置DOCSHARE:文档共享表SHARINNERDOC:文档共享明细表,此表存放了该表具体共享给那些用户了DocDetail.doc ImageFile.doc DocImageFile.doc shareinnerdoc.docDocShare.doc2、流程的主要数据结构这里主要介绍流程的数据存放结构及如果通过流程类型获取到流程的字段信息,流程的载体分为表单和单据两类,表单和单据的区别在于:所有使用表单的流程数据存放在同一个表中,而单据每个单据对应着一张独立的数据表1、表单一、对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联Workflow_formdetail:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联二、通过流程的类型如何获取该流程使用了Workflow_form和Workflow_formdetail表中哪些字段在Workflow_form和Workflow_formdetail表中存放了大量字段,所有使用表单的流程的字段都在这两个表中,如何获取每个流程使用了那些字段呢?A、找到流程的类型ID,假定为wfidB、找到流程用了哪个表单select formid from workflow_base whereid=wfid and isbill=’0’C、获得该表单用到了哪些主字段:select(select fieldlable from workflow_fieldlable where workflow_fieldlable.fieldid=workflow_formfield.fieldid and langurageid=7andworkflow_fieldlable.formid=workflow_formfield.formid)as name,(select fieldname from workflow_formdictwhere id=fieldid)from workflow_formfield whereformid=上面获取的FORMID and (isdetail is null orisdetail=’’)哪些明细字段:select(select fieldname fromworkflow_formdictdetail where id=fieldid)fromworkflow_formfield where formid=上面获取的FORMID andisdetail=’1’2、单据对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表只存放Workflow_requestbase和单据表之间的关系信息各单据主表:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联,如何获取该表呢:A、找到流程的类型ID,假定为wfidB、找到流程用了哪个单据select formid form workflow_basewhere id=wfid and isbill=’1’C、通过单据ID可以获取到该单据使用的字段Select * from workflow_billfield where billid= formidD、通过单据ID找到其用了那个表存储流程主信息,那个表存储流程明细信息select tablename from workflow_bill where id= formidselect tablename from workflow_billdetailtablewhere id= formid各单据主明细表:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联3、流程的其他信息表结构流程处理人情况表Workflow_currentoperator:此表存储了流程当前未操作者,已操作者等信息workflow_requestlog 流程处理意见表:此表存储了流程处理人处理过的审批意见workflow_requestviewlog 流程的查看日志workflow_requestbase.doc workflow_bill.doc workflow_base.doc workflow_currentoperator.docworkflow_requestLog.doc七、如何新建,定制一个客户化的单据新建单据的好处,在于可以比较容易到把新建单据表中的信息和其他信息进行一些必要的操作八、系统已经有可开发的接口的培训1、短信接口可以通过该接口实现其他短信网关或者硬件短信设备进行在OA中发送短信的操作通用短信接口实现方式及使用说明.doc2、单点登录接口ECOLOGY提供了通过用户映射和模拟其他系统登录窗体的方式实现多系统之间的单点登录接口Ecology系统接口指南---单点登录篇.doc3、数据源和计划任务接口在ECOLOGY系统中,可以定义多个其他系统的数据连接,通过该连接可以和其他系统的数据库直接连接,同时也可以设置“计划任务”,系统根据设置定时制定执行设定的计划。
最好最实用的二次开发教程

最好最实⽤的⼆次开发教程 最好最实⽤的⼆次开发教程 ◆⼆次开发 什么是⼆次开发? ⼆次开发,简单的说就是在现有的软件上进⾏定制修改,功能的扩展,然后达到⾃⼰想要的功能和效果,⼀般来说都不会改变原有系统的内核。
为什么要⼆次开发? 随着信息化技术的不断发展,IT⾏业涌现出了⼀系列优秀的开源作品,其作者或是个⼈,或是项⽬⼩组,或是软件公司。
选择和应⽤这些优秀的开源软件,并在此基础上进⾏符合业务需求的⼆次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障。
这就是我们常听的:站在巨⼈的肩膀上,你将看的更远。
所以国内很多公司需要⼆次开发的⼈才。
怎么做⼆次开发? 第⼀,你要有这个开源产品的所⽤语⾔的语⾔基础,能看懂代码是最基本的。
第⼆,你要对这个开源产品的功能和使⽤要有⽐较熟悉,因为你熟悉了,你才知道⼀个需求下来,你要改什么,什么是系统⾃带的,⼤概要怎么改。
第三,你要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核⼼是哪⾥,附属功能是在哪⾥。
简单点说,就是数据库,代码逻辑,⽂件⽬录的熟悉。
第四,根据你的需求,然后利⽤开源产品的内核,进⾏系统的扩展和修改,以达到你的需求介绍PHP的开源产品的⼆次开发的基本要求: 第⼀,基本要求:HTML(必须要⾮常熟悉),PHP(能看懂代码,能写⼀些⼩系统,如:留⾔板,⼩型CMS),Mysql(⾄少会⼀种数据库),Javascript(能看懂,能改现成的⼀些代码),Div+Css(能进⾏界⾯的调整,明⽩CSS是怎么使⽤的) 第⼆,熟悉开源产品的使⽤,⽐如 Dedecms,你要知道怎么登录,怎么新建栏⽬,怎么添加⽂章,模板标签的使⽤⽅法,模型的概念和使⽤⽅法等等⼀些功能 第三,要熟悉这个开源产品的数据库结构,还要理解⾥⾯核⼼⽂件的内容,⽐如:数据库类怎么使⽤,常 ⽤的安全过滤是怎么做的,模板引擎⼜是怎么使⽤的等等⼀些核⼼内容。
还要知道这个开源产品的⽬录结构,就 是说,你要知道哪是放模板的,哪⾥是做控制的,哪⾥是放样式的,等等 第四, 熟悉你的需求,对需求进⾏解读,然后确定如何对这个开源产品进⾏修改和扩展 经过⼆次开发后,你能获取到的是什么呢? 你能完成你的需求,你能积累经验,这⾥的经验有你⾃⼰的,也有别⼈的。
- 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输出并加一个花括号而已。