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

合集下载

易优CMS可以二次开发吗?易优二开有哪些规范?

易优CMS可以二次开发吗?易优二开有哪些规范?

易优CMS可以二次开发吗?易优二开有哪些规范?很多朋友在问易优cms可以支持二次开发吗?当然是可以的。

易优CMS二次开发也没有任何限制,只要掌握易优CMS框架就能快速二次开发。

为了让更多人了解二次开发,并更方便的了解易优CMS的二次开发,下面将会简单的介绍关于DedeCMS二次开发的一些基础和大纲。

目录和文件目录使用小写+下划线;类库、函数文件统一以.php为后缀;类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;类文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名;类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);函数和类、属性命名类的命名采用驼峰法(首字母大写),例如User、UserType,默认不需要添加后缀,例如UserController应该直接命名为User;函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 get_client_ip;方法的命名使用驼峰法(首字母小写),例如 getUserName;属性的命名使用驼峰法(首字母小写),例如tableName、instance;以双下划线“__”打头的函数或方法作为魔术方法,例如__call 和 __autoload;常量和配置常量以大写字母和下划线命名,例如 APP_PATH和 THINK_PATH;配置参数以小写字母和下划线命名,例如url_route_on 和url_convert;数据表和字段数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如think_user 表和user_name字段,不建议使用驼峰和中文作为数据表字段命名。

应用类库命名空间规范应用类库的根命名空间统一为app(不建议更改,可以设置app_namespace配置参数更改,V5.0.8版本开始使用APP_NAMESPACE常量定义);例如:app\index\controller\Index和app\index\model\User。

二次开发技术文档

二次开发技术文档

二次开发技术文档了解系统结构程序为MVC 3层结构,模型/ 视图/ 控制器。

●模型是前后台公用。

完成业务逻辑,所有的数据库操作,文件等资源调用,都由此层实现。

●控制器则是前后台独立。

负责业务模型的调用,拼接,变量的转换等等。

●视图层采用类似smarty的实现。

在任何时候都有一个全局变量$system指向唯一的一个内核类:core/kernel.php控制器负责所有的变量的转换,包括对外界的变量转换。

像胶水一样粘合各个业务model,并在其中的数据交互过程中做一些数据转换过程。

最终将变量抛到模板层。

模板层负责编译成html输出,这里我们创建了大量的smarty插件来减少开发者的重复工作量。

结构图公共类图公共函数库公共函数库位于/core/func_ext.php,它在内核加载时首先被加载,对全系统有效。

其中包含若干php5函数的php4模拟版本:●file_put_contents●json_encode●json_decode●ftp_chmod●array_diff_key●http_build_query运行过程商派Commerce B2B标准版前后台调度都分别通过各自目录下一个名为index.php的入口文件进行,入口文件接受控制器、方法等的输入参数,调度给对应的控制器方法执行并输出结果。

index.php会调用kernel。

Kernel基础类提供模型对象加载,插件入口,错误处理,设置管理,输入输出,第三方类库加载等基础服务。

前后台及安装入口程序在初始化时,都会初始化一个对应的内核类,这个类在前台是shopCore.php,后台时是adminCore.php。

这两个文件都是继承core/kernel.php文件。

该内核类首先会形成一个名为system的指向自身的全局对象,然后根据传入参数调用对应的控制器方法运行。

控制器层与模型层都会产生对该全局system对象的调用来使用基础服务。

并且控制器和模型层在自身被实例化之后都可以使用$this->system来引用内核对象。

帝国CMS二次开发教程之内容页模板的制作和整站完善

帝国CMS二次开发教程之内容页模板的制作和整站完善

其他点工商认证:工商局 通过QQ安全检测 网站分享:
留言本
• 留言本被当作一个插件集成进来 • 具有留言审核、回复和权限管理等功能
投票
• 一般用于简单的网站调查 • 可以灵活设置多项,也能定制样式
信息反馈
其他管理
最终效果
北风网项目培训
内容页模板的制作和整站完善
讲师:石曼迪
Байду номын сангаас
本节目标
• 列表页布局和内容页布局 • 各类列表的制作和内容显示方式的制作 • 内容页下各类操作类型的运用
常见文字列表
常见图片列表
帝国CMS操作类型说明
• 按栏目调用
0 栏目最新信息 (栏目ID=栏目ID)
1
栏目点击排行 (栏目ID=栏目ID)
PHP视频教程:基于PHP实战帝国CMS系统二次开发 /goods-316.html
本课程版权归北风网所有
欢迎访问我们的官方网站
列表页和内容页侧栏列表
• • 相关资讯: [phomenewspic]'selfinfo',2,4,128,90,1,20,2[/phomenewspic] 图片推荐: [phomenewspic]'selfinfo',2,4,128,90,1,20,2[/phomenewspic]
其他相关标签
• • • • • • • • 页面访问:[!--page.stats--] 点击数:[!--onclick--] 评论数:[!--plnum--] 时间:[!--newstime--] 来源:[!--befrom--] 作者:[!--writer--] 新闻内容:[!--newstext--] 评论表单:[!--temp.pl--]

二次开发文档

二次开发文档

二次开发文档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.plugJspxcms无侵入式插件开发(二次开发)教程之二:菜单与权限本帖隐藏的内容需要回复才可以浏览菜单和权限配置文件:/WEB-INF/conf/plugin/plug/application.properties一级菜单配置(分号为分割符)1.menu.650=navigation.plug;nav.do?menuId=650;nav_plug复制代码650:是后台导航一级菜单的编号,编号大小决定菜单的前后位置。

jeecms二次开发必备

jeecms二次开发必备

