二次开发文档

二次开发文档
二次开发文档

Jspxcms无侵入式插件开发(二次开发)教程之一:概述

Jspxcms支持无侵入式插件和二次开发,无需修改系统原有代码,即可无缝整合Entity、Service、Controller、功能菜单、权限、标签、国际化等功能。

系统中“插件--简历管理”就是以这种方式实现的,下面就以“简历管理”讲解Jspxcms插件和二次开发的方法。

本帖隐藏的内容需要回复才可以浏览

配置文件位置:/WEB-INF/conf/plugin。

所有的配置文件都必须在这个目录,在该目录下的配置文件会自动加载。在该目录下新建自己的文件夹,可以是任何名字,如:abc、novel等,本例为plug。即/WEB-INF/conf/plugin/plug

配置文件说明

application.properties:功能菜单、权限、国际化、Entity都与这个文件相关。

context-dao.xml:Dao的加载。

context-service.xml:Service的加载。

controller-back.xml:后台Controller的加载。

controller-fore.xml:前台Controller的加载。

context-directive.xml:标签的加载。

其他与插件开发相关的文件目录

/WEB-INF/messages/plugin/plug:后台国际化文件位置

/WEB-INF/messages/plugin/plugfore:前台国际化文件位置

/WEB-INF/views/plug:后台jsp文件位置

/files/1/bluewise/plug_resume.html:插件的前台模版

插件源代码包名:com.jspxcms.plug

Jspxcms无侵入式插件开发(二次开发)教程之二:菜单与权限

本帖隐藏的内容需要回复才可以浏览

菜单和权限配置文件:/WEB-INF/conf/plugin/plug/application.properties

一级菜单配置(分号为分割符)

1.menu.650=navigation.plug;nav.do?menuId=650;nav_plug

复制代码

650:是后台导航一级菜单的编号,编号大小决定菜单的前后位置。其值可以根据需要调整,如330、970,但不要与系统菜单或其他插件菜单重复。系统菜单通常为menu.100,menu.200,menu.600等,系统菜单定义文件在

/WEB-INF/conf/application.properties

navigation.plug:菜单名称。这里使用了国际化,也可以直接用中文,比如“我的插件”。

nav.do?menuId=650:菜单链接地址。其中650需与前面的值一样。

nav_plug:权限值。其中plug通常与配置文件目录名称一样。如目录为abc,则应为nav_abc。也可不一样,但不能与其他一级菜单权限名称一样。

二级菜单配置(分号为分割符)

1.menu.650.100=resume.management;plug/resume/list.do;plug:resume:list;create@plug:resume:create;copy@plug:res

ume:copy;edit@plug:resume:edit;save@plug:resume:save;update@plug:resume:update;delete@plug:resume:delete

复制代码

650:二级菜单所属的一级菜单编号。

100:二级菜单编号。其值的意义和一级菜单编号一样,用于确定二级菜单的前后位置。

resume.management:二级菜单名称。可以直接用中文,如“小说管理”。

plug/resume/list.do:功能菜单的链接地址。需与Controller中的地址对应,否则会找不到页面。

plug:resume:list:功能菜单的权限。需与Controller中list方法的权限对应,否则会报没有权限。

create@plug:resume:create:新增按钮的权限值。其中create是国际化,可以用直接用中文,如“新增@plug:resume:create”。其中plug:resume:create是该按钮的权限值,需与Controller中对应的create方法权限值一致。

copy@plug:resume:copy:意义和上面一样,后面的以此类推。

com.jspxcms.plug.web.back.ResumeController代码片段

1.package com.jspxcms.plug.web.back;

2.@Controller

3.@RequestMapping("/plug/resume")

4.public class ResumeController {

5. @RequiresPermissions("plug:resume:list")

6. @RequestMapping("list.do")

7. public String list(......) {

8. ......

9. }

10.

11. @RequiresPermissions("plug:resume:create")

12. @RequestMapping("create.do")

13. public String create(......) {

14. ......

15. }

16. ......

17.}

Jspxcms无侵入式插件开发(二次开发)教程之三:Entity

本帖隐藏的内容需要回复才可以浏览

实体类Entity配置文件:/WEB-INF/conf/plugin/plug/application.properties

1.entityManagerFactory.packagesToScan.plug=com.jspxcms.plug.domain

复制代码

plug:通常与配置文件所在目录一样,也可不一样,但不能与其他相关配置同名。

com.jspxcms.plug.domain:Entity所在包名。

不使用主键自增策略,将主键放到数据库中的一个表里。

1.create table plug_resume

2.(

3. f_resume_id int not null,

4. f_site_id int not null,

5. f_name varchar(100) not null comment '姓名',

6. f_post varchar(100) not null comment '应聘职位',

7. f_creation_date datetime not null comment '投递日期',

8. f_gender char(1) not null default 'M' comment '性别',

9. f_birth_date datetime comment '出生日期',

10. f_mobile varchar(100) comment '手机',

11. f_email varchar(100) comment '邮箱',

12. f_expected_salary int comment '期望薪水',

13. f_education_experience longtext comment '教育经历',

14. f_work_experience longtext comment '工作经历',

15. f_remark longtext comment '备注',

16. primary key (f_resume_id)

17.)

18.engine = innodb;

19.alter table plug_resume comment '简历表';

20.alter table plug_resume add constraint fk_plug_resume_site foreign key (f_site_id)

21. references cms_site (f_site_id) on delete restrict on update restrict;

复制代码

1.@Entity

2.@Table(name = "plug_resume")

3.public class Resume implements java.io.Serializable {

4. private Integer id;

5.……

6.

7. @Id

8. @Column(name = "f_resume_id", unique = true, nullable = false)

9. @TableGenerator(name = "tg_plug_resume", pkColumnValue = "plug_resume", table = "t_id_table",

pkColumnName = "f_table", valueColumnName = "f_id_value", initialValue = 1, allocationSize = 1)

10. @GeneratedValue(strategy = GenerationType.TABLE, generator = "tg_plug_resume")

11. public Integer getId() {

12. return this.id;

13. }

14.

15. public void setId(Integer id) {

16. this.id = id;

17. }

18.……

19.}

复制代码

需注意以下三个值,其中plug_resume为表名:

https://www.360docs.net/doc/593347771.html, = "tg_plug_resume", pkColumnValue = "plug_resume"

2.generator = "tg_plug_resume"

Jspxcms无侵入式插件开发(二次开发)教程之四:Dao

