dede二次开发经验总结

合集下载

织梦实战经验回忆录

织梦实战经验回忆录

织梦--dede1.http://localhost/文件夹名/后台目录名(自定义办法如下)修改后台目录的办法进入安装目录以后,把dede后台控制目录文件夹,2.网站的三元素:标题、关键字、与keyword在系统参数中我们可以修改网站标题、站点关键字、和站点描述等关闭图片水印也在系统参数里面当我们想做一个单页调用网上已经做好的网页可以在文件保存目录这一栏目中,键入需要链接的网址这几个目录我们一定要记住,方便我们以后对织梦的两次开发这几个文件控制具体网页的各个部分当我们修改新的模板时我们需要把新建模板的名称在系统参数这一栏里面就行修改同时,在生成主页这一栏我们也要在选择主页模板这一栏,把这个名字改一下。

或则使用一个标签{style} 就可以不用理会给模板文件夹叫什么名字了系统会通过这个标签自动获取这是几个我们必须要记得标签以至于我们可以正常的调用列表与文章内容[field:标签名/] {dede:field.标签名}当我们想从新安装dedecms时我们只需要把已安装的程序文件中,找到www目录下的install文件夹下的index.php.bak 与install_lock.txt文件即可我们首先要做的是把index.php.bak进行从命名为index.php,把install_lock.txt文件删除,就可以从新进行安装了这是我们在二次开发时所用到的几个必须的工具完成了这几步就算是简单的入门啦Wamp环境是我们要懂得window+appserv+mysql+php输入要仿制的网站的网址,加载相应的图片。

1.首先2.网站标题的调用站点描述:可以70-80个字Css的正确调用织梦图片调用的路径~~~因为一些js代码,一些功能或则照片调不出来,我们可以把代码从,js文件中复制到显示的界面进行修改即可实战操作1.站点根网址的改变方法<a href=”#”></a>这是一个空连接的意思这是提取文章头部内容的方法,在参数列表中找到对应的标签即可这是文章列表调用的几种方法增加这个变量以后,我们就可以在其中加入文字,来实现公告与网页上方文字的自动更新这是修改网页链接常用到的地方的这是修改友情链接的地方调取头部与尾部以及一些相似内容的模块针对于一些导航具有特定的属性的 <li class=” ”></li>这是封面页经常用到的地方这是在文章列表页时用到的标签内容页标题调用的方法文章内容页正文调用的标签这是制作分页时常用到的代码Page.css是保证分页能正常显示的前提,需要把其中控制分页显示的代码调用到指定的页面当中针对我们在网站上传入的图片有水印,我们可以在这里设置来消除水印这是调取文章缩略图时常用到的标签target=”_blank”是控制页面在一个新的页面中打开,这样可以提供用户体验限制列表,按最新发布时间排序修改网页列表或则滚动文字中文字的颜色我要保证自己的网站不被别人挂黑链接保证网站的安全备份数数据库网站的成功与虚拟主机的选择有很大的关系我们在本地做好的网站,准备上传到数据库中时,我们需要这些信息,域名解析需要一段时间才可以生效使用ftp工具上传上的压缩文件不能直接解压缩,需要我们登陆后台以后使用文件解压缩功能,对上传到服务器空间上的文件进行解压缩在我们上传到服务器空间后需要对程序进行重新的安装,我们需要将文件index.php.bak 改名成index.php 同时把文件install.lock.text文件删除,即可对成寻进行重新安装这里面信息也要修改否则,也会出现错误哦操作修改模板风格以及选择主页模板这里的名称先更新一次然后再把名字换成原来的再次更新就可以了1首先是删除安装目录中一些没有用到或则用不到的文件夹2.修改这个文件这是数据库配置文件把它改成只读的权限、3.修改用户登陆密码的办法修改用户名的方法,需要我们在数据库中进行修改清除浏览器缓存的方法这是我们需要做的几个步骤如何取消服务器/主机空间目录脚本的执行权限如何取消服务器/主机空间目录脚本的执行权限网站安全中,对目录的执行权限是非常敏感的,一般来说,可以写入的目录是不能够拥有脚本的执行权限的,像DedeCMS系统,可写入的有两个目录data、uploads,data目录主要是基本配置文件和缓存数据,uploads则是附件上传保存的目录,本篇将针对不同服务器环境来介绍如何取消这两个目录的执行权限,当然我们也建议用户其他一些生成纯静态html的目录,拥有可写入权限的也统统去除执行权限,这样系统会更为安全。

phpwind 二次开发技术要点

phpwind 二次开发技术要点

phpwind 二次开发技术要点PHPWind是一款非常受欢迎的BBS论坛系统,它拥有丰富的功能和灵活的二次开发能力。

在进行PHPWind二次开发时,我们需要掌握一些关键的技术要点,以便能够快速高效地完成开发任务。

一、了解PHPWind框架结构和核心功能在进行二次开发之前,我们需要对PHPWind的框架结构和核心功能有一定的了解。

这包括了解PHPWind的目录结构、文件组织方式以及核心功能模块的实现方式等。

只有了解了这些基本概念,我们才能更好地进行二次开发。

二、掌握PHP编程技术PHPWind是基于PHP语言开发的,因此我们需要熟悉PHP编程技术。

这包括了解PHP的语法、函数库和面向对象编程等方面的知识。

只有熟练掌握了PHP编程技术,我们才能够在二次开发中灵活运用这些技术,提高开发效率。

三、熟悉PHPWind的数据库结构和操作方法PHPWind的数据存储是基于关系型数据库的,因此我们需要熟悉PHPWind的数据库结构和操作方法。

这包括了解PHPWind的数据库表结构、字段含义和操作方式等。

只有熟悉了数据库结构和操作方法,我们才能够在二次开发中对数据库进行操作,实现自己的需求。

四、了解PHPWind的模板引擎和模板语法PHPWind使用自己的模板引擎来实现页面的展示和渲染,因此我们需要了解PHPWind的模板引擎和模板语法。

这包括了解PHPWind模板引擎的基本工作原理、模板语法的使用方法和常用的模板标签等。

只有掌握了模板引擎和模板语法,我们才能够在二次开发中灵活运用模板技术,实现自定义的页面展示效果。

五、熟悉PHPWind的插件机制和扩展接口PHPWind提供了插件机制和扩展接口,方便开发者对系统进行功能扩展和定制。

我们需要熟悉PHPWind的插件机制和扩展接口,了解插件的开发方式和接口的使用方法。

只有熟悉了插件机制和扩展接口,我们才能够针对自己的需求进行功能扩展和定制。

六、注重代码的规范和优化在进行PHPWind二次开发时,我们需要注重代码的规范和优化。

dede(织梦)二次开发手册之联动类别使用说明教程篇

dede(织梦)二次开发手册之联动类别使用说明教程篇

友情提供: 联动类别使用说明教程织梦在新版本V5.3中加入了一个联动类别的功能,不少人不理解这个联动类别的使用方法,本教程天涯就来介绍如何使用这个功能。

联动类别使用的地方还是比较多的,首先我们可以通过后台的[核心]-[频道模型]-[联动类别管理]查看,联动类别其定义如下:系统一种特殊的枚举数据类别,可以有系统内置或由用户管理。

系统内置的枚举用户是不可以删除的,但可以对这些数据进行添加子分类及修改。

到这里可能一些用户还是不了解什么是联动类型,下面我们举几个简单的例子。