jeecms⼆次开发必备JEECMS⼆次开发第1章JEECMS系统介绍 (3)1.1关于JEECMS (3)1.2JEECMS系统特点 (4)1.3技术架构 (4)1.3.1跨操作系统平台 (5)1.3.2跨数据库平台 (5)1.3.3跨应⽤服务器 (6)1.3.4兼容多种浏览器 (6)1.4JEECMS⼯程的包结构分析 (7)1.4.1⽂章模块 (7)1.4.2辅助模块 (7)1.4.3通⽤操作模块 (7)1.4.4核⼼功能模块 (8)1.4.5下载模块 (8)1.5页⾯、资源⽂件结构 (9)1.5.1站点内容、模板结构 (10)1.5.2站点资源⽂件结构 (10)第2章标签使⽤和模板的制作 (11)2.1模板规划 (11)2.1.1资源⽂件 (11)2.1.2模板⽂件 (11)2.1.3使⽤⽅式 (11)2.1.4标签调⽤样式 (11)2.2I NCLUDE标签 (13)2.2.1功能简介 (13)2.2.2标记说明 (13)2.2.3 明确标签的使⽤范围 (13)2.2.4调试标签了解其使⽤⽅法 (13)2.3A RTI L IST标签 (15)2.3.1功能简介 (15)2.3.2标记说明 (15)2.3.3 明确标签使⽤范围 (18)2.3.4 调试标签了解其使⽤⽅法 (18)2.4P OSITION标签 (20)2.4.1功能简介 (20)2.4.2标记说明 (20)2.5C HNL L IST标签 (21)2.5.1功能简介 (21)2.5.2标记说明 (21)2.5.3明确标签的使⽤范围 (21)2.5.4调试标签了解其使⽤⽅法 (22)2.6内容页常⽤标签 (23)2.6.1标记说明 (23)第1章JEECMS系统介绍1.1关于JEECMSJEECMS是JavaEE版⽹站管理系统(Java Enterprise Edition Content Manage System)的简称,是⼀款⾃主研发的基于J2EE平台的内容管理系统Java凭借其强⼤、稳定、安全、⾼效等多⽅⾯的优势,⼀直是企业级应⽤的⾸选。

项目二次开发源代码及详细说明

项目二次开发源代码及详细说明

项目二次开发源代码及详细说明I. 项目介绍本文档描述了一个二次开发项目的源代码及详细说明。

该项目是基于一个开源的企业资源管理系统进行二次开发,以满足特定客户的需求。

原始系统功能包括客户关系管理、订单管理、库存管理等,但客户需要在原始系统的基础上增加一些新的功能,比如业务报表的定制、权限管理的优化等。

为了满足客户的需求,我们需要对原系统进行二次开发,修改和添加一些功能,以适应客户的特定业务需求。

II. 项目目标1. 通过二次开发,实现客户需求的定制化功能,并满足特定的业务需求。

2. 优化原系统的权限管理模块,增强系统的安全性和稳定性。

3. 重构原系统的报表模块,实现业务报表的定制化功能。

4. 对原系统的库存管理模块进行优化,提高系统的性能和稳定性。

III. 项目源代码及详细说明1. 新增功能模块:客户需要系统新增一个产品价格管理模块,方便他们随时根据市场需求调整产品的价格。

我们在系统中增加了产品价格管理的功能模块,客户可以在这个模块中根据自己的需求,对产品的价格进行调整。

以下是新增功能模块的主要源代码及详细说明:```python# 产品价格管理模块import datetimefrom django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100, verbose_name='产品名称')price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='产品价格') create_time = models.DateTimeField(default=datetime.now, verbose_name='创建时间')class Meta:verbose_name = '产品'verbose_name_plural = verbose_name# 增加产品价格调整记录模型class PriceAdjustRecord(models.Model):product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name='产品')old_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整前价格')new_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整后价格')adjust_time = models.DateTimeField(default=datetime.now, verbose_name='调整时间')class Meta:verbose_name = '价格调整记录'verbose_name_plural = verbose_name```上面的代码是在原系统中新增的产品价格管理模块的源代码。

DEDE二次开发实例

DEDE二次开发实例
织梦 DedeCms 二次开发实例
织梦|DedeCms 系统关联到新浪微博教程 最近注册了新浪微博,发现特别有意思,发现里面有一个工具可以关键到站外的博客站点,这样每当有更新, 微博就会自动更新啦。 于是把自己用织梦做的站网址写进去,解决提示:无法关联,然后用填了一个用 wp 做的站,提示关联成功! 通过对比得知,新浪微博是利用 feed 找到更新文章的。只要给他指定 feed 地址就可以成功关联啦。 现在开始动手简单修改一下织梦的模板,由于织梦不能生成全站的 xml 文件,所以要先建立生成全站 XML 的 php 程序。 1,建立 feed.php <?php require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; $pv = new PartView(); $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/wodede_com/feed.htm"); header("Content-type:application/xml"); $pv->Display(); ?>以上要注意的是修改 模 板 的 路 径 , 确 保 在 模 板 跟 目 录 能 够 找 到 feed.htm2 , 建 立 feed.htm 模 板 文 件 <?xml version="1.0" encoding="gb2312" ?> <rss version="2.0"> <channel> <title>{dede:global.cfg_webname/}</title> <link>{dede:global.cfg_basehost/}</link> <description>{dede:global.cfg_description/}</description> <language>zh-cn</language> <generator>{dede:global.cfg_webname/}</generator> <webmaster>{dede:global.cfg_adminemail/}</webmaster> {dede:arclist row='60' col='1' titlelen='100' orderby='pubdate'} <item> <link>[field:arcurl/]</link> <title><![CDATA[[field:title function='html2text(@me)'/]]]></title> <author>[field:writer/]</author> <category>[field:typename/]</category> <pubDate>[field:pubdate function='strftime("%a, %d %b %Y %H:%M:%S +0800",@me)'/]</pubDate> <guid>[field:arcurl/]</guid> <description><![CDATA[[field:description function='html2text(@me)'/] ... ]]></description> </item> {/dede:arclist} </channel> </rss> 需要注意的是,别忘了把我的网址改成你自己需要的。 3,修改 index.htm 主页模板 由于新浪微博只能验证网址,不能写完整路径, 比如我写的是:/feed.php。结果提示关联失败,解决的办法是,在<head>和</head>中间 加 入下 面 的代 码 <link rel="alternate" type="application/rss+xml" href="/feed.php" title=" 你的标题" > 通过以上方法就可以成功关联新浪微博了。

二次开发手册

二次开发手册