本帖隐藏的内容需要回复才可以浏览

Dao配置文件:/WEB-INF/conf/plugin/plug/context-dao.xml

1.

2. transaction-manager-ref="transactionManager"

3. entity-manager-factory-ref="entityManagerFactory"

4. factory-class="https://www.360docs.net/doc/593347771.html,mon.orm.MyJpaRepositoryFactoryBean"

5. repository-impl-postfix="Impl">

6.

复制代码

其中com.jspxcms.plug.repository为dao接口所在包。

Dao使用了SpringDataJPA技术。SpringDataJPA官网:http://projects.spring.io/spring-data-jpa/

1.package com.jspxcms.plug.repository;

2.public interface ResumeDao extends Repository, ResumeDaoPlus {

3. public Page findAll(Specification spec, Pageable pageable);

4. public List findAll(Specification spec, Limitable limitable);

5. public Resume findOne(Integer id);

6. public Resume save(Resume bean);

7. public void delete(Resume bean);

8.}

复制代码

ResumeDao接口中的方法不用实现。以下接口中的方法均可放到ResumeDao,且无需实现:

https://www.360docs.net/doc/593347771.html,.springframework.data.repository. CrudRepository

https://www.360docs.net/doc/593347771.html,.springframework.data.repository. PagingAndSortingRepository

https://www.360docs.net/doc/593347771.html,.springframework.data.jpa.repository. JpaRepository

https://www.360docs.net/doc/593347771.html,mon.orm. MyJpaRepository

复制代码

需要实现的dao方法,放到ResumeDaoPlus接口中。

1.package com.jspxcms.plug.repository;

2.public interface ResumeDaoPlus {

3. public List getList(Integer[] siteId, Limitable limitable);

4.}

复制代码

1.package com.jspxcms.plug.repository.impl;

2.public class ResumeDaoImpl implements ResumeDaoPlus {

3. @SuppressWarnings("unchecked")

4. public List getList(Integer[] siteId, Limitable limitable) {

5. JpqlBuilder jpql = new JpqlBuilder();

6. jpql.append("from Resume bean where 1=1");

7. if (ArrayUtils.isNotEmpty(siteId)) {

8. jpql.append(" and bean.site.id in (:siteId)");

9. jpql.setParameter("siteId", Arrays.asList(siteId));

10. }

11. return jpql.list(em, limitable);

12. }

13. private EntityManager em;

14. @PersistenceContext

15. public void setEm(EntityManager em) {

16. this.em = em;

17. }

18.}

复制代码

其中JpqlBuilder用于拼装jqpl语句、设置参数,并可处理分页问题。

https://www.360docs.net/doc/593347771.html,mon.orm.JpqlBuilder

Jspxcms无侵入式插件开发(二次开发)教程之五:Service

本帖隐藏的内容需要回复才可以浏览

Service配置文件:/WEB-INF/conf/plugin/plug/context-service.xml

1.

2.

3.expression="org.springframework.stereotype.Controller"/>

4.

复制代码

其中com.jspxcms.plug.service.impl为Service的实现类所在包。

1.package com.jspxcms.plug.service.impl;

2.@Service

3.@Transactional(readOnly = true)

4.public class ResumeServiceImpl implements ResumeService {

5. public Page findAll(Integer siteId, Map params,

6. Pageable pageable) {

7. return dao.findAll(spec(siteId, params), pageable);

8. }

9. public RowSide findSide(Integer siteId,

10. Map params, Resume bean, Integer position,

11. Sort sort) {

12. if (position == null) {

13. return new RowSide();

14. }

15. Limitable limit = RowSide.limitable(position, sort);

16. List list = dao.findAll(spec(siteId, params), limit);

17. return RowSide.create(list, bean);

18. }

19. private Specification spec(final Integer siteId,

20. Map params) {

21. Collection filters = SearchFilter.parse(params).values();

22. final Specification fsp = SearchFilter.spec(filters,

23. Resume.class);

24. Specification sp = new Specification() {

25. public Predicate toPredicate(Root root,

26. CriteriaQuery query, CriteriaBuilder cb) {

27. Predicate pred = fsp.toPredicate(root, query, cb);

28. if (siteId != null) {

29. pred = cb.and(pred, cb.equal(root.get("site")

30. . get("id"), siteId));

31. }

32. return pred;

33. }

34. };

35. return sp;

36. }

37. private ResumeDao dao;

38. @Autowired

39. public void setDao(ResumeDao dao) {

40. this.dao = dao;

41. }

42. ......

43.}

复制代码

该类使用到JPA的Specification查询方式。

可实现后台列表点击表头,按任意列排序;列表页按任意字段查询;编辑页面上一条、下一条功能。

Jspxcms无侵入式插件开发(二次开发)教程之六:Controller

本帖隐藏的内容需要回复才可以浏览

Controller后台配置文件:/WEB-INF/conf/plugin/plug/controller-back.xml

1.

2.

3.

复制代码

其中com.jspxcms.plug.web.back为后台Controller包所在位置。

1.package com.jspxcms.plug.web.back;

2.@Controller

3.@RequestMapping("/plug/resume")

4.public class ResumeController {

5. @RequiresPermissions("plug:resume:list")

6. @RequestMapping("list.do")

7. public String list(

8. @PageableDefaults(sort = "id", sortDir = Direction.DESC) Pageable pageable,

9. HttpServletRequest request, org.springframework.ui.Model modelMap) {

10. Integer siteId = Context.getCurrentSiteId(request);

11. Map params = Servlets.getParameterValuesMap(request,

12. Constants.SEARCH_PREFIX);

13. Page pagedList = service.findAll(siteId, params, pageable);

14. modelMap.addAttribute("pagedList", pagedList);

15. return "plug/resume/resume_list";

16. }

17. @RequiresPermissions("plug:resume:create")

18. @RequestMapping("create.do")

19. public String create(Integer id, org.springframework.ui.Model modelMap) {

20. if (id != null) {

21. Resume bean = service.get(id);

22. modelMap.addAttribute("bean", bean);

23. }

24. modelMap.addAttribute(OPRT, CREATE);

25. return "plug/resume/resume_form";

26. }

27. @Autowired

28. private ResumeService service;

29.}

复制代码

其中RequestMapping为访问地址,RequiresPermissions为权限代码,需与/WEB-INF/conf/plugin/plug/application.properties 中的菜单权限配置相吻合。

Controller前台配置文件:/WEB-INF/conf/plugin/plug/controller-fore.xml