一个最简单的联动类型是只有一级选择的类型,比如说系统内置的星座、教育程度、血型,这种类型你可以点击进去查看,其结构很简单,例如星座(star):在这个联动类别中级数为“一级选择”,就是在这个星座类别下面只有一列品级数据进行选择,我们点击进去可以查看到以下内容:这个让我们很容易联想到许多网站中设置用户资料的时候,需要用户选择星座,我们就可以通过一个下拉框进行选择:当然,上面说到的是最简单的联动类别,只有一级联动,这种一级联动就可以好比是一个下拉框,用户在选择具体数据的时候只要通过下拉框这种形式就可以对数据进行选择。

但是我们在很多联动数据中遇到不少需要二级联动的类型,例如我们在资料设置中选择“所在城市”这个类别,如下图所示这种数据类型就属于需要选择2次分类,首先选择上海市,然后列出上海市拥有的地区,然后再进行第二次选择,这就是一个二级联动的类别,我们可以通过系统后台查看联动类别中的地区来看看系统的枚举类型。

通过以上2个例子我们不难理解联动类型的概念,其实说简单了就是一种特殊的枚举数据类型,这种特殊的枚举类型运用在创建内容模型、用户资料等数据录入的页面中,其中应用在创建模型及用户自定义表单是联动类别最常用的地方,下面我们来介绍如何使用这个联动模型。

我们以创建一个“图书(book)”内容模型为例,这个模型中我们需要网站管理员(用户)提交一个图书特征的分类,我们知道以下图书特征的分类:线装书,精装书,平装书,袋装书,电子书,有声读物,盲人书下面我们就创建一个这个一级选择的枚举类型,这个类型叫图书特征(bookfeature),我们点击“新增类别组”来创建分类。

第八节 二次开发后的织梦网站上传到虚拟空间

第八节 二次开发后的织梦网站上传到虚拟空间

第八节二次开发后的织梦网站上传到虚拟空间一、突破dede标题长度60字节限制正确修改方法dedecms 对文章的标题长度作了限制,最长为60字节,这显然不够用。

下面是修改方法:1、进入dedecms后台,系统——系统基本参数——其他选项——文档标题最大长度——在这修改为200或更大(其实200应该是足够了)。

2、进入phpmyadmin,点击dede_archives 进入表——title——点击编辑——输入200 (根据需要调整)二、水印图片的设置:后台—系统设置三、修改连接数据库的密码:dedecms修改数据库的密码方法:站点根目录下-data-common.inc.php,修改用户名及密码即可四、文章下方的投票样式修改方法根目录—>include dedevote.class.php,打开修改相应的代码即可。

五、本地测试好的DEDE织梦程序怎么上传到新空间1、本地测试好的dede整个程序,将除intall文件之外的所有文件全部上传到FTP中。

2、将dede原始数据没有更改过的install文件夹上传到FTP中。

3、上传成功后,在地址栏中输入:http://域名/install/index.php,进行初始环境的安装,在安装过程中需要输入虚拟空间MYSQL数据的帐号及密码,其它选项自己设定即可。

安装成功。

4、将在本机使用的MYSQL数据库导出成独立SQL文件,登陆到虚拟空间的MYSQL管理界面,将本机数据库文件导入对虚拟空间中对应的数据库中。

5、导入完成,将install安装文件夹删除,将后台登陆文件夹改名:dede mycenter,测试网站即可。

六、上传到空间方法21.将二次开发的文件全部上传到虚拟空间,删除install/install_lock.txt2.更改install/index.php.bak 为index.php3.将install/index.html文件删除4.输入http://你的域名/install/index.php按向导操作即可。

6、dede织梦CMS二次开发--织梦功能整理

6、dede织梦CMS二次开发--织梦功能整理

织梦功能整理1、核心a)常用操作i.网站栏目管理ii.所有档案列表iii.等审核的档案iv.我发布的文档v.评论管理vi.内容回收站b)内容管理i.分类信息ii.普通文章iii.图片集iv.软件v.商品vi.专题管理c)附件管理i.上传新文件ii.附件数据管理iii.文件式管理器d)频道模型i.内容模型管理ii.单页文档管理iii.联动类别管理iv.自由列表管理v.自定义表单e)批量维护i.更新系统缓存ii.文档批量维护iii.搜索关键词维护iv.文档关键词维护v.重复文档检测vi.自动摘要|分页vii.TAG标签管理viii.数据库内容替换f)系统帮助i.参考文档ii.意见建议反馈iii.官方交流论坛2、模块a)模块管理i.模块管理ii.上传新模块iii.模块生成向导b)辅助插件i.插件管理器ii.挑错管理iii.百度新闻iv.文件管理器v.广告管理vi.友情链接vii.投票模块viii.bShare分享插件ix.站内新闻发布x.邮件订阅c)圈子管理i.分类设置ii.圈子列表iii.主题管理d)邮件订阅i.会员邮件管理ii.订阅期刊管理iii.订阅分类管理iv.群发期刊管理v.获取邮件地址vi.邮件列表管理e)问答管理i.栏目管理ii.问题管理iii.答案管理iv.幻灯片管理3、生成a)自动任务i.一键更新网站ii.更新系统缓存b)HTML更新i.更新主页HTMLii.更新栏目HTMLiii.更新文档HTMLiv.更新网站地图v.更新RSS文件vi.获取JS文件vii.更新专题HTML4、采集a)采集管理i.采集节点管理ii.临时内容管理iii.导入采集规则iv.监控采集模式v.采集未下载内容b)批量维护i.更新系统缓存ii.文档批量维护iii.搜索关键词维护iv.文档关键词维护v.重复文档检测vi.自动摘要|分页vii.TAG标签管理viii.数据库内容替换5、会员a)会员管理i.注册会员列表ii.会员级别设置iii.积分头衔设置iv.会员模型管理v.会员短信管理vi.会员留言管理vii.会员动态管理viii.会员心情管理b)支付工具i.点卡产品分类ii.点卡产品管理iii.会员产品分类iv.会员消费记录v.商店订单记录vi.支付接口设置vii.配货方式设置6、模块a)模板管理i.默认模板管理ii.标签源码管理iii.自定义宏标记iv.智能标记向导v.全局标记测试b)系统帮助i.参考文档ii.意见建议反馈iii.官方交流论坛7、系统a)系统设置i.系统基本参数ii.系统用户管理iii.用户组设定iv.服务器分布/远程v.系统日志管理vi.验证安全设置vii.图片水印设置viii.自定义文档属性ix.软件频道设置x.防采集串混淆xi.随机模板设置xii.计划任务管理xiii.数据库备份/还原xiv.SQL命令行工具xv.文件校验[S]xvi.病毒扫描[S]xvii.系统错误修复[S] b)支付工具i.点卡产品分类ii.点卡产品管理iii.会员产品分类iv.会员消费记录v.商店订单记录vi.支付接口设置vii.配货方式设置c)系统帮助i.参考文档ii.意见建议反馈iii.官方交流论坛。

关于织梦系统模板开发应用的经验

关于织梦系统模板开发应用的经验

关于织梦系统模板开发应用的经验今天简单说说对织梦系统(dedecms)模板应用的经验:我估计刚接触dede的朋友都会和我一样,一心想着弄一套非常漂亮的模板,来展示自己网站的“正规和强大”,那么从我的经历来看,其实这种想法和思路是错的。

我刚开始用用dede的时候就是总想着做一套自己的特色模板,要漂亮、要实用、要功能,但时间和水平却证明我的想法完全是错的。

毕竟自己也只是懂些html+css的皮毛东西,程序只是懂点asp而非php(朋友们疑问了,那为什么不用asp呢,其实最开始建站我用的就是动易,但发展到差不多的时候却发现access数据库无法实现我的想法,且动易是封装的很难实现自己的很多想法,于是转向了dede,不过现在看当时的这个想法也是偏激的,因为非常成功的考试吧就坚持了动易asp。

)因此,这些条件决定了很难自己开发出特色实用的模板,而自己却很固执,很失败。