二次开发手册业务流程定制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颜色设置明细网格显示选项背景色:指定明细网格的背景色,默认为白色行醒目显示条件:定义明细数据行醒目显示的条件,当满足条件时,该行将以指定的颜色显示。

jeecms二次开发

jeecms二次开发

jeecms二次开发目录1. jeecms二次开发 (2)1.1 jeecms二次开发简要说明文档之概述篇 (2)1.2 jeecms二次开发简要说明文档之开发篇 (2)1.3 jeecms部署到linux上保存文章出错 (6)1.4 jeecms二次开发总结 (6)1. jeecms二次开发1.1 jeecms二次开发简要说明文档之概述篇在学校时就知道jeecms,那时也仅仅是在本地架上java环境安装玩玩,没有进行仔细的研究。

工作后才开始仔细的研究jeecms的源代码,作为国内为数不多的开源产品,其源代码有很多的可圈可点之处,但总觉得其开源的力度远远不够,在我的理解下不算是真正的开源,其二次开发的说明文档太少,官方也仅仅是给出标签的使用说明。

首先要说明的是本文仅仅讲的是jeecms-2.3.2-final版下的二次开发,jeecms最新版是jeecms v3.0 beta版,听说进行了重构,目前放出的是安装版,很希望jeecms官方赶快放出源代码,好再次研究研究。

下面曹海峰将从四个方面讲述jeecms的二次开发。

1、文件结构主要讲述css样式文件、图片、js、模板、jeecms标签等的放置路径。

2、模板模板的路径、命名规则等。

3、标签的使用官方标签,以及二次开发时如果自定义标签。

4、开发流程进行二次开发时整个流程的一个简要介绍。

1.2 jeecms二次开发简要说明文档之开发篇前段时间曹海峰介绍了jeecms的二次开发,但没有具体讲怎么对jeecms进行二次开发,今天补上。

整理的很凌乱,但对于jeecms的二次开发肯定没什么问题了。

一、文件结构网站css样式,图片,js的放置路径:WebRoot/res_base/Html页面如何引用:${root}就是WebRoot/res_base/的路径实例:1${root}/fgw/article/css/common.css前台模板放置路径:WebRoot/WEB-INF/user_base/template,文件夹是对应的模块名称,一定要和每个Constants.java下的常量名相同,否则会说找不到页面。

Jeecms开发学习笔记

Jeecms开发学习笔记

Jeecms开发学习笔记青岛海尔软件有限公司@带吴钩目录1.文档说明 (3)2. 关键词 (3)2.1MVC (3)2.2实体 (3)2.3实现类 (3)3. 从Act到Mng到Dao (4)3.1Act (4)3.1.1什么是Act? (4)3.1.2Act实现从html到jspx (4)3.1.3从Act到Mng (6)3.2Mng和MngImpl (8)3.2.1什么是Mng和MngImpl? (8)3.2.2Mng (9)3.2.3从MngImpl到Dao (10)3.3Dao和DaoImpl (13)3.3.1什么是Dao和DaoImpl? (13)4. 实体类 (13)4.1为什么使用实体类? (13)4.2id的作用 (15)5配置文件 (16)5.1数据库配置文件 (16)5.2国际化 (18)1.文档说明本文档来源一个现实项目的学习,笔者须在Jeecms框架内实现前台提交简历,后台查看简历的过程。

而笔者毫无java web开发经验。

因此本文档适用于毫无java web开发经验人群,将以Jeecms的spring MVC + spring + hibernate框架为结构进行介绍。

建立一个实体,从数据的写入到查找为流程,进行一个详细的描述。

2.关键词2.1MVCMVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

2.2实体实体类主要是作为数据管理和业务逻辑处理层面上存在的类别;它们主要在分析阶段区分。

实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。

织梦dedecms二次开发

织梦dedecms二次开发

织梦dedecms二次开发和织梦模板制作系列教程汇总一、织梦dedecms二次开发教程系列织梦二次开发教程(一)织梦dedeCms主要模板文件与功能说明一、概念,设计和使用模板,必须要理解下面几个概念1、板块(封面)模板:指网站主页()或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎去解析后才输出内容或生成特定的文件。

2、列表模板:指网站某个栏目的所有文章列表的模板,一般用“list_识别ID.htm”命名。

3、档案模板:表示文档查看页的模板,如文章模板,一般用“article_识别ID.htm”命名。

4、其它模板:一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一个模板创建为任意文件。

二、命名,DedeCMS模板默认命名规则如下1、模板保存位置:模板目录:{cmspath} /templets/样式名称(英文,默认为default,其中system为系统底层模板,plus为插件使用的模板)/具体功能模板文件}2、模板文件命名规范:(1)index_识别ID.htm:表示板块(栏目封面)模板;(2)list_识别ID.htm:表示栏目列表模板;(3)article_识别ID.htm:表示内容查看页(文档模板,包括专题查看页);(4)search.htm:搜索结果列表模板;(5)index.htm:主页模板;注解:[识别ID]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某个频道的模板命名。

例:list_image.htm 表示是就是内容类型为图片集的栏目默认列表模板。

article_article.htm 表示的是文章查看页模板。

三、其它模板说明1、默认底层模板位置:{cmspath}/templets/system功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。

jeecmd二次开发文档

jeecmd二次开发文档

1.在myeclipse中新建一个项目jeecms,将服务器中jeecms项目下web-inf文件夹下内容拷到新建项目中2.解压缩jeecms-3.0.2-final-src,在src文件夹下会看到有三个压缩文件,如果只想进行普通的二次开发,可以只导入cms这个源码,删除jeecms-cms-identity-3.0.2-final.jar即可,如果想进行深入的二次开发,需要导入common和core源码,另导入common-lib下的jar包,删除jeecms-cms- ide ntity-3.0.2-final.jar,jeecms-common-3.0.2-final.jar ,jeecms-core- identity-3.0.2-final.jar 这三个jar包,切记:务必进行build path3.修改jdbc链接,自己导入数据库。

4.把服务器下install\config下的web.xml复制出来覆盖掉新建项目WEB-INF下的web.xml5.classes下有四个文件,手动烤到myeclipse项目src根目录下中6.将服务器上jeecms项目删掉,发布新建的jeecms项目。