1.

2.

3.

复制代码

其中com.jspxcms.plug.web. fore为前台Controller包所在位置。

1.package com.jspxcms.plug.web.fore;

2.@Controller

3.public class ResumeController {

4. public static final String TEMPLATE = "plug_resume.html";

5. @RequestMapping(value = "/resume.jspx")

6. public String resumeForm(Integer page, HttpServletRequest request,

7. org.springframework.ui.Model modelMap) {

8. Site site = Context.getCurrentSite(request);

9. Map data = modelMap.asMap();

10. ForeContext.setData(data, request);

11. ForeContext.setPage(data, page);

12. return site.getTemplate(TEMPLATE);

13. }

14. @RequestMapping(value = "/resume.jspx", method = RequestMethod.POST)

15. public String resumeSubmit(@Valid Resume bean, HttpServletRequest request,

16. HttpServletResponse response, org.springframework.ui.Model modelMap) {

17. Response resp = new Response(request, response, modelMap);

18. Site site = Context.getCurrentSite(request);

19. service.save(bean, site.getId());

20. return resp.post();

21. }

22. @Autowired

23. private ResumeService service;

24.}

复制代码

其中模版文件位置为:/files/1/bluewise/plug_resume.html

Jspxcms无侵入式插件开发(二次开发)教程之七:标签

本帖隐藏的内容需要回复才可以浏览

标签配置文件:/WEB-INF/conf/plugin/plug/controller-back.xml

1.

复制代码

在/WEB-INF/conf/plugin/plug/application.properties中加上配置:

1.freemarkerVariables.ResumeList=PlugResumeList

复制代码

其中ResumeList为标签名。

1.package com.jspxcms.plug.web.directive;

2.public class ResumeListDirective implements TemplateDirectiveModel {

3. public static final String SITE_ID = "siteId";

4.

5. @SuppressWarnings({ "rawtypes", "unchecked" })

6. public void execute(Environment env, Map params, TemplateModel[] loopVars,

7. TemplateDirectiveBody body) throws TemplateException, IOException {

8. if (loopVars.length < 1) {

9. throw new TemplateModelException("Loop variable is required.");

10. }

11. if (body == null) {

12. throw new RuntimeException("missing body");

13. }

14. Integer[] siteId = Freemarkers.getIntegers(params, SITE_ID);

15. if (siteId == null && params.get(SITE_ID) == null) {

16. siteId = new Integer[] { ForeContext.getSiteId(env) };

17. }

18. Sort defSort = new Sort(Direction.DESC, "creationDate", "id");

19. Limitable limitable = Freemarkers.getLimitable(params, defSort);

20. List list = service.findList(siteId, limitable);

21. loopVars[0] = env.getObjectWrapper().wrap(list);

22. body.render(env.getOut());

23. }

24.

25. @Autowired

26. private ResumeService service;

27.}

Jspxcms无侵入式插件开发(二次开发)教程之八:国际化

本帖隐藏的内容需要回复才可以浏览

国际化配置:在/WEB-INF/conf/plugin/plug/application.properties中加上

后台国际化文件

1.messageSource.basenames.plug=/WEB-INF/messages/plugin/plug/plug

复制代码

前台国际化文件

1.messageSource.basenames.plugfore=/WEB-INF/messages/plugin/plugfore/plugfore

复制代码

其中messageSource.basenames.plug中的plug通常为配置文件所在文件夹的名称,可以改为其他名字,但不能与其他相关配置重名。

/WEB-INF/messages/plugin/plug/plug为国际化文件所在文件夹和文件名。

十年相伴 共创经典 Discuz!系列经典产品回顾

《站长》杂志第28期内容推介 十年相伴共创经典Discuz!系列经典产品回顾 站长朋友们,是否还记得Discuz! 官网那些5年前的老ID旧面孔?是否还记得曾经的Discuz! 1.0 、Discuz! 1.0 和Discuz! 5.5“长”得什么模样?在过去的十年里,senz在站长的陪伴下一路走来,推出了数款经典产品,成为社区动力,引领社区潮流发展。在即将迎来senz十周年之际,《站长》杂志特别回首过去十年来的数款经典Discuz! 产品,以及那些始终陪伴左右的站长朋友,谨以对更多陪伴Discuz! 、支持Discuz! 的站长们表示由衷的感激。 Discuz! 1.0 ——Discuz! 起点站 大C在开发Discuz! 1.0 的时候,一定不会想到之后商业化的Discuz! 1.0 、免费开源的Discuz! 4.0 、以及现在“跨界融合”的Discuz! X 系列;Discuz! 1.0 的各项功能、模板也可

能是Discuz! 系列中最简陋的,最朴素的,但没有它,也就没有后来的数个经典产品。所以,Discuz! 1.0 就像是Discuz! 系类产品的“起点站”和“加油站”一样,不断的激励着Discuz! 的后续产品一步步的改进、创新,引领社区发展潮流。 许多的草根站长,不也是这样一步步发展起来的吗?许多业已取得成功的站长,在初建社区的时候,也未曾想过能取得今天的人气与盈利,只是抱着许三多“不抛弃、不放弃”的信念从小做大,根据市场需求逐步改进自己的产品,一步步走向了成功。这种“从小到大”、“坚持不放弃”、“以市场为导向”的理念不仅是说Discuz! 1.0 ,也同样适用于社区。 Discuz! 2.0 ——商业化

phpcms_v9二次开发手册

PHPCMS二次开发教程 文件目录结构 根目录 | – api 接口文件目录 | – caches 缓存文件目录 | – configs 系统配置文件目录 | – caches_* 系统缓存目录 | – phpcms phpcms框架主目录 | – languages 框架语言包目录 | – libs 框架主类库、主函数库目录 | – model 框架数据库模型目录 | – modules 框架模块目录 | – templates 框架系统模板目录 | – phpsso_server phpsso主目录 | – statics 系统附件包 | – css 系统css包 | – images 系统图片包 | – js 系统js包 | – uploadfile 网站附件目录 | – admin.php 后台管理入口 | – index.php 程序主入口 | – crossdomain.xml FLASH跨域传输文件 | – robots.txt 搜索引擎蜘蛛限制配置文件 | – favicon.ico 系统icon图标