因为我最终还是用了很长时间去浪费时间、金钱、精力去刻意的做一套大气、漂亮、独特的模板。

忽略了自己建网站的主要目的——盈利。

前前后后我总共换了5次以上模板,而每次给我带来的都是非常短暂的满足感,而后确是失落感——网站流量没有丝毫大的进展,只是网页的页面整齐了一点而已,网站内容收录和原创性也没有大的变化,更不可能引起搜索引擎的德亲睐。

试想,我如果没有可以的去理会这些无关痛痒的事,而去用设计模板的几个月全力去宣传和搞好网站内容建设,我想绝对是另一番境况(根据现在的收入状况来看,如果当初及时反省的话,我想收入是不会少的,我坚信自己这点,您可以不信)【在此,先默默的鄙视下自己以前的思路和做法,为了dede总是围着模板在转悠,也希望站长朋友们能审时度势、一开始就建站定好思路】。

事实上,我们知道dede比较适合于资金和人力匮乏的中小型站点,大点的站绝对不会没有自己的专业设计团队。

所以我想若要用dede建设中型站(还是有点资金和实力的),可以考虑找熟悉dede模板设计的人或者团队定制模板,没有必要自己搞——太浪费时间和精力;若要建小或者垃圾站站,直接在dede 论坛模板下载区下载一个别人发布的差不多的模板就可以了,更没必要浪费大量的精力去设计模板,更好的就是直接应用官方的默认模板就可以了,是否美观和收入是没有比例关系的。

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

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

以下教程希望对各位读者有所帮助前言:为方便互联网数万!爱好者,更加深入了解!软件,本人在熟悉!过程中,顺便将个人经验写给大家.本贴内容由本人定期更新.本贴只介绍!中部分技术点,本贴紧属个人观点,不足之处,请各位多多指教,在下先此谢过!.“!”在下文中简称“”.要弄二次开发,必须至少具备如下技能:)能够理很好理解构架地原理(虽然不是架构地))扎实地基础,熟悉结构化程序,程序地写法及应用)熟悉就用,掌握语言,懂优化者更佳)熟悉使用!地各项功能一)!地文件系统目录注:想搞开发,就得弄懂中每个文件地功能.) :后台管理功能模块) :系统与其它系统之间接口程序) :中,用以搜索引擎优化地无图版) :中,用户上传附件地存放目录) :中,用户自定义头像地目录) :缓存数据地存放目录) :模板中地图片存放目录) :常用函数库,基本功能模块目录) :统计来路用地数据) :插件信息地存放目录) :模板文件地存放目录) :无线,程序处理目录二)必须记熟!数据库设计地每个表地功能,每个表中每个字段地功能.关于数据库设计文档,请参阅相关地项目文档(请从本贴附件中下载)三)!地流程控制) 后台流程控:后台所有地功能,均需要注册到文件,每个功能都至少有一个或一个以上地(动作),在中,可以定义地执行权限,分别为:“”管理员,或“ ”超级版主和版主,每个对应一个脚本文件,脚本文件地命名为(*),并存放在目录下,如执行:,相当于执行目录下地文件) 前台流程控制:前台地流程控制比较简单:流程是自由地,如:首页:会员注册:;会员登录:发贴程序:会员信息:论坛内容:查看贴子:…大部分功能,此处不一一列出…) 根目下地属于整个系统地配置文件四)!地数据处理过程) 对地数据库操作处理全部封装在()类中) 所在地外部数据均通过“()”初步过滤,然后再过滤,再根据需要处理五)!地显示控制(网站多样式风格输出)) 显示层就是大家通常所看到地网站风格了.中每套风络分别在及下对应一个风格文件地存放目录.网站风格地制作,请参阅详细地风格制作文档) 网站风格文件处理地原理:其实很简单,使用中地()以正则运算把模文件中地模板标签,转换成了代码,并根据保存在下,这个有点像中地技术.六)中地语言处理) 前台及后台中、英语言地实现,均是把语句定义成了语变量,然后在模板输入,语句变量地赋值,均放在模板目录中地*文件中,在生成网站风格时就加载了这相应地语言包.七)如何处理用户信息(存取、计算、更新过程)新手要做二次开发,都必须掌握这数组中,每个数组元素地意义.) 地基本信息,如用户信息,信息存在如下变量中:). $). $). $). $). $) 可以通过($),打印全部变量八)中缓存处理机制) 中缓存处理过程都放在“”中,地缓存处理比较简单,其原理是把一个数组转换成了代码,并保存在缓存目录下,大家可打开缓存文件查看便知.) 使用方法:如果在新开地功能中,需要缓存某部分数据,基本上就是:)定义并注册缓存名字.)从数据读取相应地数据.)数据在写入缓存前作相应处理.)最后写入缓存.具体操作,可以看文件中地代码,做相应地修改即可九)中模板处理机制) 独创地模板处理技术,类似于中地模板处理,只是具体算法,过程不同,是一种重型模板引擎方案.其原理都是把模板中地变量转换成相应地代码,这个过程实际是模访中地一次编译,多处运行.十)中权限处理机制) 对于中前台地每相都有$定义,根据用户所在地用户组来判定用户是否具有相应操作$地权限.至于后台地权限权验证,则更简单了,依据“”来确定地十一)中如何实现静态化) 中地静态有两法,只要懂规划地朋友,一看就知.十二)独创地编辑器,如何截取并使用,如果进行!代和代码地转换) 这也算是比较牛地一项技术了,在早期版中,因编辑器地不足,使得很多用户放弃了.实现原理:通过把用地一些操作转换成了地代码.这样子提交了安全性,将带有代码地内容存入数据,在用户打开页页时,又把代码转换成代码本贴声明:由于时间有限,本贴只有关于部分功能地简短分析.若各位网友,对本文感兴趣并想更为深入了解,请在本贴后回贴!我将尽可能多地技术分析写在本文,不断更新本贴内容.部分文件说明:管理功能公告附件真正地首页这个是配置文件论坛文集精华帖子论坛版本号问题列表论坛列表跳转页面认证页面(登录退出)邮件配置用户操作个人控制面版零碎功能我地帖子插件短信发送帖子页面重定向注册限制搜索信息发布论坛查询验证码统计首页论坛专题主题管理显示个人信息主题显示文件夹管理接口文档附件自定义表情论坛数据包含缓冲数据图片公共文件安装包地址插件帮助文档模板工具包手机网站文件夹广告管理相关附件函数集论坛表情缓存函数集栏目最主要地头文件最主要地文件论坛文集函数论坛计数计划任务数据库数据库错误调试信息论坛代码编辑器编辑器编辑帖子浮动广告论坛函数集全局函数菜单其它新回复新主题*发表主题论坛打印相关主题安全邮件系统繁忙模板购买帖子资料个人收集整理,勿做商业用途。

dedecms5.7文章二次开发实现阅读全文功能的方法

dedecms5.7文章二次开发实现阅读全文功能的方法

本文实例讲述了dedecms5.7文章二次开发实现阅读全文功能的方法。

分享给大家供大家参考。