首页的加载过程:在浏览器中输入http://localhost:8080/jeecms,回车首先进入配置文件web.xml,<context-param><param-name>contextConfigLocation</param-name><!----><param-value>/WEB-INF/config/application-context.xml/WEB-INF/config/cache-context.xml/WEB-INF/config/captcha-context.xml/WEB-INF/config/jeecore-context.xml/WEB-INF/config/jeecms-context.xml</param-value></context-param>应用范围内的初始化参数其中jeecms-context.xml是对标签的初始化<welcom e-file-list><welcom e-file>index.html</welcome-file><welcom e-file>index.shtml</welcome-file><welcom e-file>index.jhtml</welcome-file></welcome-file-list>通过以上标签找到应该加载哪一个页面<servlet><servlet-name>JeeCmsFront</servlet-nam e><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/jeecms-servlet-front.xml</param-value></init-param><load-on-startup>2</load-on-startup></servlet><servlet-mapping><servlet-name>JeeCmsFront</servlet-nam e><url-pattern>*.jhtml</url-pattern></servlet-mapping><servlet-mapping><servlet-name>JeeCmsFront</servlet-nam e><url-pattern>*.jspx</url-pattern></servlet-mapping><servlet-mapping><servlet-name>JeeCmsFront</servlet-nam e><url-pattern>*.jsp</url-pattern></servlet-mapping><servlet-mapping><servlet-name>JeeCmsFront</servlet-nam e><url-pattern>*.htm</url-pattern></servlet-mapping>通过servlet配置,可以找到jeecms-servlet-front.xml,在此配置文件的最后有<import resource="jeecms-servlet-front-action.xml"/>代码找到jeecms-servlet-front-action.xml,在此配置文件中有<bean id="dynamicAct" class="com.jeecms.cms.action.front.DynamicPageAct"/>可以找到类DynamicPageAct,此类是首页模板。

4、dede织梦CMS二次开发--程序篇

4、dede织梦CMS二次开发--程序篇

程序篇4.1、自定义模型使用教程在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章、图集、软件、商品、分类信息、专题。

通过系统自带的模型,我们可以用来构建不同类型的站点,例如:使用图集可以做一个图片站,用软件模型构建一个软件下载站点。

当然以上随系统附带的模型被称为系统模型,用户可以自己定义一些模型,比如图书、音乐专辑等,自定义了这些模型才可以构建更多内容形式的站点,本篇将讲述如何使用系统的自定义模型管理功能来实现内容模型的构建。

我们首先登录系统后台,点击[核心]-[内容模型管理],进入内容模型管理界面,如下图所示:这里我们介绍几个相关参数的概念:•ID号用于区分模型的唯一ID,一般常规模型的ID都是大于0的,比如普通文章、软件等,如果使用了单表模型,ID一般需要小于-1,例如这里的分类信息模型;•频道名称用于识别频道类型的标识;•识别id系统用于识别的id,这个关系到模板方面;•附加表系统内容附加表项;•模型类型分为系统类型和自动类型,系统类型为固化在系统中的内容模型,自动类型为用户可创建的内容模型类型;接下来我们开始介绍如何使用自定义模型管理来创建一个自己的模型,并且用于建设不同内容类型的网站中去。

这里我们介绍一些周边的内容,几个要用到的概念:•字段在数据库中,表的列称为字段,织梦系统也是如此,但更恰当的说法,存储某个内容信息单元,称为字段,例如标题、来源、作者等都是一个字段;•内容系统主表程序将一些公用字段存储在系统主表dede_archives,例如:标题、关键词、缩略图等,主表具体字段可以查询织梦帮助中心()的有关二次开发手册数据表部分的内容;•附加表不同内容模型对应不同的附加表,通常以dede_addon[识别ID]命名,附加表中存放的都是详细内容的相关字段(非公用),例如:文章内容(dede_addonarticle)、软件类型(dede_addonsoft)、图片集合(dede_addonimage)等;•单表独立模型存储时候不用到“主表+附加表”的结构形式,直接使用单个数据表进行存储内容数据,这样脱离主从表,减少主表数据服在开销,可以从很大程度上解决数据负载问题;明白了以上几个概念我们可以来学习如何来自己创建一个内容模型了。

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

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文件,其中欢迎页面有:<welcome-file-list><welcome-file>index.jspa</welcome-file><welcome-file>index.do</welcome-file><welcome-file>index.html</welcome-file></welcome-file-list>接着再看jeecms/core/struts-core-front.xml配置文件,发现有个action的通用配置:<action name="**" class="core.dynamicSystemAct"><result type="chain"><param name="namespace">${namespace}</param><param name="actionName">${actionName}</param></result><interceptor-ref name="exception"/><interceptor-ref name="domain"/><interceptor-ref name="cookieIdentity"/><interceptor-ref name="url"/></action>struts收到请求以后,将请求转发到core.dynamicSystemAct这个对象,注意这个这个class并不是真正的类,是类的别名,由spring通过标注@Controller进行绑定,web应用上下文可以通过classpath自动扫描到这个类。

ecshop二次开发,常用功能开发

ecshop二次开发,常用功能开发

ecshop二次开发,常用功能开发ecshop二次开发,常用功能开发1、ECSHOP 搜索智能提示(即联想功能)2、购物车动态更新,数量左右有+ - 点击即可实时改变价格,购买商品“加入购物车”,弹出特效窗口,购物车属性,加减号3、信任登陆:QQ、新浪微博、淘宝/支付宝等合作登录功能插件含后台设置功能(可选)4、ecshop自定义URL/链接,支持无限级目录,对提高SEO排名很有帮助、/thread-__-1-1.html5、Ecshop自动生成购买记录和评论插件6、物流跟综7、资讯站自动内链功能,在后台设置关键词,资讯站相关关键词可点到商品或分类8、简化购物流程购物流程整合成单页面运费无刷新变化所有操作在单页面完成,简化了购物流程,提高成交,将购物车、填写收货地址、物流方式和支付方式集成在一个页面上完成,9、ecshop 网站商品图片分步加载,(图片太多,加载会很慢,页面在第一屏就加载第一屏,拖动后自动加载),类似于京东,趣玩网的图片预加载..ecshop二次开发,常用功能开发。