PHPCMS V9 核心文件说明 模块与控制器 模块: phpcms v9框架中的模块,位于phpcms/modules目录中每一个目录称之为一个模块。即url访问中的m。 访问content模块示例:https://www.360docs.net/doc/593347771.html,/index.php?m=content 控制器: phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为abc的控制器,那么他的命名为abc.php即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。如果您创建了一个abc.php在 test模块下,那么我们在浏览器里面输入URL:https://www.360docs.net/doc/593347771.html,/index.php?m=test& c=abc 二次开发技巧 如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过“MY_*.php”的形式进行二次开发。 例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立"MY_index.php"

discuz X2二次开发帮助文档

相信有不少人热衷于基于修改原有系统文件所做的插件,当然了解程序文件功能是最重要的,下面我把Discuz! X2.0主要的程序文件功能说一下。我只是整理,不是自己原创编辑的,所有权归原创作者所有哦。 Tips: Q:针对说明的文件是? A:我只基于原版文件对upload目录中基本的程序文件(php,htm,js,除了极少数无关紧要的)进行解释,其余文件(如图片文件),一般不做说明 Q:某些目录下空白的index.htm是用来做什么的? A:用来防止列目录的 Q:文件名颜色和标识的意义是? A:粗体表示这个文件比较重要,除非你非常了解其功能,否则修改错误会导致全站瘫痪;斜体表示这个文件已被加密,一般情况下修改没有意义;下划线表示这个文件一般99.99%的修改是用不上的,了解即可 绿色的是函数库文件,蓝色的是常量调用文件,红色的是系统全局核心文件 Q:文件名命名有什么特别规律吗? A:有的,一般inc的是调用文件,func是函数库文件,class是库文件,lng的是语言包文件,了解这些后缀能快速掌握文件功能。 Q:我看了你的帖子,可是我还是看不懂文件内是什么意思啊? A:这个嘛,还是要有一定基础了,一般掌握SQL,PHP和Htm你就可以去改文件做你要的功能了,这个不是我的任务了哦。一般来说,如果随便指个地方,你能在1分钟内说出大概位置及所在的文件,那么你基本就算合格了。不过我个人认为最重要的还是多改多读,在实践中提高自己的能力 下面开始了,请看你的upload目录里面的文件,表述的格式依次为文件名,功能描述等等 先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这些文件中,而是在其调用的文件中 admin.php 系统站点管理入口文件 api.php Discuz!合作应用入口文件(例如漫游、支付宝什么的都走这里) connect.php QQ互联入口文件 cp.php 应用入口文件 crossdomain.xml 数据交互文件,如果在里面定义其它站点的地址,那么这两个不同站点就可以交互数据 favicon.ico图标文件,显示在浏览器的标题栏 forum.php 论坛入口文件 group.php 群组入口文件

CATIA二次开发文件_VB

CATIA二次开发文件 第一课:CATIA V5自动化及脚本语言结构内容列表: CATIAV5自动化及脚本语言介绍 VB、VBScript、VBA之间的区别 宏的兼容性、结构及文件 进程中的宏 2.1运行一个宏 2.2在工具栏上添加一个宏 外进程的编程 3.1 使用VBA或VB 运行外进程 例子:从Excel里导出螺钉 3.2使用Windows Scripting Host运行外进程 3.2.1Windows Scripting Host 下的VBScript 例子:“BoltVBScript.vbs” 3.2.2Windows Scripting Host 下的JavaScript 例子:“BoltJavaScript.js” 3.3用HTML运行外进程 3.3.1用VBScript在HTML里运行外进程 例子:“BoltVBScript.html” 3.3.2用JavaScript在HTML里运行外进程 例子:“BoltJavaScript.html”

1.C ATIA自动化及脚本语言概述 通用在Unix和NT平台上 无论是在NT平台还是Unix平台上,脚本语言允许你使用宏以一个非常简单的方式来对CA TIA V5进行编程。 CA TIA V5使用了NT平台下的VB脚本和Unix平台下的BASIC脚本中相同的部分,所以我们在两个平台下可以运行相同的宏。 在NT平台下 自动化允许CATIA与其他程序共享对象,如EXCEL,WORD,VISUAL BASIC。 CA TIA可以使用WORD/EXCEL对象,反之也相同。 在UNIX平台下 将来的CATIA的版本里,CATIA将允许同Java共享自己的对象,这将为Unix平台和NT平台提供完整的兼容性。 CATIA V5 自动化:概述(仅限NT平台) 自动化允许在不同的进程之间通讯 COM:(对象组件模型):COM是微软公司提出的目的在不同程序中共享对象标准。Automation:Automation是一种微软公司的技术,目的是在开发环境里使用COM对象ActiveX组件是一种微软标准,目的是在开发环境里共享不同程序的对象。 OLE:(对象链接及嵌入)意味着一个文件可以被另外的一个程序的文件链接。这种链接及嵌入的对象可以被其他的程序在编辑区编辑。 Visual Basic ,VBA,VBScript之间的区别 Visual Basic(Visual Basic专业版):VB是个完全的版本。 1.可以编制独立的程序。 2.也可以创建ActiveX和程序服务器。 3.可以被编译。 4. VB提供了自己的文档——《在线帮助》 VBA(Visual Basic for Application):VBA是VB的一个子集。 1. VBA是程序中的主机,就象Word,Excel。 2.它提供了一个带有编辑器、除错器、帮助、对象浏览器、完成器的完整的开发环境。3.利用它的Tools-Reference菜单可以声明使用的对象库。这在完成和对象浏览器之间建立了一个通道。 VBScript(Visual Basic Script):VBScript是VB的一个子集。

Discuz教程