具体分析如下:阅读全文功能其实在很多的流行站点都有的,比如网易,新浪等,随着文章内容的增加,当一个页面有多个分页的时候,就会显示出这个“在本页阅读全文”的链接,点击这个链接之后出现的,将是这篇文章以没有分页出现的型式,那么在dedecms5.7如何在文章内容页添加阅读全文功能呢?这个阅读全文有什么用呢?说白了,也就是提高用户体验,下面让我们看看,怎么简单现实这个功能.修改文件:include/arc.archives.class.php注意:做任何修改前都要备份好原文件.第一步:打开include/arc.archives.class.php文件查找://issystem==-1往下大概145行找到:复制代码代码如下:$this-&gt;Fields['userip'] = $this-&gt;addTableRow['userip'];在下面一行添加:复制代码代码如下:$this-&gt;Fields['body2'] = $this-&gt;addTableRow['body'];第二步查找:复制代码代码如下:$this-&gt;dsql-&gt;ExecuteNoneQuery("Update `dede_archives` SET ismake=1 WHERE id='".$this-&gt;ArcID."'");在上一行添加以下代码:复制代码代码如下://阅读全文开始if($this-&gt;TotalPage &gt; 1) {//用正则匹配把分页符去掉$this-&gt;Fields['body2'] = preg_replace('/# p#副标题# e#/U', '',$this-&gt;Fields['body2']);$this-&gt;SplitFields = explode("#p2222#",$this-&gt;Fields['body2']);$this-&gt;Fields['tmptitle'] = (emptyempty($this-&gt;Fields['tmptitle']) ? $this-&gt;Fields['title'] : $this-&gt;Fields['tmptitle']);$this-&gt;Fields['title'] = $this-&gt;Fields['tmptitle'];$this-&gt;TotalPage = count($this-&gt;SplitFields);$this-&gt;Fields['totalpage'] = $this-&gt;TotalPage;$TRUEfilenameall = $this-&gt;GetTruePath().$fileFirst."_all.".$this-&gt;ShortName;$this-&gt;ParseDMFields(1,0);$this-&gt;dtp-&gt;SaveTo($TRUEfilenameall);if($cfg_remote_site=='Y' &amp;&amp; $isredir);$this-&gt;ftp-&gt;upload($localfile, $remotefile, 'ascii');}}//阅读全文结束第三步:查找获得静态页面分页列表,代码如下:复制代码代码如下:/*** 获得静态页面分页列表** @access public* @param int $totalPage 总页数* @param int $nowPage 当前页数* @param int $aid 文档id* @return string*/function GetPagebreak($totalPage, $nowPage, $aid){if($totalPage==1){return "";}//$PageList = "&lt;li&gt;&lt;a&gt;共".$totalPage."页: &lt;/a&gt;&lt;/li&gt;";$PageList = "";$nPage = $nowPage-1;$lPage = $nowPage+1;if($nowPage==1){$PageList.="&lt;a href='javascript:void(0);'&gt;&lt;&lt;/a&gt;";}else{if($nPage==1){$PageList.="&lt;a href='".$this-&gt;NameFirst.".".$this-&gt;ShortName."' target='_self'&gt;&lt;&lt;/a&gt;";}else{$PageList.="&lt;a href='".$this-&gt;NameFirst."_".$nPage.".".$this-&gt;ShortName."' target='_self'&gt;&lt;&lt;/a&gt;";}}for($i=1;$i&lt;=$totalPage;$i++){if($i==1){if($nowPage!=1){$PageList.="&lt;a href='".$this-&gt;NameFirst.".".$this-&gt;ShortName."' target='_self'&gt;1&lt;/a&gt;";}else{$PageList.="&lt;a class=\"here\" href='javascript:void(0);' target='_self'&gt;1&lt;/a&gt;";}}else{$n = $i;if($nowPage!=$i){$PageList.="&lt;a href='".$this-&gt;NameFirst."_".$i.".".$this-&gt;ShortName."' target='_self'&gt;".$n."&lt;/a&gt;";}else{$PageList.="&lt;a class=\"here\" href='javascript:void(0);' target='_self'&gt;{$n}&lt;/a&gt;";}}}if($lPage &lt;= $totalPage){$PageList.="&lt;a href='".$this-&gt;NameFirst."_".$lPage.".".$this-&gt;ShortName."' target='_self'&gt;&gt;&lt;/a&gt;";}else{$PageList.= "&lt;a href='javascript:void(0);'&gt;&gt;&lt;/a&gt;";}$PageList.= "&lt;a href='".$this-&gt;NameFirst."_all.".$this-&gt;ShortName."'&gt;阅读全文&lt;/a&gt;";return $PageList;}也就是在return $PageList 上一行添加了一行代码:复制代码代码如下:$PageList.= "&lt;a href='".$this-&gt;NameFirst."_all.".$this-&gt;ShortName."'&gt;阅读全文&lt;/a&gt;";修改完成后,保存文件,更新一下页面就可以看到效果了.希望本文所述对大家的dedecms建站有所帮助。

织梦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功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。

重庆科创学院网站开发之DEDE插件开发 带数据库操作 dede二次开发范例

重庆科创学院网站开发之DEDE插件开发 带数据库操作  dede二次开发范例

dede插件简单的例子这是一个很简单插件实例,通过此插件,你可以知道怎么样开发一个插件,它结构是怎么设置的,数据库,后台等。