ecshop二次开发,常用功能开发10、ECSHOP CPS 广告联盟插件,11、促销期内,每个用户最多只允许购买N 件。

不论你是昨天买的,还是今天买的,还是明天买的,也不论你下多少订单,只要是在促销期内,购买数量加在一起不能超过N 件。

这个数字N 可以在后台设置。

例如对商品A做促销活动,规定在2022年-01-01 至2022年-02-01 期间,每个用户最多只能购买2件,在这个时间段之前或在这个时间段之后购买的话,不做任何限制。

12、限时抢购(限时抢拍)、团购(两种方式:普通团购、满多少团购价减多少)、秒杀、买就送、倒计时功能13、ECSHOP优惠套餐插件,仿趣玩网,支持多套餐,支持勾选ecshop二次开发,常用功能开发14、实现用户名或Email都能登陆15、未注册等提示性跳转,以浮动层表现15、其它,如浮动返回到顶部、浮动客服等ecshop二次开发,常用功能开发怎样把ECSHOP商城系统中的相对地址变成带域名的绝对地址?答:我们一般所说的绝对地址(也有朋友称其为:完整地址)是页前台查看源文件时,在源文件中都所能看到的带域名的完整URL形式,比如:“a href=“/sitemap.xml "__/a”修改说明:这样修改的好处:也许很多朋友都非常想把以mon.php这个文件把return $uri;修改为return 'http:// /'.$uri;为什么我的ECSHOP首页和商品列表页中的商品缩略图很模糊,我应该怎么做,图片才会清晰呢?答:经常看到论坛里有人反映说首页或列表页的缩略图的质量不高,比较模糊......原因是因为ECSHOP生成缩略图时,用到的函数imagejpeg() 没有设置质量参数。

JEECMS标签-使用说明pdf文档

JEECMS标签-使用说明pdf文档

第一部分使用说明1.标签使用概述作者:发布日期:2009-07-0110:32:14调用"JEECMS标签"的三种代码样式如下:A、${标签名称}B、[@cms.标签名称属性='值'/]C、[@cms.标签名称属性='值';标签别名]自定义样式模板[/@cms.标签名称]例如:a、${}标签用于调用网站名称b、[@cms.ArtiList chnlId=''count='10'sysContent='1-1'/]标签用于调用10篇文章的列表c、[@cms.ChnlList id=''inner='1';c]┆<a href="${c.url}">${}</a>[/@cms.ChnlList]标签用于调用栏目列表,可用于网站导航条。

注意:abc实例是与上面ABC三种形式相对应的。

大家可以逐个测试,举一反三。

为了测试上述几类标签,我们可以新建一个空白的首页模板(新建的首页模板必须以index做前缀,例如index_demo.html),进入后台管理->模板管理->template->article->blue->default,点击下图中③处的“创建模板”按钮,按要求填写必要的模板内容后保存模板,此时点击功能树上面的“刷新目录”就可以看到新加的“index_demo.html”模板了,如下所示:——>然后点击“文章栏目->首页->修改”,将新建的首页模板(index_demo.html)设为首页栏目模板,提交保存——>回到站点首页,刷新,您将看到我们刚才建立的测试首页,你就可以在上面测试各种标签的用法了(需要恢复原来的默认首页很简单,把首页栏目模板重新设置为默认模板或index.html就行了)。

dede二次开发教程之常用模板标签

dede二次开发教程之常用模板标签