Discuz教程 插件制作的基本思路是:(初学者适用) 1.形成插件思路 2.制作插件界面 3.构架程序模块 4.搭建存储数据 5.填充功能语句 6.检查应用错误 7.完善插件功能 前言:为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家。本贴内容由本人定期更新。本贴只介绍Discuz!中部分技术点,本贴紧属个人观点,不足之处,请各位多多指教,在下先此谢过!。“Discuz!”在下文中简称“DZ”。要弄DZ二次开发,必须至少具备如下技能:1)能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的) 2)扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用 3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳 4)熟悉使用Discuz!的各项功能 一)Discuz!的文件系统目录 注:想搞DZ开发,就得弄懂DZ中每个文件的功能。 a) Admin:后台管理功能模块 b) Api:DZ系统与其它系统之间接口程序 c) Archiver:DZ中,用以搜索引擎优化的无图版 d) Attachments:DZ中,用户上传附件的存放目录 e) Customavatars:DZ中,用户自定义头像的目录 f) Forumdata:DZ缓存数据的存放目录 g) Images:DZ模板中的图片存放目录 h) Include:DZ常用函数库,基本功能模块目录 i) Ipdata:DZ统计IP来路用的数据 j) Plugins:DZ插件信息的存放目录 k) Templates:DZ模板文件的存放目录 l) Wap:DZ无线,Wap程序处理目录 二)必须记熟Discuz!数据库设计的每个表的功能,每个表中每个字段的功能。 关于DZ数据库设计文档,请参阅DZ相关的项目文档(请从本贴附件中下载) 三)Discuz!的流程控制 a) 后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2 || admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为action.inc.php(*.inc.php),并存放在admin目录下,如执行:admincp.php?action=dodo,相当于执行admin目录下的dodo.inc.php文件 b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如: 首页:index.php 会员注册:register.php; 会员登录:logging.php 发贴程序:post.php 会员信息:member.php 论坛内容:forumdisplay.php 查看贴子:member.php …大部分功能,此处不一一列出… c) DZ根目下的config.inc.php属于整个DZ系统的配置文件 四)Discuz!的数据处理过程 a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中 b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理 五)Discuz!的显示控制(网站多样式风格输出) a) 显示层就是大家通常所看到的网站风格了。DZ中每套风络分别在templates及images下对应一个风格文件的存放目录。网站风格的制作,请参阅详细的DZ风格制作文档 b) DZ网站风格文件处理的原理:其实很简单,DZ使用template.func.php中的parse_template()以PHP正则运算把htm模文件中的模板标签,转换成了PHP代码,并根据styleid保存在forumdata/templates下,这个有点像Smarty 中的技术。 六)DZ中的语言处理 a) DZ前台及后台中、英语言的实现,均是把语句定义成了语变量,然后在模板输入,语句变量的赋值,均放在模板目录中的*.lang.php文件中,DZ在生成网站风格时就加载了这相应的语言包。 七)DZ如何处理用户信息(存取、计算、更新过程)

二次开发文档

Jspxcms无侵入式插件开发(二次开发)教程之一:概述 Jspxcms支持无侵入式插件和二次开发,无需修改系统原有代码,即可无缝整合Entity、Service、Controller、功能菜单、权限、标签、国际化等功能。 系统中“插件--简历管理”就是以这种方式实现的,下面就以“简历管理”讲解Jspxcms插件和二次开发的方法。 本帖隐藏的内容需要回复才可以浏览 配置文件位置:/WEB-INF/conf/plugin。 所有的配置文件都必须在这个目录,在该目录下的配置文件会自动加载。在该目录下新建自己的文件夹,可以是任何名字,如:abc、novel等,本例为plug。即/WEB-INF/conf/plugin/plug 配置文件说明 application.properties:功能菜单、权限、国际化、Entity都与这个文件相关。 context-dao.xml:Dao的加载。 context-service.xml:Service的加载。 controller-back.xml:后台Controller的加载。 controller-fore.xml:前台Controller的加载。 context-directive.xml:标签的加载。 其他与插件开发相关的文件目录 /WEB-INF/messages/plugin/plug:后台国际化文件位置 /WEB-INF/messages/plugin/plugfore:前台国际化文件位置 /WEB-INF/views/plug:后台jsp文件位置 /files/1/bluewise/plug_resume.html:插件的前台模版 插件源代码包名:com.jspxcms.plug Jspxcms无侵入式插件开发(二次开发)教程之二:菜单与权限 本帖隐藏的内容需要回复才可以浏览 菜单和权限配置文件:/WEB-INF/conf/plugin/plug/application.properties 一级菜单配置(分号为分割符) 1.menu.650=navigation.plug;nav.do?menuId=650;nav_plug 复制代码 650:是后台导航一级菜单的编号,编号大小决定菜单的前后位置。其值可以根据需要调整,如330、970,但不要与系统菜单或其他插件菜单重复。系统菜单通常为menu.100,menu.200,menu.600等,系统菜单定义文件在 /WEB-INF/conf/application.properties navigation.plug:菜单名称。这里使用了国际化,也可以直接用中文,比如“我的插件”。 nav.do?menuId=650:菜单链接地址。其中650需与前面的值一样。

discuz数据库详解

Discuz数据表详解方便二次开发 Discuz数据表详解,方便二次开发,有时候还是感觉直接改动数据库比较方便一些 Discuz默认库的53个数据表 cdb_access (用户权限表) uid 用户id fid 论坛id allowview 允许浏览 allowpost 允许发新帖 allowreply 允许回复 allowgetattach 允许下载附件 allowpostattach 允许上传附件 cdb_adminactions 关联用户组 admingid 管理组id disabledactions 关联后的权限 cdb_admingroups 管理组权限设置(3条)admingid 管理组id alloweditpost 允许编辑帖子 alloweditpoll 允许编辑投票 allowstickthread 允许固定主题 allowmodpost 允许编辑帖子 allowdelpost 允许删除帖子 allowmassprune 允许批量删除帖子 allowrefund 允许强制退款 allowcensorword 允许过滤词语 allowviewip 允许查看用户IP信息 allowbanip 允许禁止IP allowedituser 允许编辑用户 allowmoduser 允许审核用户 allowbanuser 允许禁止用户访问 allowpostannounce 允许发布公告 allowviewlog 允许查看版主管理记录和用户评分记录 disablepostctrl 发贴不受***(不受灌水预防和最大字数等) cdb_adminnotes (后台留言表) id 后台留言id admin 留言人 access 阅读权限 adminid 管理组id dateline 发表时间 expiration 过期时间 message 留言内容

ZWCAD二次开发文档简易指南

一.概述 (2) 二.使用SDS进行二次开发 (2) SDS和ADS接口的主要差异 (2) 编译SDS应用程序 (4) 三.使用AUTOLISP进行开发 (4) 四.使用VBA/VB进行开发 (5) 五.ZWCAD的定制 (5) 屏幕菜单及其定制 (5) I MAGE菜单(图标菜单)的定制 (7) PROFILE的定制 (9) ZWCAD.LSP和ZWCAD.SDS文件的作用和定制 (10) 别名的定制 (11) 其他定制 (11)