文件结构:enroll.php 文件在 plus文件下enroll.htm文件在templets/plus 文件夹下adenroll.php 文件在dede文件夹下adenroll.html 文件dede/templet文件夹下sql 文件:CREATE TABLE IF NOT EXISTS `dede_enroll` (`id` int(4) NOT NULL auto_increment,`name` varchar(20) NOT NULL,`mail` varchar(30) NOT NULL,`tag` tinyint(1) NOT NULL default '0',PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;INSERT INTO `dede_plus` (`aid`, `plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALU ES(30, '网上报名', '<m:item name=''网上报名'' link=''adenroll.php'' rank=''plus_网上报名'' target=''main'' />', '', 'g1000', 1, '');这里说明下为了方便我简单的设置了两个字段姓名和邮箱 tag字段是标示是否录取 1为录取第一个insert语句是添加到后台管理第二个insert语句是添加到前台导航栏enroll.php复制代码<?php//*******要先包含common.inc.php 然后 session_start(); 否则取不到session的值//*******因为common.inc.php 有关于session路径的配置include_once dirname(__FILE__).'./../include/common.inc.php';//包含配置文件session_start();require_once DEDEINC."/arc.partview.class.php";//包含partiew类//*****实例化这个类的作用是得到头部导航栏和尾部信息若不需要可以使用dedetemplate.class.php 这个类$pv = new PartView();if($_POST){if( CheckEmail($_POST['mail'])==false){//验证邮箱方法在common.func.php 公用函数ShowMsg('邮箱格式错误','-1');exit();}if($_POST['name']==""){ShowMsg('用户名不能为空','-1');exit();}else{$name=htmlspecialchars($_POST['name']);}if($_SESSION['dd_ckstr']!=strtolower($_POST['validation'])){//验证验证码必须转换成小写ShowMsg('验证码错误',-1);exit();}$sql="insert into `cms_enroll`(name,mail) values('$name','$_POST[mail]')";//********$db可直接使用系统自动实例化了dedesql.class.php$affected = $db->ExecuteNoneQuery2($sql);//执行一条语句返回影响值if($affected){ShowMsg('报名成功',-1);}}else{$pv->SetTemplet(DEDETEMPLATE.'/plus/enroll.htm');//设置模板$pv->Display();//显示页面}?>enroll.htm复制代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/ DTD/xhtml1-transitional.dtd"><head><title>{dede:global.cfg_webname/}-在线报名</title><link href="{dede:global.cfg_templeturl/}/style/dedecms.css" rel="stylesheet" media="screen" type="tex t/css" /></script></head><body>{dede:include filename="../default/head.htm"/}<!-- 包含头部 --><blockquote style="margin:50px auto" ><form method="post" action="">姓名:<input type="text" size=30 name="name" /><br /><br />邮箱:<input type="text" size=30 name="mail" /><br /><br /><!--vdimgck.php 是验证码-->验证码:<input type="text" name="validation" /><img src="../../include/vdimgck.php" /><br /><br /> <input name="encoll" type="submit" value="报名" /><br /></form></blockquote>{dede:include filename="../default/footer.htm"/}<!-- 包含尾部 --></body></html>adenroll.php复制代码<?phprequire_once(dirname(__FILE__).'/config.php');//后台配置文件检查登陆配置信息require_once(DEDEINC."/datalistcp.class.php");//包含分页类if($_GET['action']&&$_GET['id']){if($_GET['action']=='pass'){//各种操作$db->ExecuteNoneQuery("update cms_enroll set `tag`=1 where id='$_GET[id]'");ShowMsg('录取成功','adenroll.php');}if($_GET['action']=='nopass'){$db->ExecuteNoneQuery("update cms_enroll set `tag`=0 where id='$_GET[id]'");ShowMsg('取消录取','adenroll.php');}if($_GET['action']=='delete'){$db->ExecuteNoneQuery("delete from cms_enroll where id='$_GET[id]'");ShowMsg('删除成功','adenroll.php');}}else{$dl = new DataListCP();$dl->pageSize = 10;//每页显示10条$dl->SetTemplate('./templets/adenroll.htm');//载入模板$sql="select * from cms_enroll";$dl->SetSource($sql);//执行sql 不能与$dl->SetTemplate 颠倒$dl->Display();//显示页面}?>adenroll.html复制代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/D TD/xhtml1-transitional.dtd"><head><title>在线报名管理</title><link href='img/base.css' rel='stylesheet' type='text/css' /><style type="text/css">th,td{text-align:center;border:1px #D1DDAA solid;font-size:15px;}th{background:#E6F8B7;}table{margin-top:20px;}</style></head><body><table width="90%" border="0" cellpadding="0" cellspacing="0" align="center"> <tr><th>姓名</th><th>E-mail</th><th>状态</th><th>操作</th></tr><!-- 循环得到结果 -->{dede:datalist}<tr><td>{dede: /}</td><td>{dede:field.mail /}</td><td>{dede:if field.tag==0}未录取{else}<font color="red">已录取</font>{/dede:if}</td><td> <a href="adenroll.php?action=pass&id={dede:field.id /}">[录取]</a>|<a href="adenroll.php?action=nopass&id={dede:field.id /}">[不通过]</a>|<a href="adenroll.php?action=delete&id={dede:field.id /}">[删除]</a></td></tr>{/dede:datalist}</table><!-- 分页标签 --><p style="text-align:center;font-size:15px;">{dede:pagelist listitem="info,index,end,pre,next,pageno" lis tsize="5"/}</p></body></html>。

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)等;•单表独立模型存储时候不用到“主表+附加表”的结构形式,直接使用单个数据表进行存储内容数据,这样脱离主从表,减少主表数据服在开销,可以从很大程度上解决数据负载问题;明白了以上几个概念我们可以来学习如何来自己创建一个内容模型了。

dedecms开发笔记

dedecms开发笔记

dedecms二次开发总结1.后台所有目录在upload/dede2.后台大标题修改在upload/dede/inc/inc_menu.php3控制器有三个,例如ad_add.php ad_main.php ad_edit.php4.模板放在templets下面,名字跟模块名字相同,格式为htm5.在数据库中增加数据,直接写sql语句$query = "INSERT INTO #@__ad(ad_code,ap_code,ad_name,weight,ck_flg,lang_id,show_flg, position,dis_id,ad_info,ad_pic,bg_colour,font_colour,width,hei ght,ps_id,link_url)VALUES('$ad_code','$ap_code','$ad_name','$weight','$ck_flg','$ lang_id','$show_flg','$position','$dis_id','$ad_info','$ad_pic',' $bg_colour','$font_colour','$width','$height','$ps_id','$link_url ');";$dsql->ExecuteNoneQuery($query);ShowMsg("成功增加一个广告!","ad_main.php");exit();6.也可以放入一个数组中,然后处理$dsql->Execute('dd','SELECT * FROM `#@__myadtype` ORDER BY id DESC');$option = '';while($arr = $dsql->GetArray('dd')){$option .= "<option value='{$arr['id']}'>{$arr['typename']}</option>\n\r";}7.模板分配$dlist = new DataListCP();$dlist->SetTemplet(DEDEADMIN."/templets/ad_main.htm");$dlist->SetSource($sql);$dlist->display();8.模板输出{dede:datalist}<td>{dede:field.weight /}</td><td>{dede:ng_id function='lang(@me)'/}</td>{/dede:datalist}9.模板输出可以使用函数改变输出值,function='lang(@me)'.函数在模块中定义.10.用旧数据插入随即排练插入多条数据INSERT INTO t_device(`DV_CODE`,`LANG_ID`,`PT_ID`)SELECTDV_CODE, LANG_ID, PT_IDFROM t_adver_ap11.添加全选按钮,进行删除等操作,删除只能是删除本页全选的数据<a href="javascript:selAll()"class="coolbg">全选</a><a href="javascript:noSelAll()"class="coolbg">取消</a><a href="javascript:checkArc(0)"class="coolbg">&nbsp;审核&nbsp;</a><a href="javascript:showArc(0)"class="coolbg">&nbsp;显示&nbsp;</a><a href="javascript:delArc(0)"class="coolbg">&nbsp;删除&nbsp;</a>js代码function selAll(){for(i=0;i<document.form2.arcID.length;i++){if(!document.form2.arcID[i].checked){document.form2.arcID[i].checked=true;}}}function noSelAll(){for(i=0;i<document.form2.arcID.length;i++){if(document.form2.arcID[i].checked){document.form2.arcID[i].checked=false;}}}//获得选中文件的文件名function getCheckboxItem(){var allSel="";if(document.form2.arcID.value) return document.form2.arcID.value;for(i=0;i<document.form2.arcID.length;i++){if(document.form2.arcID[i].checked){if(allSel=="")allSel=document.form2.arcID[i].value;elseallSel=allSel+"`"+document.form2.arcID[i].value;}}return allSel;}//获得选中其中一个的idfunction getOneItem(){var allSel="";if(document.form2.arcID.value) return document.form2.arcID.value;for(i=0;i<document.form2.arcID.length;i++){if(document.form2.arcID[i].checked){allSel = document.form2.arcID[i].value;break;}}return allSel;}function checkArc(ad_id){var qstr=getCheckboxItem();//if(aid==0) aid = getOneItem();location="ad_edit.php?qstr="+qstr+"&dopost=check";}function showArc(ad_id){var qstr=getCheckboxItem();//if(aid==0) aid = getOneItem();location="ad_edit.php?qstr="+qstr+"&dopost=show";}function delArc(ad_id){var qstr=getCheckboxItem();//if(ad_id==0) ad_id = getOneItem();location="ad_edit.php?qstr="+qstr+"&dopost=delete";}编辑模块代码if($dopost=='delete'){$qstrs = explode("`",$qstr);//print_r($qstrs);if( !empty($ad_id) && empty($qstr) ){$dsql->ExecuteNoneQuery("DELETE FROM `#@__ad` WHERE ad_id='$ad_id' ");ShowMsg("成功删除一则广告代码!",$ENV_GOBACK_URL);exit();}if($qstr==''){ShowMsg("请至少选择一个!",$ENV_GOBACK_URL);exit();}foreach($qstrs as $ad_id){$dsql->ExecuteNoneQuery("DELETE FROM `#@__ad` WHERE ad_id = '$ad_id' ");};ShowMsg("成功删除广告!",$ENV_GOBACK_URL);exit;}总结:写一个函数,获取全选的id值,然后各种按钮对应的操作以及传过去的值,这也写在一个js中,例如本例中delarc();然后在模块中根据各种情况进行操作,例如判断是从单个点击过来的,还是通过全选过来的.12.对于让select 选择后保持状态的问题最恨的招数就是把参数定死,然后在页面的对应选择框中加入如下代码<?php if ($_GET['ck_flg']==0) echo 'selected'; ?>这种情况用于进行搜索时候,默认值在数据库中没有值,但是你在一开始需要把所有结果都显示出来,(如果不加参数,会出现默认值为未审核,未审核的值为0)13.用以前模块改写时.容易出现问题,(我把广告管理改为应用管理),在插入数据库中时,始终改变不了类别,纠结了一晚上,原来是sql语句在修改时带上逗号或是丢了逗号,每回都那么巧,都有错,一定要细心.灵异事件发生,就要细心,细心,再细心!!!!14.如何在预览图片然后返回,一个办法是写链接时候target="_blank";另外一种办法就是先写个div,加载时候隐藏,然后用js控制,当点击原图片的时候,显示div,把这个div层的图片换掉,当再次点击,div又隐藏.控制层(定义一个函数)function MediaType($nurl){return "图片<a href=\"javascript:;\" onClick=\"ChangeImage('$nurl');\"><imgsrc='../include/dialog/img/picviewnone.gif' name='picview' border='0' alt='预览'></a>";}view层<style>.napisdiv{right:100px;top:200px;width:150px;height:100px;position:absolute ;z-index:3}</style><script>function ChangeImage(surl){document.getElementById("floater").style.display="block";document.getElementById('picview').src = surl; }function ChangeImages(surl){document.getElementById("floater").style.display="none";document.getElementById('picview').src = surl; }window.onload=hidediv;function hidediv(){document.getElementById("floater").style.display="none";}</script><div id="floater"class="napisdiv"><a href="javascript:;" onClick="ChangeImages('../include/dialog/img/picviewnone.gif');"> <img src='../include/dialog/img/picviewnone.gif'id='picview' name='picview'border='0'alt='单击关闭预览'style='z-index:10000'> </a></div><td>{dede:field.mediatype function="MediaType(@me)"/}</td>15.当数据库插不入数据的时候,检查两个方面,一个是sql语句是否错误,另一个是字段是否为非空.。

DEDECMS织梦二次开发详解

DEDECMS织梦二次开发详解

DEDECMS 织梦二次开发详解一、城市根据省市(IP)判断当地区域来显示当地内容,后台可以选择城市和修改区域,归类与合并。

可以手动选择城市地区,防止IP错误而导致城市区域不正确,可以根据方维O2O,或者团购城市判断来作为参考。

后台可以开启默认省市为默认值。

二、广告后台广告自定义功能的选择和修改,根据地区可以方便添加各类广告,如幻灯广告、悬浮广告、横幅广告,豆腐块广告,增加广告显示开始时间与结束时间,支持Flash、JPG、HTML以及JS其他页面调用。

明确前台广告标签方便添加和修改,可以根据目前DEDECMS 的后台广告功能进行修改和参考。

三、注解二次开发要明确开发注解,并已帮助文本说明模式表述清楚,防止以后进行再次开发后无法理解和操作。

具体可以参考方维网站的功能模式来开发。

关于城市布局:①可采用GET接口模式进行参数传递可设置按天气路径读取或采用手工输出显示模式加载天气网的参数接口②使用自定义城市模式,判断IP来源属性加载当地区域天气情况。

上述关于城市选项,可通过操作后台,进行插件功能定义操作。

广告布局模块:①可设置自定义广告模块大小,广告显示开始结束时间、广告格式类别(如flash 图文或js代码格式)②广告显示先后顺序,包括广告位置,设置调用为自定义参数,自定义操作广告布局顺序等广告显示操作。

关于程序安全问题:通过加载插件运行模式,对调dedecms后台,只通过后台验证管理,广告的修改添加删除均采用自定义参数模式代码编写添加模式,后台插件模块同时添加广告后台预览功能用于对调显示合理方案。

根据ip显示广告,后台可以添加广告后选择城市,当用户浏览网站的是时候根据自己的城市区域显示该地方广告。

二次开发的一些经验之谈

二次开发的一些经验之谈

如果您想从此贴直接获得一些有用的插件、模块、或代码,请绕道~~“授人以鱼”还是“授人以渔”,此贴是后者,希望对你有所帮助……* 提示:如果你是PHP编程有比较深入经验了,请只读红字内容即可,其它跳过。

如果你是PHP初学者,请仔细阅读所有文字,别嫌繁琐,对你提高有好处!1、执行header()前输出的空格、空行、任何字符,都会导致header()跳转失效!前几天,帮一个客户做了一些修改,把代码发给对方之后,对方后来反映说“后台栏目查看文章列表不行了”,我去查看果真如此,点击了栏目后面的“内容”进去,一片空白!这一点我当时百思不得其解,因为我做修改的代码,和这个功能完全没有关系!于是不得已,只好一步步做跟踪调试:首先要排查的是语法错误(如果当php.ini里设置是不显示任何错误的话,语法错也会导致一片空白),这个文件是dede/catalog_do.php(怎么知道是这个文件呢,很简单,在那个一片空白的页面上,点右键,看属性,就有地址URL和传递的参数),我把一行die("aa"); 放在了代码第一行,这个做法就可以测试有无语法,因为语法错不单可以发生在catalog_do.php文件本身,还可以发生在catalog_do.php文件所引用的文件里(包括这些文件里再引用的任何一级文件里),所以如果这个第一行die("aa"); 也不能执行,就必然是语法错。

因为能输出aa,也就是说语法没有错,就必定是某种程序上的逻辑错。

然后进一步寻找逻辑错误发生的文件,这就需要跟踪代码的所执行到的地方,由于没有任何提示,也还是利用die("aa"); ,把这一行往下挪到catalog_do.php文件的include、require等语句之后,如果不能执行,说明在include、require 所引用的文件里,代码执行就停止了,反之说明那些文件执行是正常的。

dede二次开发教程之列表页顶、踩效果

dede二次开发教程之列表页顶、踩效果

步骤: 第一步、在需要实现效果的列表模板页添加顶、踩标签代码,比如修改 list_article.htm;
{dede:list pagesize='15'} <li><div class="share fr"> <span id="diggNum[field:id/]"> <a id="unlike" class="dig" href="javascript:" onclick="javascript:postDigg('bad',[field:id/])">踩一下 <span class="count">(<span>[field:badpost/]</span>)</span></a> <a id="love" class="dig" href="javascript:" onclick="javascript:postDigg('good',[field:id/])">喜欢 <span class="count">(<span>[field:goodpost/]</span>)</span></a> </span> </div> [field:wbname/] </li> {/dede:list} 注:红色标记的代码十分必要,而且必须和第二步里面的 javascript 代码一一对应,否则没 有效果。除此之外,为了更好地看到效果,将此处代码粘贴到列表页里面自行调整缩进。 第二步、在列表页<head></head>标签里引用根目录下 include 文件夹里的 dedeajax2.js, 然后添加如下 javascript 代码,其实这段代码是来自内容页的,只是稍作修改,主要是红色 部分代码的修改,因为它必须和第一步里面的红色代码部分一一对应; <script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script> <script language="javascript" type="text/javascript"> function postDigg(ftype,aid) { var taget_obj = document.getElementById('diggNum'+aid); var saveid = GetCookie('diggid'); if(saveid != null) { var saveids = saveid.split(','); var hasid = false; saveid = ''; j = 1; for(i=saveids.length-1;i>=0;i--) { if(saveids[i]==aid && hasid) continue; else { if(saveids[i]==aid && !hasid) hasid = true; saveid += (saveid=='' ? saveids[i] : ','+saveids[i]); j++; if(j==20 && hasid) break;

ERP二次开发实习总结——技术实践与挑战

ERP二次开发实习总结——技术实践与挑战

ERP二次开发实习总结——技术实践与挑战ERP二次开发实习总结——技术实践与挑战2023年引言:时光荏苒,转眼到了2023年,我即将结束在某公司的ERP二次开发实习经历。

在这段时间里,我经历了各种技术实践与挑战,积累了宝贵的经验和知识。

本文将从实践的项目介绍、技术挑战与解决、个人成长等方面进行总结与反思。

项目介绍:在实习期间,我参与了某公司ERP系统的二次开发项目。

该项目旨在通过定制化的开发,满足公司特定业务需求,提升系统的灵活性和效率。

我所负责的是针对财务模块的二次开发,包括财务报表生成、数据分析等功能。

这个项目具有一定的挑战性,因为我需要深入了解财务领域的业务逻辑,并将其转化为可行的软件解决方案。

技术挑战与解决:1. 数据处理和报表生成:财务报表生成是项目的关键功能之一。

然而,在实际中,由于数据量庞大,生成报表的速度变得很慢,严重影响了用户体验。

为了解决这个问题,我首先进行了性能分析,发现瓶颈主要集中在数据查询和处理的过程。

随后,我采用了一系列优化策略,如优化数据库查询语句,增加缓存机制等,最终成功提升了报表生成速度。

2. 数据分析和可视化:除了报表生成外,数据分析也是财务模块的重要功能之一。

为了满足用户对数据分析的需求,我研究了一些流行的数据分析工具,并将其集成到系统中。

同时,我还设计了一些可视化界面,以直观展示数据分析结果。

这为用户提供了更加直观且易于理解的财务分析体验。

3. 代码重构与代码质量:在项目进行过程中,我逐渐认识到代码重构的重要性。

一开始,由于时间紧迫,我倾向于快速完成功能的开发,导致代码可读性和可维护性不高。

为了改善这种情况,我主动反思并采取了一些重构策略,如提取公共方法、模块化代码等。

这些重构措施不仅提高了代码质量,还为后续的开发和维护工作奠定了良好的基础。

个人成长:通过这次实习经历,我对ERP二次开发的理念和实践有了更深入的了解。

我不仅学到了丰富的技术知识,还培养了解决问题的能力和团队合作的精神。

【参考文档】二次开发自我总结-范文模板 (11页)

【参考文档】二次开发自我总结-范文模板 (11页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==二次开发自我总结Odb结构如图上所示(来自于doc),可以很明显地分成两部分:Model Data、Result Data。

所以要获取节点信息,材料信息,part信息以及截面信息得用到odb.Assembly, odb.material, odb.parts, odb.sections;而要提取应力,应变等结果就得用到odb.steps。

我们先一步步看看如何查看odb中的信息,最后汇总一下就知道如何写一个有特定功能的脚本了。

首先我们需要用到读取odb文件的python包,得用到import。

from odbAccess import *打开你要读的文件,这里就是viewer_tutorial.odb:odb=openOdb(r’c:\sujinghe\viewer_tutorial.odb’) 查看这个odb文件的具体信息: print odb输出如下: ({'analysisTitle':'DYNAMICLOADINGOFANELASTOMERIC,VISCOELASTIC', 'closed': False, 'customData': python object wrapper, 'description': 'DDB object', 'diagnosticData': 'OdbDiagnosticData object', 'isReadOnly': False, 'jobData':'JobDataobject','materials': 'parts':'Repository 'Repositoryobject', object','name': 'path':'c:/sujinghe/viewer_tutorial.odb','c:/sujinghe/viewer_tutorial.odb', 'profiles': 'Repository object', 'readInternalSets':False, 'rootAssembly': 'OdbAssembly object', 'sectionCategories':'Repository object','sections': 'Repository object', 'sectorDefinition': None, 'steps': 'Repository object', 'userData': 'UserData object'})可以显示各种数据的储存格式,其中可以看到OdbAssembly object存放当前odb的Assembly 相关信息, 而其他的Repository object表示当前对象存储在类似字典类型的数据结构中。

【待】DEFORM二次开发的一点小心得

【待】DEFORM二次开发的一点小心得

DEFORM二次开发的一点小心得!前一段时间闲着没事,看了DEFORM的help文件.和众位兄弟交流一下.用户子程序实现过程:第一步:所需文件准备:把DEF_SIM目录下的def_usr.f ,DEF_SIM_USR_ABsoft70.gui , DEF_SIM_P4_USR_ABsoft70.gui ,DEF_SIM_P4_USR_LIB.lib , DEF_SIM_USR_LIB.lib和lib目录下的所有.lib文件拷到工作目录下。

备份DEF_SIM.exe,DEF_SIM_P4.exe两个文件。

第二步:编写源程序。

对于新手可以使用模版自带的子程序,对于材料流动应力子程序模版里头本身就自带有一个,所以可以不需要自己编写。

(我就利用过自带的作过模拟,把前面的常数设置为10和100分别模拟)第三步:用absoft7.0或以上版本打开DEF_SIM_USR_ABsoft70.gui文档,指定好library files,用工作目录下的lib文件来替换原来默认的lib文件,上述做完后直接点build就ok了,自动生成了DEF_SIM.exe。

重复上面的过程打开DEF_SIM_P4_USR_ABsoft70.gui文档生成DEF_SIM_P4.exe。

第三步:用生成的DEF_SIM.exe,DEF_SIM_P4.exe替换原来的这两个文件。

第四步,运行模型。

对于流动应力子程序,只要在material那里选择子程序就ok 了。

注:3D中必须是DEF_SIM.exe,而DEF_SIM— P4.exe不好!(我也不知道原因,师兄是这么说的!).还有一个问题,关于DEFORM的text运行模式.在安装目录下面,有如下几个需要了解的文件:<1>DEF_PRE.EXE;<2>DEF_ARM_DEF_PRE.EXE这是前处理,DOS界面输入前处理参数设置,记录每次设置时的操作,按一定格式记录在记事本上面,这个很重要,二次开发可能需要这个文件.具体参见help.DEF_ARM_这是运行命令.具体格式见help.下面是关键:通过fortran子程序调用DEFORM.具体如下.我用的是visualfortran6.6.result=system('E:\DEFORM3D\V5_0\DEF_PRE.EXE')(启动前处理,弹出DEF_PRE.EXE界面)result=system('E:\DEFORM3D\V5_0\DEF_PRE.EXE<INI.TXT')(进行前处理参数设置,INI.TXT是记录每次设置时的操作命令流),譬如一个简单的操作命令流:<CR>21XXXX.KEY (key文件,需要copy到你的子程序目录下)<CR>E72XXXX.DB(生成DB文件)<CR>EY<CR>result=system('E:\DEFORM3D\V5_0\DEF_ARM_ XXXX B')(运行DB文件,XXXX为文件名,B表示batch模式运行)注意运行过程中,有可能生成临时文件,如FOR003等,会影响模拟进行,可通过fortran命令open和write操作清除.以上可以实现一些特殊的操作.如运动子程序等.上述即是我的一点小体会.很多我也不是很懂,自己的课题也不是DEFORM二次开发,也不专长编程.呵呵,希望对大家有所帮助!Re:请问能不能帖个自己二次开发加本构方程的例子这是我尝试过的关于流动应力的二次开发,希望能给没有做过二次开发的朋友一点经验~~~现在要好好研究二次开发和有限元软件的核心机制了~~~共同进步~~~program USRMTRreal YS,TEPS,EFEPS,TEMread (*,*,*)TEPS,EFEPS,TEMYS=123.5237-1.238956*TEM+3.8584*LOG10(EFEPS)+6.7852*TEPS-1.29*TEM*TEPS+52.895* LOG10(EFEPS)*TEPS+0.00088442*TEM*TEMPrint *,YSEND相信看了这个程序后,大家对二次开发肯定有个初步的了解了~呵~用户子程序具体实现心得结合论坛上各位大虾的经验和自带帮助,前段时间动手试了一下用户子程序的实现过程,现将自己的一些体会与大家共享,相信对做二次开发的新手有用用户子程序实现过程:第一步:所需文件准备:把DEF_SIM目录下的def_usr.f , DEF_SIM_USR_ABsoft70.gui ,DEF_SIM_P4_USR_ABsoft70.gui , DEF_SIM_P4_USR_LIB.lib , DEF_SIM_USR_LIB.lib和lib目录下的所有.lib文件拷到工作目录下。

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

调用说明:推荐会员(带用户头像)[quote]{dede:sql sql="SELECT mid,mtype,userid,uname,matt,faceFROM dede_memberwhere matt = 1 and mtype='个人'LIMIT 0 , 10"}头像:<img src="[field:face runphp='yes']if(!@me)@me = '/attachment/upload/87/11787.gif'; [/field:face]" />用户名:<a href='[field:global name='cfg_cmspath'/]/member/?[field:userid/]/'>[field:uname/]</a>{/dede:sql}[field:face runphp='yes']if(!@me)@me = '/image/post/smile/default/14.gif'; [/field:face]为用户头像图片[img]/attachment/upload/87/11787.gif[/img]是如果用户头像为空的话要显示的图像这个大家自己改吧[/quote]调用说明:会员积分排行[quote]{dede:sql sql="Select mid,userid,uname,scores From dede_member order by scores desc limit 0,10"}<dd><span class="name"><a href='[field:global name='cfg_cmspath'/]/member/?[field:userid/]/'>[field:uname/]</a></span><span class="jifen">积分[field:scores/]</span></dd>{/dede:sql}全部测试通过[/quote]这时需要通过dedecms后台中的ucenter模块进行Ucenter配置。

然后,在浏览器地址栏输入http://localhost/dede/login.php,打开后台管理登录界面,输入密码后进入dedecms后台管理。

dedecms后台管理界面的左侧导航栏,点击“模块”标签,注意下面的“UCenter模块”。

点击“UCenter配置”,进入以下页面。

“服务端地址“填:http://localhost/ucenter(本地机),创始人密码即是你在安装UCenter时设定的创始人密码;服务端IP地址填你的Ucenter安装的空间IP(本地机填127.0.0.1),输入后点“确认安装”。

出现安装成功提示。

退出dedecms管理后台,再次进入UCenter用户管理中心,这时我们会发现在“应用管理”中多了一项“我的网站”,并且显示的是“通信成功”了。

我们再通过浏览器访问http://localhost/uchome/index.php,用管理员的账号进入Uchome首页,点击“设置”进入另外一页,再点击右上角的“高级管理”,输入密码后点击“进入平台”进入高级管理平台。

在左侧导航栏的“高级设置”中找到一项“UCenter应用”点击进入。

在这里我们可以看到我们加入的三个应用,分别点击三个应用下面的“提交更新“。

退出管理界面,现在我们再回过头去测试一下看就可以同步了。

七、经验总结及疑问如果没有做到Dedecms、UChome、Discuz!中同时登录及退出的问题其关键就是在uchome中的“ucenter应用”中没有“提交更新”。

有时候安装dedecms、uchome或ucenter出现问题安装不了或出错等等,有的很多就是环境没有搭载好,所以我建议就安装dedecms提供的DedeAMPZForServer套件,至少在服务器的搭载上我们不需要花费太多的精力。

另外注意的是UCenter的配置。

比如“通信密钥”是否一致。

这个一般是导致 UCenter 与Dedecms、UChome、Discuz!等通信失败的主要原因之一。

这个密钥是可以自己随便写的,但要保证 UCenter 与 DIscuz 的密钥一致。

又比如“ID”。

查看 UCenter 后台的应用 ID 是否与Dedecms、UChome、Discuz!等后台的 ID 一致,如不一致,请修改各个应用后台的"UCenter 应用 ID"。

这个也是导致 UCenter 与 DIscuz 通信失败的主要原因之一。

关于UCenter的配置等这一点可以参考UCenter官方提供的说明手册。

功能:图书封面图片调用,含标题代码:<table border="0" width="100%" cellspacing="0" cellpadding="0"><tr>{dede:sql sql="Select id,bookname,author,pubdate,body,litpic From dede_story_books order by id desc limit 0,10"}<td><a href="/book/[field:idfunction=DedeID2Dir(@me)/]/[field:booknamefunction=GetPinyin(@me)/]-[field:id/].html"><imgsrc="[field:litpic/]" border="0" width="75" height="100" /></a><br /><a href="/book/[field:id function=DedeID2Dir(@me)/]/[field:bookname function=GetPinyin(@me)/]-[field:id/].html">[field:booknamefunction="cn_substr(@me,12)"/]</a></td>{/dede:sql}</tr></table>功能:最新连载内容调用,含栏目名称、书名、章节名、发布时间。

代码:<table width="688" border="0" cellpadding="0" cellspacing="0"> {dede:bookcontentlist row=10 booktype=0 orderby=lastpost author= keyword=}<tr><td align="left" width="30"></td><td width="300" align="left">[field:cataloglink/][field:booklink/]</td><td width="318" align="left">[field:contentlink/]</td><td width="40" align="right">[field:lastpostfunction="GetDateMk(@me)"/]</td></tr>{/dede:bookcontentlist}</table>功能:热门图书调用代码:{dede:booklist row=5 booktype=0 titlelen=10 imgwidth=80 imgheight=100 orderby=weekcc}[field:imglink /]{/dede:booklist}功能:推荐图书调用代码:{dede:booklist row=5 booktype=0 titlelen=10 imgwidth=80 imgheight=100 orderby=commend}[field:imglink /]{/dede:booklist}分类信息功能:调用地区与类型代码:{dede:infolink}<b>地区:</b>[field:nativeplace /]<br /><b>类型:</b>[field:infotype /]{/dede:infolink}功能:调用最新信息代码:{dede:arclistsg row=10 titlelen=32 orderby=pubdate channelid=-8 idlist=}[[field:typelink/]] [field:textlink/][field:pubdatefunction="MyDate(m-d,@me)"/]{/dede:arclistsg}功能:分类信息图片调用代码:{dede:arclistsg row=1 titlelen=30 flag=c,a infolen=80 orderby=pubdate channelid=-8 typeid=6 imgwidth=105 imgheight=137}<a href="[field:arcurl/]">[field:image/]</a><br/><ahref="[field:arcurl/]" >[field:title /]</a>{/dede:arclistsg}会员模块功能:分列显示,按积分排行,带头像。

相关文档
最新文档