DEDECMS二次开发时需要收藏的模板标签:需求:1. 模板路径、include路径标签、plus路径标签还有就是<head>内的SEO标题等相关标签;2.系统自带的首页、列表页、内容页等常用的标签,如时间、作者、分页、顶踩等等;3.更深入的二次开发需要的模板调用标签,通过sql语句来实现数据的调用;4.一些链接、图片、标题等标签的灵活使用;路径、SEO标题、模板基本信息标签:1. 模板路径调用标签: {dede:field name='templeturl'/}2. 关键描述调用标签:<meta name="keywords" content="{dede:field name='keywords'/}"><meta name="description" content="{dede:fieldname='description' function='html2text(@me)'/}">3. 网站标题调用标签: {dede:global name='cfg_webname'/}4. 指定调用栏目标签: {dede:type typeid='ID'}[field:typename /]{/dede:type}5. 频道栏目调用标签:{dede:channel type='top'}<li><a href='[field:typelink/]'>[field:typename/]</a> </li>{/dede:channel}6. 友情链接调用标签: {dede:flink row='24' linktype=2/}7. 网站版权调用标签: {dede:global name='cfg_powerby'/}8. 网站备案调用标签: {dede:global name='cfg_beian'/}9. 当前栏目名称标签: {dede:field name='typename'/}10 .当前位置调用标签: {dede:field name='position'/}11. 列表文章调用标签: {dede:list pagesize='8'}{/dede:list}12.栏目链接调用标签:[field:typelink function='str_replace("a ","a class=ulink ",@me)'/]13. 作者链接调用标签: [field:writer/]14. 列表点击调用标签: [field:click/]15. 列表评论调用标签: [field:postnum/]16. 查阅全文调用标签: <a href="[field:arcurl/]">查阅全文...</a>17. 列表时间调用标签:[field:pubdate function="GetDateTimeMK(@me)"/]18 . 列表分页调用标签: {dede:pagelist listsize='4' listitem='index pre pageno next end '/}19. 文章标题调用标签: {dede:field name="title"/}20. 文章来源调用标签:{dede:field name='source'/}21. 文章作者调用标签: {dede:field name='writer'/}22. 文章时间调用标签: {dede:field name='pubdate' function='GetDateMk(@me)'/}23. 文章Tag调用标签: {dede:tag type='current'/}导航、会员、内容页等模板标签:1. 栏目导航调用标签:<a href="/">首页</a></li>{dede:channel type='top' row='8' currentstyle="<li class='thisclass'><a href='~typelink~'>~typename~</a> </li>"}<li><a href='[field:typelink/]' target="_blank">[field:typename/]</a> </li>{/dede:channel}2. 文章点击调用标签:<script src="{dede:field name='phpurl'/}/count.php?aid={dede:field name='ID'/}&mid={dede:field name='memberid'/}&view=yes" language="javascript"></script>3. 文章内容调用标签: {dede:field name='body'/}4.文章分页调用标签:{dede:pagebreak/}5.收藏、推荐评论、打印、关闭:[<a href="{dede:field name='phpurl'/}/stow.php?arcID={dede:field name=ID/}">收藏</a>][<a href="{dede:field name='phpurl'/}/recommend.php?arcID={dede:field name=ID/}">推荐</a>][<a href="{dede:field name='phpurl'/}/feedback.php?arcID={dede:field name=ID/}">评论</a>][<a href="#" onClick="window.print();">打印</a>][<a href="#" onClick="window.close();">关闭</a>]6.文章顶客次数标签:{dede:field name='digg'/} <ahref="javascript:Digg('digg',{dede:field name='id'/});">顶一下</a>7. 上一篇/下一篇标签: {dede:prenext get='pre'/}{dede:prenext get='next'/}8. 头条推荐调用标签:{dede:arclist row=1 titlelen=24 orderby=pubdate att=2} <dt> [field:textlink/]<span>[field:description/]……</span></dt>{/dede:arclist}9.最新文章调用标签:{dede:arclist row=8 titlelen=24 orderby=pubdate}<li>[field:textlink/]</li> {/dede:arclist}10. 热关键字调用标签: {dede:hotwords num='5' subday='30'/}11. 最新图文调用标签:{dede:arclist row=4 titlelen=20 orderby=pubdate type='image.' imgwidth='152' imgheight='98'}<dd><a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]" > </a><span><a title="[field:title function='htmlspecialchars(@me)'/] "href="[field:arcurl /]">[field:title /]</a></span></dd>{/dede:arclist}12.推荐文档调用标签:{dede:arclist type='commend' titlelen='40' row='10'} <li><a title="[field:title function='htmlspecialchars(@me)'/] "href="[field:arcurl /]">[field:title /]</a></li> {/dede:arclist}13.随机推荐调用标签:{dede:arclist type='commend' titlelen='26' orderby='rand' row='10'}<li><a title="[field:title function='htmlspecialchars(@me)'/] "href="[field:arcurl /]">[field:title /]</a></li>{/dede:arclist}14.热点文档调用标签:{dede:arclist orderby='click' titlelen='40' row='10'} <li><a title="[field:title function='htmlspecialchars(@me)'/] "href="[field:arcurl /]">[field:title /]</a></li>{/dede:arclist}15.相关文档调用标签:{dede:likeart titlelen='24' row='10'}<li><a title="[field:title function='htmlspecialchars(@me)'/] "href="[field:arcurl /]">[field:title /]</a></li>{/dede:likeart}16.调用图片链接标记:<a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]" ></a> <a href='[field:arcurl /]'>[field:image/]</a>17.调用文字链接标记:<a href="[field:aucurl/]" title="[field:title/]">[field:title/]</a><a title="[field:title function='htmlspecialchars(@me)'/] "href="[field:arcurl /]">[field:title /]</a>18. 控制字数描述标记: [field:description function="cn_substr(@me,100)"/]...19. 调用文章tags标记: {dede:tag type='current'/}20. 文章关键字与描述:{dede:field name='keywords'/}{dede:field name='description' function='html2text(@me)'/}21. 栏目介绍:{dede:field name='description' function='html2text(@me)'/}22. 调用外部htm文件:{dede:include file='head.htm' ismake='yes'/}23.搜索文章调用标签:{dede:global name='keyword'/}&quot;的搜索结果 - {dede:global name='cfg_webname'/} 搜索&quot; {dede:global name='keyword'/}</span>&quot; 的结果24. 评论:[field:postnum/]25. 作者:[field:writer /]数字排行、隔行换色、24小时更新等特效:1. 递增序列号: [field:global name=autoindex/]2. 列表隔5行加一行线:{dede:list pagesize='50'}<li><a href="[field:arcurl /]" title="[field:titlefunction='htmlspecialchars(@me)'/]" target=_blank>[field:title function="cn_substr(@me,48)"/]</a>[field:pubdate runphp='yes'] $a="<font color=red>".strftime('%m-%d',@me)."</font>";$b=strftime('%m-%d',@me);$ntime = time();$day3 = 3600 * 24;if(($ntime - @me) < $day3) @me = $a;else @me =$b;[/field:pubdate]<br>[field:global name=autoindex runphp="yes"]if(@me%5==0)@me="<hr />";else @me="";[/field:global]{/dede:list}<div class="line2 m1 m3"></div></li>3. 最新文章列表“隔行换色” 的方法:{dede:arclist orderby=pubdate titlelen='26' row='10'}[field:global runphp='yes' name=autoindex]$a="<div id='a'>";$b="<div id='b'>";if ((@me%2)==0) @me=$a;else @me=$b;[/field:global]<ul><li>[field:title/]</li></ul></div>{/dede:arclist}4. 24小时内更新的文章时间显示为红色:[field:pubdate runphp='yes']$a="<font color=red>".strftime('%m-%d',@me)."</font>";$b=strftime('%m-%d',@me);$ntime = time();$day3 = 3600 * 24;if(($ntime - @me) < $day3) @me = $a;else @me =$b;[/field:pubdate]5. COPY页面内容,自动在后面加上网站信息,利于SEO<script type="text/javascript">document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "\r\n本篇文章来源于 www.地址.COM 原文链接:"+location.href; clipboardData.setData("text", text); } }, 100 ) }</script>6. 按时间点击文章排行榜调用标签:按总: {dede:arclist row='24' titlelen=24 orderby=click}按月: {dede:arclist row='24' titlelen=8 orderby=click subday=30}按周: {dede:arclist row='24' titlelen=8 orderby=click subday=7}7. 在首页调用某栏目的子栏目{dede:channel type=’sun’ typeid=’栏目ID’}<a href=”[field:typelink/]“>[field:typename/]</a>{/dede:channel}或者{dede:global name=’maplist’/}8.搜索表单调用标签:<form action="{dede:global name='cfg_phpurl'/}/search.php" name="formsearch"><input type="hidden" name="kwtype" value="1" /><input name="keyword" id="keyword" type="text" class="searchtxt" /><select name="searchtype" id="searchtype"><option value="titlekeyword" selected>智能模糊搜索</option><option value="title">仅搜索标题</option></select><input type="image"src="{dede:field name='templeturl'/}/images/topsearch_submit.gif" /></form>9. 实现“文章标题-2级栏目-1级栏目-网站名”形式{dede:field name='title'/}-{dede:field name='position' runphp='yes'}$tc="-"; //分隔符$tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符@me=html2text(@me); //去除html标签$tf=split($tw,@me); //分解成数组for($ta=(count($tf)-2);$ta>=1;$ta--){ //循环赋值给$tk$tk.=trim($tf[$ta]).$tc;}$tk=substr($tk,0,-1);@me=$tk; //赋值给@me{/dede:field}-{dede:global name='cfg_webname'/}10. 调用缩略图:<img src='{dede:field name="litpic"/}'>11. 发布的文章显示红色日期或加上new字或new小图片给近三天(或当天)发布的文章显示红色日期或加上new字或new小图片等,都是围绕pubdate做文章,写扩展的。