(内部参考) 一.概述 在zwcad上可以通过二次开发来定制和扩展zwcad的功能.当前的zwcad提供AutoLISP,SDS以及Visual Basic for Applications(VBA,COM)开发包进行二次开发.在zwcad上,你也可以使用许多原来在autocad平台上开发的应用程序.例如使用autolisp编制的程序可以在几乎不用修改的情况下移植到zwcad平台.Zwcad还完整支持AutoCAD Dialog Control(DCL)语言,不需修改.目前的zwcad还不支持Object ARX,DBX. 二.使用SDS进行二次开发 SDS是一个和ADS?(AutoCAD?Development System)开发包相兼容的C/C++语言接口.大部分ads应用程序经过再编译可以直接应用于zwcad。中望建筑就是用sds sdk开发的。下面所述内容均以ads开发包为比较对象,以ads开发程序员为讲解对象.具体的sds函数说明请参考帮助文档. SDS和ADS接口的主要差异 SDS和ADS的接口差异可以直接从sds.h和ads.h这两个头文件的比较得出.主要差异如下. 1.Sds开发包的接口函数以sds_为前缀. Ads开发包的接口函数主要以ads_,acad_,and acrx_等为前缀. 在sds.h中提供了移植ads用的宏 例如#define ads_entdel sds_entdel 这样只需要在ads应用程序源代码中将#include“ads.h”以#include “sds.h”替换,并将要链接的库文件改为sds.lib编译链接即可完成从ads到sds的移植. 2.sds开发包主要扩展的函数 #if defined(_WINDOWS_) HDC*sds_getviewhdc(void); int sds_getrgbvalue(int nColor);RGB HPALETTE sds_getpalette(void); HWND sds_getviewhwnd(void); HWND sds_getmainhwnd(void); int sds_drawLinePattern(HDC h_dc,RECT rect,struct sds_resbuf*lineParam);

Discuz! 道具系统道具开发文档

Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。下面具体介绍一下相关机制和开发方法 1、道具的组成 每个道具由两部分组成,php文件和图片文件。 php文件存放在论坛include/magic目录下,命名规范为magic_inc_道具名称.php文件。图片文件存放在images/magics目录下,命名规范为道具唯一标识(小写).gif 注:其中道具名称由任意英文字母组成,道具唯一标识是在添加的时候确定的,此标识唯一,最长为3个大写英文字母 道具图片不用多说就是gif文件,下面我具体说说php文件编写规范 2、道具php文件编写详解 我们以一个道具php文件(magic_inc_close.php)为例 1.

discuz文件目录及文件总结

Discuz文件目录及文件功能总结 先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这些文件中,而是在其调用的文件中 ◆admin.php 后台管理入口文件 ◆api.php Discuz!合作应用入口文件(例如漫游、支付宝等) ◆connect.php QQ互联入口文件 ◆cp.php应用入口文件 ◆crossdomain.xml 数据交互文件,如果在里面定义其它站点的地 址,那么这两个不同站点就可以交互数据 ◆favicon.ico 图标文件,显示在浏览器的标题栏 ◆forum.php 论坛入口文件 ◆group.php 群组入口文件 ◆home.php 家园入口文件 ◆index.php 门户入口文件,功能与portal.php基本相同 ◆member.php 用户信息入口文件 ◆misc.php 网站用户常用操作入口文件,例如像评分、收藏等功能 都是走这个文件的 ◆plugin.php 插件入口文件 ◆portal.php 门户入口文件 ◆robots.txt 在这个文件中加上具体的地址,可以防止被搜索蜘蛛检 索到 ◆search.php 搜索功能入口程序 ◆userapp.php 用户应用入口程序 API目录中的文件主要是和Discuz!进行合作的商家的应用程序,一般不要也无需修改 ●api ┄┄┄外部接口 ?addons ?connect ┄┄┄腾讯互联 connect.php ┄┄┄ like.php ┄┄┄ server.php ┄┄┄ ?db ┄┄┄UCenter数据库备份接口 ?google ┄┄┄Google引擎使用 ?javascript ┄┄┄数据和广告的 JS调用 ?manyou ┄┄┄manyou应用及搜索等相关服务

二次开发培训文档

二次开发培训文档 1、ECOLOGY系统框架结构 1、主要的程序结构 Ecology Classbean 存放编译后的CLASS文件 js 系统中使用的JAVASCRIPT和VBSCRIPT脚本 Css 系统中JSP页面使用的样式 Images Images_face Images_frame 系统中使用的图片的存放目录 Crm . . Workflow 该功能分文件夹存放每个功能的文件 WEB-INF Prop 系统配置文件存放 Service 系统的接口配置文件的存放 2、说明一个JSP页面,一个JAVA程序的基本组成,如何阅读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、JAVA程序的基本组成 在ECOLOGY中开发JAVA程序建议继承weaver.general. BaseBean,在BaseBean中主要封装了两个方法:写日志文件,获 取配置文件中的参数值。

CAD二次开发手册

VBA 开发手册

第一章 VBA 入门 了解嵌入和全局 VBA 工程 AutoCAD VBA 工程是代码模块、类模块和窗体的集合,它们组合起来以执行给予的功能。工程可保存在 AutoCAD 图形中,或作为独立的文件保存。 嵌入工程是保存在 AutoCAD 图形中。当包含有这些工程的图形中 AutoCAD 打开时,他们可以自动地装载,这种方法可以很方便地分发工程给用户。嵌入工程也有它的极限,它不能打开或关闭 AutoCAD 图形,那是由于他们的函数只存在于工程所在的文档中。使用嵌入工程不需要在运行程序之前查找并装载工程文件。举个含有嵌入工程的图形的例子,当图形打开时,一个时间日志被触发。通过这样一个宏的应用可以登记并记录用户在该图形上所花费的时间。这时用户不必去记住在打开图形之前装载工程,这就是自动操作的一个很好的例子。 全局工程保存在独立的文件中,它更加通用,因为他们能在 AutoCAD 图形中运行,也能打开、关闭 AutoCAD 图形,但它在图形打开时不能自动装载。用户必须知道他们所需要的宏包含在哪个工程文件中。然而,全局工程非常容易与其它使用者共享,它可以将通用的宏做为很好的库而存在。举个例子,你保存在一个工程文件中的宏是有关多个图形的材料清单。这个宏可以在工作周期的末期由管理员运行,这样就可以收集到所有图形的信息。 在特定的时间,用户可以在同个 AutoCAD 进程中同时装载嵌入工程和全局工程。 AutoCAD VBA 工程与 Visual Basic 工程在二进制结构上是不兼容的。然而,其中的窗体、模块和类可以通过在 VBA IDE 环境中使用输入和输出 VBA 命令来在工程之间进行转换。关于 VBA IDE 的更多信息,可以查看“用 VBA IDE 编辑工程” 用 VBA 管理器组织工程 你可以使用 VBA 管理器查看装载在当前 AutoCAD 进程的所有 VBA 工程。VBA 管理器一个AutoCAD 工具,它允许你装载、卸载、保存、创建、嵌入和分离 VBA 工程。 打开VBA 管理器的步骤: 1. 在工具菜单中选择宏-VBA 管理器。 2. 或者,在 AutoCAD 中调用 VBAMAN 命令。 本节的内容: 装载现存的工程 当你装载工程到AutoCAD 中,所有的公用的子程序(也称为宏)都可以使用。 嵌入于图形中的工程在图形打开时就被装载。保存在DVB 文件中的工程必须单独装载。 装载现存的VBA 工程文件 1. 在 VBA 管理器中,使用装载项可弹出打开VBA 工程对话框。 2. 在打开 VBA 工程对话框中,选择打开的工程文件。该VBA 工程对话框允许你打开有效的DVB 文件。如果你尝试打开不同类型的文件,你将会得到出错信息。 3. 选择打开。 本章将为你介绍 AutoCAD VBA 工程及VBA 交互开发环境(VBA IDE)。尽管大部分VBA 环境在行为上都是相似的,但AutoCADVBA IDE 还是有些独有的特性。在AutoCAD 中还有些相关的命令可以用于装载工程、运行工程,或打开VBA IDE 环境。本章将概要介绍VBA 工程、VBA 命令和VBA IDE 的使用。