二次开发接口文档

二次开发接口文档

接口开发文档一、开发包目录结构1.1demo 文件夹包含了sdk 接口调用源代码,可供二次开发参考。

使用C++开发的MFC 程序。

1.2dll 文件夹包含了二次开发所需的所有动态库,demo 编译好的exe 文件需要放在该文件夹内才可以运行。

1.3include 文件夹包含了二次开发所需要的头文件。

1.4lib 文件夹包含了二次开发所需要的lib 静态库。

1.5DSS 二次开发指南(C++).pdf指导二次开发用户如何新建VS2005 工程运行demo 文件夹中的demo。

1.6dpsdk 开发包的程序版本信息。

1.7常见问题解答.pdf二次开发常见问题以及解决方式。

1.8大华平台SDK 开发手册(C++版).chm二次开发接口使用说明。

二、术语和缩略语1、DPSDK:DSS 平台二次开发SDK 包2、CMS:中心管理服务3、DMS:设备管理模块4、demo:程序示例(功能类似DSS 平台客户端)5、web 管理员端:在浏览器中输入DSS 平台的ip 即可打开管理员端6、CameraID:通道id,形如:$1$0$07、DeviceID:设备id三、Demo 操作方法运行demo把“demo/bin/”目录下面的3 个文件,如下图所示拷贝到“dll”文件夹下面,运行。

登陆平台图 1 登陆界面登陆界面如图 1 所示,其中: IP:DSS 平台ip 地址;端口:9000;用户名:web 管理员端配置的用户;密码:web管理员端配置的用户对应的密码。

点击“登录”按钮,登陆平台。

登陆成功的界面如图2 所示:1235图2 主界面上图选中的 5个模块分别是:1、组织树;2、实时视频;3、本地录像;4、云台操作;5、执行结果。

主界面功能介绍、组织树操作步骤:点击“加载所有组织结构”按钮加载组织结构是其他操作的前提,是为了获取 DSS平台上所有的设备信息。

、实时视频模块操作步骤:1)确保已经成功加载组织结构。

2)输入CamID(通道ID)。

二次开发培训教程

二次开发培训教程

二次开发培训教程一、引言二次开发是指在已有软件的基础上进行功能扩展或改进,以满足用户特定需求的一种开发模式。

在实际的软件开发过程中,二次开发可以大大提高软件的定制性和适用性,同时也能为软件的推广和应用提供更多的可能性。

因此,二次开发技能已经成为了软件开发领域中必不可少的一部分。

本教程将介绍二次开发的基本概念、工具、技术和实现方法,帮助读者快速入门并掌握二次开发的相关技能。

二、二次开发的基本概念1. 二次开发的定义二次开发是指在原有软件基础上进行功能扩展或改进的一种软件开发方式,常用于定制化开发或适应特定需求的软件开发过程中。

2. 二次开发的分类根据二次开发的目的和方式,可以将其分类为插件开发、定制化开发和接口开发等几种类型。

其中,插件开发通常是指通过开发插件或扩展,为原有软件增加新的功能或功能模块;定制化开发则是指根据用户特定需求对软件进行定制开发,满足用户个性化需求;而接口开发则是指通过开发接口或SDK,实现与其他系统的集成或对接。

三、二次开发的工具和技术1. 二次开发的常用工具常见的二次开发工具包括IDE(集成开发环境)、文本编辑器、调试工具、版本控制工具等。

在实际开发过程中,可以根据具体的开发需求和技术框架选择合适的开发工具。

2. 二次开发的常用技术常见的二次开发技术包括脚本语言、面向对象编程语言、Web开发技术等。

在实际开发过程中,可以根据具体的开发需求和软件架构选择合适的开发技术。

四、二次开发的实现方法与步骤1. 了解原有软件结构在进行二次开发之前,首先要了解原有软件的结构和功能,包括核心模块、接口和数据交互等,以便确定二次开发的具体目标和范围。

2. 确定二次开发需求根据用户的具体需求和软件的现状,确定二次开发的具体需求和目标,明确二次开发的功能模块和实现方式。

3. 选择合适的开发工具和技术根据二次开发的具体需求和软件的技术框架,选择合适的开发工具和技术,为二次开发提供技术支持和开发环境。

二次开发培训文档

二次开发培训文档

二次开发培训文档一、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系统中,可以定义多个其他系统的数据连接,通过该连接可以和其他系统的数据库直接连接,同时也可以设置“计划任务”,系统根据设置定时制定执行设定的计划。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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文件,其中欢迎页面有:<welcome-file-list><welcome-file>index.jspa</welcome-file><welcome-file>index.do</welcome-file><welcome-file>index.html</welcome-file></welcome-file-list>接着再看jeecms/core/struts-core-front.xml配置文件,发现有个action的通用配置:<action name="**" class="core.dynamicSystemAct"><result type="chain"><param name="namespace">${namespace}</param><param name="actionName">${actionName}</param></result><interceptor-ref name="exception"/><interceptor-ref name="domain"/><interceptor-ref name="cookieIdentity"/><interceptor-ref name="url"/></action>struts收到请求以后,将请求转发到core.dynamicSystemAct这个对象,注意这个这个class并不是真正的类,是类的别名,由spring通过标注@Controller进行绑定,web应用上下文可以通过classpath自动扫描到这个类。