Jeecms二次开发相关文档(入门)

Jeecms二次开发相关文档(入门) 目录: (本文档中内容整理自网络并结合自己实际开发经验总结而来,文档后有相关内容引用出处,本处声明免责,不承担任何纠纷,文档供大家交流使用) Jeecms二次开发相关文档(入门) (1) 一、jeecms内部请求转发运行原理 (2) 二、jeecms使用freemarker标签示例及原理 (4) 1、标签使用示例 (4) 2、标签原理 (4) 3、自定义标签(实例演示说明标签用法) (7) 三、在MyEclipse工作环境中构建jeecms项目 (10) 1、搭建Jeecms的运行环境 (10) 2、安装jeecms演示系统 (10) 3、导入Jeecms项目 (10)

一、jeecms内部请求转发运行原理 Jeecms中有众多的配置文件,单xml配置文件就相当繁多,各个文件间的关联查找使用关系也不像简单的struts配置文件一样。如首页的显示过程如下。 系统架构是ssh+freemarker模板构成的,所以先要熟悉freemarker模板技术。 先看web.xml文件,其中欢迎页面有: index.jspa index.do index.html 接着再看jeecms/core/struts-core-front.xml配置文件,发现有个action的通用配置: ${namespace} ${actionName} struts收到请求以后,将请求转发到core.dynamicSystemAct这个对象,注意这个这个class并不是真正的类,是类的别名,由spring通过标注@Controller进行绑定,web应用上下文可以通过classpath自动扫描到这个类。 @Controller("core.dynamicSystemAct") public class DynamicSystemAct

A1系列二次开发手册范本

前言 本使用手册详细说明了捷宝A1平台系列抄表机(JBA188,JBA168,JBA198)的二次开发工具,开发流程,API函数,以及通讯动态库函数,请在使用前仔细阅读该使用手册,以便保证您的正确使用和工作效率,敬请妥善保管以备日后查阅之用。如发现本手册有编写错误之处,请予以指出,以便更正,!

目录 前言 (1) 二次应用程序开发说明 (3) 1.1 CBJTOOL安装 (3) 1.2编写应用程序 (3) 1.3编程注意事项: (3) 1.4编译程序 (3) 1.4.1 Cbjtool编译工具 (3) 1.4.2编译步骤 (3) 1.5下装文件 (4) 1.6工程文件操作 (4) 二次开发接口介绍 (5) 2.1数据类型 (5) 2.1.1基本数据类型 (5) 2.1.2消息 (5) 2.1.3显示区域 (6) 2.1.4光标 (6) 2.2键盘接口函数 (7) 2.3LCD接口函数 (7) 2.4底层输出函数 (8) 2.5GDI接口显示函数 (8) 2.6蜂鸣器与时钟接口函数 (12) 2.6.1 蜂鸣器函数 (12) 2.6.2 时钟接口 (12) 2.6.3 定时器接口 (13) 2.7文件操作函数 (14) 2.8数据库操作函数(BDC.H) (15) 2.9GUI组件库函数 (17) 2.10消息处理函数 (30) 2.10.1系统消息处理 (30) 2.10.2 GUI消息处理 (31) 2.11标准C数据转换函数 (32) 2.12标准C字符串函数 (33) 2.13图标资源 (34) 2.14串行通讯类 (34) 2.15权限管理类 (36) 2.16环境变量类 (36) 2.17输入法接口 (38) 2.18系统服务调用 (39)

免费建站程序大全

免费建站程序大全 如今科技日新月异,任何科技发展都是为了让事情变得更简单和快捷,互联网技术也一样,国内也出现了一批很专业的专门用于做网站的建站程序,有的甚至支持多语言,多站点,总之有一句话说得好,站在巨人肩上会看的更高,一样道理,不是每个想拥有网站的人都会编写程序,所有利用网站程序来制作网站就是一个非常省力,省时的过程,国内很多网站90%都是基于这些专业系统基础上搭建,当然,选中一个系统后你需要去熟悉这个系统功能你才能运用得很好,只需要花几天时间看看教程就可以熟练运用并建站,下面收集了国内一些比较常用和知名的程序,大家可以根据自己要做的网站类型去下载对应的系统,系统地址这里就不发了,自己百度一下就能找到(如果你这个都找不到,建议你回家种地) 用过帝国、用过新云、pageadmin 、dedecms等系统,在此,长话短说,把觉得对新手比较有用的心得稍微整理下。 1、帝国,是一个比较完整的系统,在功能上很不错,但它的免费版本在二次开发上是比较要求高的,尤其是对于新手,要读懂它的所有程序功能使用,就要花上好一段时间,如果你对语言不熟悉的话,那就更加困难了,如果是新手建议不用帝国。 2、dedecm,大家应该有听过,功能很强,算国内最成功的cms,但是要求比较高,如果要二次开发或修改,必须很熟悉php程序才可能实现 3、pageadmin,是一款值得称赞的系统,功能设计比较灵活,扩展性也很抢,很多站长使用它来建站,原因很简单,做一个网站1天就能搞定。 2、新云,界面清新,本人比较喜欢,适合做行业站,下载站点最适合不过了,国内很多知名下载站都是用新云的系统。 下面收集了一些其他类型网站系统 论坛 1、Discuz系统 2、Phpwind系统 3、BBSMAX系统 商城:用来做在线购物网站 1、Ecshop 2、ShopEX

Discuz模板引擎标签

Discuz模板引擎标签 2009-06-03 09:18 Discuz! 的模板采用近似 PHP 表达式的语法,支持的元素如下: 1. 逻辑元素包围符,该符号用于包含条件和循环元素,其中: statement1 statement2 statement3 为一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容;否则当 expr2 为真时,显示模板 statement2 内容,否则显示模板 statement3 的内容.如同 其他语言中的条件控制一样,其中 和 是非 必须的. statement 相当于 PHP 的数组循环语句 foreach($array as $value) { statement } 而 statement 相当于 PHP 的数组循环语句

foreach($array as $key => $value) { statement } 逻辑元素包围符在 { } 外面包含了 html 的注释符号 ,除了为了和信息元素 相区别外,也方便了使用 Dreamweaver 和 Frontpage 之类工具编辑模板的用户.因逻 辑元素会被识别为 html 的注释而不被显示,对于绝大多数用户,逻辑元素中的内容是 完全不需要修改的,甚至修改错一个字符就可能引起错误信息和整个系统无法运行.因 此通常您在修改模板的时候,不要修改模板的逻辑信息,更不要将逻辑信息内部元素(如 等)的位置,否则可能会导致错误.如果您的模板被不慎修改损坏,请立 即用原始模板覆盖,即可恢复. 对于高手而言,实际上外部的 是可以省略不写的,可以用于某些元素在模板 中的定位,但强烈建议普通用户不要轻易尝试. 2. { ... } 信息元素包围符,其中 {CONSTANT} 可以引用界面替换变量,其中必须为大写字母,该符号实际的作用是引用 PHP 常量 CONSTANT,因此也可以通过它来引用其他的常量内容. {lang variable} 可以在模板中引用语言变量 variable 的内容,语言变量经由 https://www.360docs.net/doc/593347771.html,ng 中数组 $language 定义. 如 {lang post_edit} 的内容在编译模板的时候被替换为 $language['post_edit'] 的内容,简体中文版的意思是 "编辑帖子". {faq variable} 可以在模板中引用论坛帮助的帮助关键字,在后台=>其他设置=》论坛帮助=》具体某个帮助的详情可以看到或者设置 3. {template name} 模板嵌入符,为了避免模板的冗长,可以使用本符号来将 name 模板的内容嵌

最全的discuz二次开发讲解教程

最全的discuz二次开发讲解教程 以下教程希望对各位读者有所帮助 前言:为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家。本贴内容由本人定期更新。本贴只介绍Discuz!中部分技术点,本贴紧属个人观点,不足之处,请各位多多指教,在下先此谢过!。“Discuz!”在下文中简称“DZ”。要弄DZ二次开发,必须至少具备如下技能: 1)能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的) 2)扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用 3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳 4)熟悉使用Discuz!的各项功能 一)Discuz!的文件系统目录 注:想搞DZ开发,就得弄懂DZ中每个文件的功能。 a) Admin:后台管理功能模块 b) Api:DZ系统与其它系统之间接口程序 c) Archiver:DZ中,用以搜索引擎优化的无图版 d) Attachments:DZ中,用户上传附件的存放目录 e) Customavatars:DZ中,用户自定义头像的目录 f) Forumdata:DZ缓存数据的存放目录 g) Images:DZ模板中的图片存放目录 h) Include:DZ常用函数库,基本功能模块目录 i) Ipdata:DZ统计IP来路用的数据 j) Plugins:DZ插件信息的存放目录 k) Templates:DZ模板文件的存放目录 l) Wap:DZ无线,Wap程序处理目录 二)必须记熟Discuz!数据库设计的每个表的功能,每个表中每个字段的功能。 关于DZ数据库设计文档,请参阅DZ相关的项目文档(请从本贴附件中下载) 三)Discuz!的流程控制 a) 后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2 || admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为action.inc.php(*.inc.php),并存放在admin目录下,如执行:admincp.php?action=dodo,相当于执行admin目录下的dodo.inc.php文件 b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如: 首页:index.php 会员注册:register.php; 会员登录:logging.php 发贴程序:post.php

discuz!最新版本(x3.0测试版)测评

discuz!最新版本(x3.0测试版)测评 来源:母婴知识网 论坛 1、导航栏更新为浮动,也就是说网页拉到下面导航栏可以浮动于上部,跟phpwind有点相似,也许这就是所谓的技术融合吧; 2、新增加了首页4格,有日期、星期等提示,但这个四格我认为极其丑陋,还不如自己写一个四格来,反正我是不会用的; 3、底部多了“小黑屋”,看上去很神秘的东西一样,其实就是“违纪”单; 4、快捷导航除了保留原有的,增加了对版块的导航,可以快速定位的新的版块; 5、在帖子内页和列表中增加了在“返回顶部”处增加了一个“返回版块”,可以快速返回到该版块; 6、在帖子列表处增加了预览帖子内容的功能,类似于google搜索时的网页预览功能(不是网页快照); 7、在帖子列表上方增加统计本版块在全部版块的排名(应该是以帖子数量)、帖子数量趋势等; 8、在论坛的可视化编辑器中,增加了四个元素:①、目录,可以给本帖子生成目录,方便查看;②、帖子背景,可以给帖子添加背景,自带14套皮肤;③、帖子密码,可以给该帖子设置访问密码;④、添加起始动画,可插入flash、图片等; 9、搜索框采用了x2.5时官方清晰版模板的风格。 门户 1、x3对于门户来讲可以说具有里程碑意义,因为增加了生成静态页的功能,其特性主要有:①、自定义“静态文件扩展名”,如html和htm等;②、自定义“文章HTML存放根目录”和“专题HTML存放目录”;③、部分自定义“目录结构”,这个要像dede一样可能还要自己二次开发,或者根本不能那样;④、自定义“门户首页静态文件名”;⑤、一键生成静态页。其他的如自动生成等可能需要另外自己开发脚本来实现了。 2、发布门户文章时可以自定义静态页html的文件名,编辑器没有变; 3、门户的diy与x2.5等以往版本兼容性较好。

相关文档
最新文档