@Controller("core.dynamicSystemAct")public class DynamicSystemAct在这个action执行之前,先要执行好几个拦截器。

其他struts和webwork 自带的拦截器不必说,主要说一下在程序里面自定义的几个比较重要的拦截器(定义在jeecms/src/struts-default.xml文件中)。

DomainNameInterceptorUrlInterceptorCookieIdentityInterceptor然后执行action自己的execute方法,产生2个参数:namespace = "/jeedynamic/" + sys;actionName = "Page";这2个参数决定了程序的走向,组成转发路径:/jeedynamic /jeecms/Page.do,然后通过查找下面的配置信息<package name="cms.front.page" namespace="/jeedynamic/jeecms" extends="empty-default"><action name="Page" class="cms.cmsPageAct"><result>${tplPath}</result><result name="pageCache" type="pageCache">${tplPath}</result><interceptor-ref name="exception"/><interceptor-ref name="chain"/></action></package>注:其他的请求过程类似,先找到命名空间,然后找到对应的action进行处理。

将请求转发给cms.cmsPageAct对象,同上的道理,对应到控制器:com.jeecms.cms.action.front.CmsPageAct。

拦截器处理完毕后,执行自己的execute 方法,判断若是首页,则执行sysIndex()方法,返回一个模板路径tplPath:/WEB-INF/user_base/jeecms_com_www/template /article/default/index.html,找到这个文件,是文章对应的首页模板,里面有使用的各freemarker标签@cms等。

二、jeecms使用freemarker标签示例及原理1、标签使用示例可以看到,在jeecms系统的html文档中经常有好多@cms等引用标签,这类标签是freemarker标签使用会是下列情况①、单独标签调用示例:[@cms.ChnlList/] [@cms. ArtiList /](这个是显示文章列表的)②、自定义标签调用示例:[@cms.ChnlList id='' inner='1';c,i]<a href="${c.url}">${}</a>[#if (i+1)%2==0]<br/>[/#if][/@cms.ChnlList]③、配合其它标签嵌套调用示例:[@cms.ChnlList id='' sysType='article' hasContent='1' inner='1';c]<table width="300" border="0" cellpadding="0" cellspacing="1" bgcolor="#eee"><tr><td height="30" bgcolor="#EEEEEE"><a target="_blank" href="${c.url}">${}</a></td></tr><tr><td bgcolor="#FFFFFF">[@cms.ArtiList chnlId=c.id sysContent='1-1' titLen='20' count='6' /]</td></tr></table>[/@cms.ChnlList]2、标签原理①部分常用标签参数:<#--Id:栏目idfirstResult:第一条记录。

(默认0)count:记录数。

(默认20)isPage:是否分页。

【0:不分页;1:分页】(默认0)pageNo:页号。

(默认当前页)cssClass:容器classcssStyle:容器styleinner:是否使用标签中直接编写html代码。

【0:否;1:是】(默认0) style:标签内部样式。

如果指定sysContent或userContent,则该项无效。

【1:普通列表;】(默认1)inner:是否使用标签中直接编写html代码。

【0:否;1:是】(默认0)isLoop:内容是否循环。

【0:不循环;1:循环】(默认1)sysTpl:使用系统模板。

【0:不使用;1:使用】(默认1)sysContent:系统内容样式。

(默认0)userContent:自定义内容文件名。

如果指定了系统内容样式,则该项无效。

(默认空)sysPage:系统分页样式。

【0:不分页;1:样式一;2:样式二】(默认0) userPage:自定义分页样式文件名。

如果指定了系统分页样式,则该项无效。

(默认空)custom:字符串数组。

用于个性化处理。

(默认空数组)-->②原理:如freemarker标签@cms,定义在配置文件freemarker.properties中:auto_import="/WEB-INF/ftl_lib//index.ftl" as p, "/WEB-INF/ftl_lib/jeecms/index.ftl" as cms@cms标签所用的ftl模板文件为index.ftl。

打开index.ftl文件,includes了多个ftl,其中有action_cms.ftl,该文件用标签#macro,自定义许多directive:ChnlList和CommentList 等。

里面使用struts2标签@s.action来请求数据,整个的index.html页面就是这么加载出来的。

通过freemarker引擎来解析数据模型,最后显示到前台,展现给客户。

index.html include head.html[@cms.ChnlList id='' inner='1';c]<li class="thisclass"><a href="${c.url}">${}</a></li>[/@cms.ChnlList]对应action_cms.ftl中macro ChnlList 定义,使用struts标签action <@s.action name='ChnlListInner' namespace='/jeecms/tag/cms'>在struts-front.xml中找到对应的class="cms.chnlPartAct".private Pagination tagChnlList() {list = cmsChannelMng.getChild(getWebId(), sysType, chnlId, orderBy,isDisplay == 1 ? true : false, hasContent == 1 ? true : false,firstResult, count);pagination = new Pagination(pageNo, count, list.size(), list);return pagination;}CmsChannelMng-->CmsChannelMngImpl-->BaseManagerImpl-->BaseDao-->BaseDaoImpl 待整理:如页面跳到action: article.articleActlist()将取出对应的文章pagination = articleMng.getRightArticle(getWebId(), chnlId,getAdminId(), queryInputAdminId, queryContentCtgId,queryDisabled, queryTopTime, queryTopLevel, queryStatus,queryTitle, queryOrder, pageNo, getCookieCount());(freemarker macro对应参数)最终掉到ArticleDaoImpl.public Pagination getRightArticle(Long webId, Long chnlId, Long adminId, Long inputAdminId, Long contentCtgId, boolean disabled,boolean topTime, int topLevel, int status, String title, int order,int pageNo, int pageSize)3、自定义标签(实例演示说明标签用法)自定义标签时候会用到Macro,Macro又叫宏,宏是在模板中使用macro指令定义,宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子。

相关文档
最新文档