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

合集下载

织梦DedeCms站点应用程序开发基本步骤

织梦DedeCms站点应用程序开发基本步骤

一、栏目规划首先需要明确建站的栏目,或是频道,或是列表,可能会有单页,还有可能是单一模块功能组合,使用DedeCms建站之前首先需要确定建站栏目,包含栏目标题,栏目描述,栏目关键词,以及栏目创建需要起到的效果,无论用户还是开发者有了这个基本栏目结构后才能确定解析来的开发需求。

每个栏目都有他的内容模型,内容模型专门用于列取,展示站点,会员发布的各种信息,内容模型的交互功能不复杂,主要以数据展示为主,管理员可以对内容模型发布的内容进行审核,删除等操作,在明确栏目的同时需要通过对栏目结构的了解,确定是使用内容模型,还是需要进行模块开发,例如:房产频道,这样一个栏目,由于主要是展现房产信息,所以主要采用内容模型的方式就可以满足,问答(类似百度问吧),由于其中需要涉及到各种权限,等级,内容积分操作,互动性比较强,这类的则需要进行独立模块的二次开发,当然确定模型和模块也是需要同技术团队进行简单沟通,不同技术团队实现的方式有所不同。

二、确定内容模型字段在第一步中我们知道了需要单独创建的内容模型,接下来就需要对内容模型中的各个字段进行明确,一般内容模型字段由用户确定(大多数内容模型字段可参考同类站点),确定模型字段最好采用以下格式:字段说明字段名(英文单词) 类型备注—————————————————–上架时间uptime 日期产品简介description 单行文本产品图片propic 上传图片产品详细信息body HTML内容字段名(英文单词)可有程序开发者提供,但对应字段说明应当配合用户了解清楚。

模型字段最好是在项目之初就进行确认,尤其是发布形式比较复杂的情况下,一旦确认进行开发,再次修改难度会比较大。

三、确认模板栏目确认和模型确认完毕后,基本上可以列出站点的模板结构,模板主要按照模型来,分为:首页,频道页,列表页,内容页,单页面,不同的栏目类型可能内容组织形式不同,所以这里需要跟用户沟通,了解清楚每个模板的类型,便于接下来模板的设计和制作。

织梦dedeCMS二次开发文档手册

织梦dedeCMS二次开发文档手册

DedeCMS二次开发必备基础:•非常熟悉HTML•熟悉DIV+CSS的布局•扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用•熟悉MYSQL,掌握SQL语言DedeCMS二次开发学习过程•理解CMS是什么•熟悉DedeCMS的功能(如:栏目的分类,文档管理,模型的使用,系统的设置等常用的功能)•掌握DedeCMS的模板标签使用及原理•DedeCMS目录结构分析熟悉每个文件夹里面主要装什么文件,这样在二次开发的时候知道在哪个文件夹下的什么文件修改目录结构摘要:./a 生成文件存放路径./data 缓存文件及数据中心/admin 管理后台数据/backupdata 备份数据/cache 缓存文件/enums 级别联动数据,JS,枚举类型的缓存文件/js 常用的JS/mark 水印相关文件/module 模块安装文件/rss Rss相关/sessions Session 存放路径/textdata 文本数据/tplcache 模板缓存/uploadtmp 上传文件缓存位置/ziptmp zip包解压缓存位置……•DedeCMS文件结构分析熟悉每个文件的基本功能,方便做修改,知道每个文件的大概作用之后,可以方便的对文件进行修改文件结构摘要:common.inc.php 数据库配置文件config.cache.bak.php 后台系统配置备份config.cache.inc.php 后台系统配置文件缓存downmix.data.php 采集混淆缓存文件mysql_error_track.inc MYSQL错误��志safequestions.php 安全问题sitemap.html 站点地图sys_pay.cache.php 支付网关配置template.rand.php 随机模板设置……•DedeCMS数据库结构分析,至少要熟悉每个表的作用熟悉每个表的作用,了解几个核心表的设计及字段的含义,方便拿到新的需求之后,能快速的判断是否加字段,还是新建表来处理。

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.官方交流论坛。

cms二次开发步骤

cms二次开发步骤

CMS(内容管理系统)二次开发的步骤通常包括以下几个阶段:
1. 需求分析:明确二次开发的目标和需求,包括需要增加的功能、改进的界面、优化的性能等。

2. 环境准备:搭建开发环境,包括安装CMS系统、配置服务器和数据库等。

3. 设计规划:根据需求分析结果,设计新功能的开发方案,包括技术选型、模块划分、接口设计等。

4. 代码编写:按照设计规划,进行具体的代码编写工作。

这可能包括创建新的模块、修改现有代码、添加新的功能点等。

5. 功能测试:开发完成后,进行详细的功能测试,确保新开发的功能能够正常运行,并且与现有系统兼容。

6. 性能优化:对系统进行性能测试,根据测试结果进行必要的性能优化。

7. 安全检查:对系统进行安全检查,确保新开发的代码没有安全漏洞。

8. 部署上线:将开发完成的系统部署到生产环境,并进行上线前的最终测试。

9. 用户培训:如果系统更新涉及到用户操作的改变,需要对用户进行培训。

10. 维护更新:上线后持续对系统进行监控和维护,根据用户反馈进行必要的更新和优化。

此外,在进行CMS二次开发时,还需要遵循一定的开发规范,例如插件制作流程,这有助于保证代码质量,便于后期的维护和升级。

如果是团队协作开发,还需要合理安排任务分配和进度跟踪,确保开发工作有序进行。

需要注意的是,不同的CMS系统可能有其特定的开发流程和技术要求,因此在进行二次开发前,建议详细阅读相关的开发文档和辅助教程,以便更好地理解系统的架构和开发接口。

5、dede织梦CMS二次发--标签篇

5、dede织梦CMS二次发--标签篇

标签篇adminname仅内容模板V55,V56,V57获得责任编辑名称基本语法{dede:adminname /}arclist全局标记V55,V56,V57获取指定文档列表基本语法{dede:arclist flag='h' typeid='' row='' col='' titlelen='' infolen='' imgwidth='' imgheight='' type='' orderby='' keyword='' limit='0,1'}<a href='[field:arcurl/]'>[field:title/]</a>{/dede:arclist}标签属性∙col:分多少列显示(默认为单列),5.3版中本属性可以通过多种方式进行多行显示∙row:返回文档列表总数(获取的总记录数)∙typeid:栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目∙getall:在没有指定这属性的情况下,在栏目页、文章页模板,不会获取以","分开的多个栏目的下级子类∙titlelen:标题长度等同于titlelength∙infolen:表示内容简介长度等同于infolength∙imgwidth:缩略图宽度∙imgheight:缩略图高度∙type: 栏目类型image含有缩略图commend推荐∙orderby:文档排序方式∙keyword:含有指定关键字的文档列表,多个关键字用","分∙innertext:单条记录样式∙aid:指定文档ID∙idlist:提取特定文档(文档ID∙channelid:频道ID∙limit:(起始ID从0开始)表示限定的记录范围(如:limit='1,2' 表示从ID为1的记录开始,取2条记录∙flag:自定义属性值:头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]∙noflag:同flag,但这里是表示不包含这些属性∙orderway:值为desc 或asc ,指定排序方式是降序还是顺向排序,默认为降序∙subday:表示在多少天以内的文档∙Limit和row 的优先级limit 优先∙关于图片显示,如果没有type属性那么所有记录都显示缩略图,没有缩略图的显示默认的,type属性值为image 时显示只带缩略图的记录,type属性值为commend时显示推荐的记录∙同一属性多次存在时,执行最后一个属性值arclistsg全局标记V55,V56,V57单表独立模型的文档列表调用标记基本语法{dede:arclistsg flag='h' typeid='' row='' col='' titlelen='' orderway='' keyword='' limit='0,1'}<a href='[field:arcurl/]'>[field:title/]</a>{/dede:arclistsg}标签属性∙row:返回文档列表总数∙typeid:栏目ID,在列表模板和档案模板中一般不需要指定,在封面模板中允许用","分开表示多个栏目∙titlelen:标题长度等同于titlelength∙orderwey:排序方向∙keyword:含有指定关键字的文档列表,多个关键字用","分∙innertext:单条记录样式(innertext是放在标签之间的代码)∙arcid:指定文档ID∙idlist:提取特定文档(文档ID)∙channelid: 频道ID∙limit:表示限定的记录范围∙flag:自定义属性值:头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]∙subday:表示在多少天以内的文档∙arcpagelistask全局标记V55,V56,V57问答调用标签基本语法{dede:ask row='6' qtype='new' tid='0' titlelen='24'}<dd><span class="tclass">[<a href='[field:typeurl/]'>[field:tidname/]</a>]</span><span class="tlink"><a href="[field:url/]">[field:title/]</a></span></dd>{/dede:ask}标签属性∙row:调用条数∙qtype:排序类型commend 推荐、ok 表示已解决问题、high 高分问题、new 最新问题∙tid:栏目id,默认是全部∙titlelen:标题长度autochannel全局标记V55,V56,V57指定排序位置的单个栏目的链接基本语法{dede:autochannel partsort='' typeid=’’}{/dede:autochannel}标签属性∙partsort:栏目所在的排序位置∙typeid:获取单个栏目的顶级栏目bookcontentlist全局标记V55,V56,V57连载图书最新内容调用基本语法{dede:bookcontentlist row='12' booktype='-1' orderby='lastpost' author='' keyword=''} <table width="100%" border="0" cellspacing="2" cellpadding="2"><tr><td width='40%'>[[field:cataloglink/]] [field:booklink/]</td><td width='40%'>[field:contentlink/]</td><td width='20%'>[field:lastpost function="GetDateMk(@me)"/]</td></tr></table>{/dede:bookcontentlist}标签属性∙row:调用记录条数∙booktype:图书类型,0 图书、1 漫画,默认全部∙orderby:排序类型,当按排序类型为commend 表示推荐图书∙author:作者∙keyword:关键字booklist全局标记V55,V56,V57连载图书调用基本语法{dede:booklist row='12' booktype='-1' orderby='lastpost' author='' keyword=''}<a href='[field:bookurl /]'>[field:bookname /]</a><br />{/dede:booklist}标签属性∙row:调用记录条数∙booktype:图书类型,0 图书、1 漫画,默认全部∙orderby:排序类型,当按排序类型为commend 表示推荐图书∙author:作者∙keyword:关键字cattree全局标记V55,V56,V57调用树形类目基本语法{dede:cattree typeid='' catid='' showall=''/}标签属性∙typeid:顶级树id∙catid:上级栏目id∙showall:在空或不存在时,强制用产品模型id;如果是yes 刚显示整个语言区栏目树;为其它数字则是这个数字的模型的id∙Typeid 存在值表示获取该栏目同级的同类型分类树,catid 存在值获取该栏目下的分类树∙Catid 的优先级高于typeidchannel全局标记V55,V56,V57用于获取栏目列表基本语法{dede:channel type='top' row='8' currentstyle="<li><a href='~typelink~' class='thisclass'>~typename~</a> </li>"}<li><a href='[field:typelink/]'>[field:typename/]</a> </li>{/dede:channel}标签属性∙typeid:栏目ID∙reid:上级栏目ID∙row:调用栏目数∙col:分多少列显示(默认为单列)∙type:son表示下级栏目,self表示同级栏目,top顶级栏目(top 最高,只要有该值不管typeid 和reid 的值)∙currentstyle:应用样式∙channelartlist全局标记V55,V56,V57获取当前频道的下级栏目的内容列表标签基本语法{dede:channelartlist row=6}<dl><dt><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></dt> <dd>{dede:arclist titlelen='42' row='10'} <ul class='autod'><li><a href="[field:arcurl /]">[field:title /]</a></li><li>([field:pubdate function="MyDate('m-d',@me)"/])</li></ul>{/dede:arclist}</dl>{/dede:channelartlist}标签属性∙typeid:频道ID∙row:获取的栏目返回值demotag全局标记V55,V56,V57这仅是一个演示标签基本语法{dede:demotag /}feedback全局标记V55,V56,V57用于调用最新评论基本语法{dede:feedback}<ul><li class='fbtitle'>[field:username function="(@me=='guest' ? '游客' : @me)"/] 对[field:title/] 的评论:</li><li class='fbmsg'> <a href="plus/feedback.php?aid=[field:aid/]" class='fbmsg'>[field:msg /]</a></li></ul>{/dede:feedback}标签属性∙row:调用评论条数∙titlelen:标题长度∙infolen:评论长度flink全局标记V55,V56,V57用于获取友情链接基本语法{dede:flink row='24'/}标签属性∙type:链接类型∙row:链接数量∙titlelen:站点文字的长度∙linktype:链接位置内页∙typeid:所有类型,可以在系统后台[模块]-[友情链接]中的“网站类型管理”中查看∙flinktype全局标记V55,V56,V57用于获取友情链接类型基本语法{dede:flink row='24'/}标签属性∙row:链接类型数量∙titlelen:链接文字的长度group全局标记V55,V56,V57圈子调用标签基本语法{dede:group row='6' orderby='threads' titlelen='30'}<li><span><img style="visibility: inherit;" title="[field:groupname/]" src="[field:icon/]" /></span> <span><a href="[field:url/]" title="[field:groupname/]" target="_blank">[field:groupname/]</a></span></li>{/dede:group}标签属性∙row:调用条数∙orderby:排列顺序(默认是主题数)∙titlelen:圈子名称最大长度groupthread全局标记V55,V56,V57圈子主题调用标签基本语法{dede:groupthread gid='0' orderby='dateline' orderway='desc' row='12' titlelen='30'}<li><a href='[field:groupurl/]' target="_blank">[[field:groupname function="cn_substr(@me,10)"/]]</a><a href="[field:url/]" title="[field:subject/]" target="_blank">[field:subject/]</a>([field:lastpost function="GetDateMk('@me')"/])</li>{/dede:groupthread}标签属性∙gid:圈子id,默认为全部∙orderby:排序,默认为时间∙orderway:排序方向,默认是最新主题在前∙row:记录数∙titlelen:主题标题(subject)最大长度hotwords全局标记V55,V56,V57获取网站搜索的热门关键字基本语法{dede:hotwords /}标签属性∙num:关键词数目∙subday:天数∙maxlength:关键词最大长度∙infoguide全局标记V55,V56,V57分类信息的地区与小分类搜索基本语法{dede:infoguide /}infolink全局标记V55,V56,V57调用分类信息地区与类型快捷链接基本语法{dede:infolink /}json全局标记V57调用某个远程连接的json数据库基本语法{dede:json url='http://yoursite/json.php' cache=300}[field:id/]-[field:title/]<br/>{/dede:json}标签属性∙url:json数据地址∙cache:缓冲时间likearticle全局标记V55,V56,V57自动关连文档标签基本语法{dede:likearticle row='' col='' titlelen='' infolen=''}<a href='[field:arcurl/]'>[field:title/]</a>{/dede:likearticle}标签属性∙col:分多少列显示(默认为单列)∙row:返回文档列表总数∙titlelen:标题长度等同于titlelength∙infolen:表示内容简介长度等同于infolength∙mytypeid:手工指定要限定的栏目id,用,分开表示多个∙innertext:单条记录样式(指标签中间的内容)likepage全局标记V55,V56,V57调用相同标识单页文档基本语法{dede:likepage likeid='' row=''/}标签属性∙row:调用条数∙likeid:标识名∙likesgpage全局标记V55,V56,V57单页文档调用标签基本语法{dede:likespage row=''/}标签属性∙row:调用条数loop全局标记V55,V56,V57调用任意表的数据标签基本语法{dede:loop table='dede_archives' sort='' row='4' if=''} <a href='[field:arcurl/]'>[field:title/]</a>{/dede:loop}标签属性∙table:查询表名∙sort:用于排序的字段∙row:返回结果的条数∙if:查询的条件memberinfos全局标记V55,V56,V57文档关连的用户信息基本语法{dede:memberinfos mid = '' /}标签属性∙mid:用户IDmemberlist全局标记V55,V56,V57会员信息调用标签基本语法{dede:memberlist orderby='scores' row='20'}<a href="../member/index.php?uid={dede:erid /}">{dede:erid /}</a> <span>{dede:field.scores /}</span>{/dede:memberlist}标签属性∙row:调用数目∙iscommend:是否为推荐会员∙orderby:按登陆时间排序money 按金钱排序scores 按积分排序myad全局标记V55,V56,V57获取广告代码基本语法{dede:myad name=''/}标签属性∙typeid:投放范围,0为全站∙name:广告标识∙mynews全局标记V55,V56,V57站内新闻调用标签基本语法{dede:mynews row='' titlelen=''/}标签属性∙row:调用站内新闻数∙titlelen:新闻标题长度∙mytag全局标记V55,V56,V57用于获取自定义宏标记的内容基本语法{dede:mytag typeid='0' name=''/}标签属性∙name:标记名称,该项是必须的属性,以下2、3是可选属性∙ismake:默认是no 表示设定的纯HTML代码,yes 表示含板块标记的代码∙typeid:表示所属栏目的ID,默认为0 ,表示所有栏目通用的显示内容,在列表和文档模板中,typeid默认是这个列表或文档本身的栏目ID∙php全局标记V55,V56,V57调用PHP代码基本语法{dede:php}$a = "dede";echo $a;{/dede:php}productimagelistsoftmsg软件内容模板V55,V56,V57下载说明标签基本语法{dede:softmsg /}sonchannel全局标记V55,V56,V57子栏目调用标签基本语法{dede:sonchannel}<a href='[field:typeurl/]'>[field:typename/]</a>{/dede:sonchannel}标签属性∙row:返回数目∙col:默认单列显示∙nosonmsg:没有指定ID子栏目显示的信息内容∙sqlV55,V56,V57用于获取MySQL数据库内容的标签基本语法{dede:sql sql='' db='default'}[field:title/]{/dede:sql}标签属性∙sql:需要查询的sql语句∙appname: 默认为default,即当前dedecms的数据库,如果需要自定义,可以在data/tag/sql.inc.php中扩展,具体扩展方法查看配置文件头部说明tag全局标记V55,V56,V57TAG调用标签基本语法{dede:tag sort='new' getall='0'}<a href='[field:link/]'>[field:tag /]</a>{/dede:tag}标签属性∙row:调用条数∙sort:排序方式month,rand,week∙getall:获取类型0 为当前内容页TAG标记,1为获取全部TAG标记type全局标记V55,V56,V57表示指定的单个栏目的链接基本语法<a href="[field:typelink /]">[field:typename /]</a>{/dede:type}标签属性∙typeid:指定栏目IDvote全局标记V55,V56,V57用于获取一组投票表单基本语法{dede:vote id='' lineheight='22' tablewidth='100%' titlebgcolor='#EDEDE2' titlebackground='' tablebgcolor='#FFFFFF'/}{/dede}标签属性∙id:数字,当前投票ID∙lineheight:表格高度∙tablewidth:表格宽度∙titlebgcolor:投票标题背景色∙titlebackground:标题背景图∙tablebg:投票表格背景色。

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=" 你的标题" > 通过以上方法就可以成功关联新浪微博了。

织梦CMS二次开发教程 实现图集缩略图的分页样式

织梦CMS二次开发教程 实现图集缩略图的分页样式

首先织梦CMS系统不用过多介绍了,织梦好,好之梦!织梦CMS5.7版本里默认自带有三种图集样式,模板名称分别为article_image.htm、article_image_cl.htm(新浪样式)、article_image_new.htm(这个是5.7才有的图文幻灯样式)。

最近在做女人说的图集模板时发现dede默认的图集模板无法像文章一样实现分页样式,多次问度娘、谷哥均无果,于是仔细的对织梦的文件研究了一下发现织梦是可以实现这种样式的(如下图)。

现将方法分享给大家,这也是织梦论坛上大家最热关注的焦点哦!问题分析:若要实现这种分页方式,第一在要在分页时把缩略图的地址也调用进去,可是打开分页标签文件一看,没有缩略图数据。

那怎么办。

我们只能通过二次开发进行新建一个专门用来图集分页调用的一个函数,如果要改动{dede:pagebreak/}的话,在文章的相关分页方式上可能会出现问题。

因此建议我们自己新建函数以免出现其他问题。

解决方法:第一步:打开arc_archives_class.php,在include目录下,在结尾处加上以下代码:/*** 获得动态页面图集中图片缩略列表** @access public* @param int $totalPage 总页数* @param int $nowPage 当前页数* @param int $aid 文档id* @return string*/function GetlitpicDM_list($totalPage,$nowPage,$aid){global $dsql,$sqlCt;$attlist="desclen|80";FillAttsDefault($ctag->CAttribute->Items,$attlist);extract($ctag->CAttribute->Items, EXTR_SKIP);if(!isset($this->addTableRow['imgurls'])) return ;$revalue = '';$dtp = new DedeTagParse();$dtp->LoadSource($this->addTableRow['imgurls']);$images = array();if(is_array($dtp->CTags)){$pagenum=1;foreach($dtp->CTags as $ctag1){if($ctag1->GetName()=="img"){$litpic.='<LI><DIV class=img><A title="'. $ctag1->GetAtt('text').'"href="view.php?aid='.$aid.'&pageno='.$pagenum.'"><IMGstyle="BACKGROUND-IMAGE: url('.$ctag1->GetAtt('ddimg').')"src="'.$GLOBALS['cfg_templets_skin'].'/tukustyle/blankBg.gif" ></A></DIV><Ahref="view.php?aid='.$aid.'&pageno='.$pagenum.'">'.substr($ctag1->GetAtt('text'), 30).'</A> </LI>';$pagenum++;}}}return $litpic;}/*** 获得静态页面图集中图片缩略列表** @access public* @param int $totalPage 总页数* @param int $nowPage 当前页数* @param int $aid 文档id* @return string*/function Getlitpic_list($totalPage,$nowPage,$aid){global $dsql,$sqlCt;$attlist="desclen|80";FillAttsDefault($ctag->CAttribute->Items,$attlist);extract($ctag->CAttribute->Items, EXTR_SKIP);if(!isset($this->addTableRow['imgurls'])) return ;$revalue = '';$dtp = new DedeTagParse();$dtp->LoadSource($this->addTableRow['imgurls']);$images = array();if(is_array($dtp->CTags)){$pagenum=1;foreach($dtp->CTags as $ctag1){if($ctag1->GetName()=="img"){if($pagenum==1){$litpic.='<LI><DIV class=img><A title="'. $ctag1->GetAtt('text').'"href="'.$this->NameFirst.'.'.$this->ShortName.'"><IMGstyle="BACKGROUND-IMAGE: url('.$ctag1->GetAtt('ddimg').')"src="'.$GLOBALS['cfg_templets_skin'].'/tukustyle/blankBg.gif" ></A></DIV><Ahref="'.$this->NameFirst.'_'.$pagenum.'.'.$this->ShortName.'">'.substr($ctag1->GetAtt('t ext'),0,30).'</A> </LI>'; }else{$litpic.='<LI><DIV class=img><A title="'. $ctag1->GetAtt('text').'"href="'.$this->NameFirst.'_'.$pagenum.'.'.$this->ShortName.'"><IMGstyle="BACKGROUND-IMAGE: url('.$ctag1->GetAtt('ddimg').')"src="'.$GLOBALS['cfg_templets_skin'].'/tukusty le/blankBg.gif" ></A></DIV><Ahref="'.$this->NameFirst.'_'.$pagenum.'.'.$this->ShortName.'">'.substr($ctag1->GetAtt('t ext'),0,30).'</A> </LI>'; }$pagenum++;}}}return $litpic;}最后就是模板的调用了,这就不再细说了,当然这只是一种方法!本文首发站长网,女人说原创内容,转载请注明出处。

重庆科创学院网站开发之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>。

织梦学习

织梦学习

以上就是我对dedecms的介绍,有什么问题?
第二节 安装及使用dedecms
接下来的内容,不详细讲了,就是普通的软件使用问题,但是有一份文档很珍贵,应该在网上找不到的
1、如何安装dedecms
参考文章:</html/zaix ... ng/20070107/54.html>这个安装说明是3.1的安装说明,4也是一样的。
9)自定义标记
DedeCms支持自定义标记,并且允许在自定义标记中使用模板代码,允许对不同的类别使用不同的内容,使系统的灵活性达到前所未有的高度。
10)常用附件
DedeCms 提供了投票、友情链接、站点公告、留言本、论坛扩展等附助模板,使你更轻松的创建你的网站。
11)一键备份功能
DedeCms内置的文章系统模型更注重全文索引、搜索引擎优化等方面,支持将远程媒体本地化,支持自动获取关键字,并生成索引,支持从Word里粘贴内容,此外对文章关键字、置顶、高亮这些细节的地方也作了处理。dedecms作者自己开发了分词算法,让dede在系统本身就具备某些seo的天性。
5)专题
据说2007能支持更多的模型,期待中,目前这些模型应该是大部分cms都支持的常见功能。
2)栏目管理
DedeCms栏目与频道模型是关连的,支持无限级分类,允许用户手动选择单个栏目的模板,允许用户自行设定栏目列表和文档的命名规则,允许使用一个单独页面作为栏目,支持自动用拼音作为文档的名称。对于栏目管理,我所关注的是每个栏目可以支持单独的模板。
有关环境的配置,尤其是linux和freebsd的,可以参考我的博客文章/expendable/archive/2007/06/16/1654181.aspx

dedecms 二次开发视频教程免费下载

dedecms 二次开发视频教程免费下载

完整教程免费下载地址:/share/link?shareid=233875&uk=704942441要求:1.同一开发环境. W AMP2.最终完成a67 手机电影网的70%功能.(相当于静态页面已经提供.)3.学习过程中,我们会分析源码和dede数据库的设计思想-> phpcms 或者cmstop4.参加工作有 a. 全新开发b. 加入一个团队,一起开发. c 数据的设计.学习DEDE的二次开发◆cms的基本概念cms(content management system) 内容管理系统,主要是管理内容变化不大的数据(新闻,软件,商品,文章, 电影,视频....),◆主流的cmsdedecms [中小型网站,使用在企业级的网站不少见.]phpcms [中型网站,对大型网站也很好.]cmstop [据说对大型网站支持最好]◆dede的特点1.简单、实用,开源(源码.)2.专门用于个人,中小型门户网站., 企业也可以支持3.架构PHP+mysql4.前台是静态页面(访问速度开) ->页面静态化技术.◆dede的安装1.先卸载apache和mysql, 成功卸载.2.安装Wamp (该软件包括apche+mysql+php+phpmyadminj),如果安装后,小的半圆式白色,说明成功!3.把uploads 文件夹拷贝到www目录4.把uploads 改成dedecms名字5.浏览器中输入http://localhost/dedecms/index.php6.进入安装界面,记住吧gd库打开,否则后面登录管理员界面不能成功!7.指定admin的密码,然后看到如下界面8.登录到dedecms的后台管理先把dedecms/dede改成manage,然后http://localhost/dedecms/manage9 .当进入到管理页面后,需要做一个安全修改强烈建议data/common.inc.php文件属性设置为644(Linux/Unix)或只读(NT);DEDE的快速入门需求1: 现在老板要求你做一个文章管理系统,栏目(类别)包括(武侠、爱情、音乐...) ,每个栏目(类别)有对应的文章,文章已经给你准备好了,请你在30分钟搞定该网站,怎么样?1.先看看dede默认的前台首页面是怎http://localhost/dedecms/index.php2.说一个dede 原理3.我们做栏目1.先进入后台管理->网站栏目管理说明: 当我们增加一个栏目时,实际上在dede数据库中有一张表dede_arctype表中增加了一个记录.2. 给每个栏目增加文章后台->核心->普通文章(+)->添加文章☞当你添加一篇文章后,①其实就在在dede_archives表中添加了记录,同时在另外一张附加表dede_addonarticle 中记录额外信息.②生成了静态页面., 并连接3. 生成栏目的静态页后台->生成->更新栏目HTML先在请大家完成如上功能.这里dede设计使用垂直分割的技巧.注意: 如果希望在首页面看到最新的文章,请更新首页面的HTML后台->生成->更新主页面HTML刚才我们说:dede的首页面包括前台是可以是静态页面,dede 支持前台页面静态化,步骤后台->生成->更新主页面HTML在dede开发过程中,目前有四类表关系一览图◆思考题2: 如果现在我们要做的是电子商务网站,卖我们的商品,这时用文章这样的形式来管理还合适吗?—> 每个栏目都可以指定一个内容模型什么是内容模型呢?步骤1:先看看dede是否已经提供了商品的模型,如果提供了,你直接使用,否则自己创建. 后台->核心->内容模型管理看看是否有!有就使用,步骤上面一样.思考: 如果默认给的某个模型字段信息不够,怎么办?->自定义模型.◆需求3: 在添加某个商品的时候,我们希望多一个信息,就是付费方式,还希望多一个邮资信息,我们又该怎样处理?- 引出修改内容模型的问题步骤:1.点击核心->内容模型管理->商品修改->字段管理->添加新字段.说明: 当你操作完毕后,就会在对应的附件表中增加了一个对应的字段.◆需求4: 请各位同学看看,这里我们有一个问题,就是当你点击武侠,爱情,电器的时候,会找不到对应的页面,这是为什么呢?这个就是直接点击更新栏目HTML说明: 我们设计网站前台的时候,可以参考这样一个思路: 网站分三级目录首页面->栏目页->内容页◆思考题:1. 栏目(类别)是保存在哪个表中的. 2. 一篇文章,一个商品它们最终是存放在数据库中的哪些表中?◆答: 栏目(类别)是保存在哪个表中的. dede_arctype◆一篇文章,一个商品它们最终是存放在数据库中的哪些表中?内容是分别放在两张表,一张是他的主表,该主表是通用dede_archives , 附件表dede_addonXXX.◆在DEDE中增加内容的基本步骤是怎样?(1)找模型,如果有的话,你可以使用,但是你也可以自定义一些字段,你也全新的创建一个模型,比如: 我现在要搞一个电影网站.增加一个模型的步骤是:a.点击核心->内容模型管理->增加新模型, 进入页面后,自己看看就知道怎样添加了说明: 当你增加一个模型后,就会在数据库中增加一个对应的附件表dede_addonXXX(2)添加一个栏目,根据你的实际情况来定, 刷新一把才看到(3)增加内容,根据实际情况输入即可◆说明一下DEDE 的目录结构dedecms/a 目录用于存放生成的静态页面dedecms/data 目录用于存放临时文件和缓存文件dedecms/images 目录用于存放dede自己的图片dedecms/include 目录核心类库(标签库,操作图像的类,操作数据库的类)dedecms/install 目录,安装信息dedecms/manage 目录,存放后台管理程序dedecms/member 目录,存放会员管理程序dedecms/plus 目录,存放插件程序,和将来你开发的程序模块dedecms/templates 目录,存放dede前台的所有模板文件dedecms/uploads 目录,存放你上传的图片、视频。

织梦DedeCMS调用二级子栏目或者循环调用多级栏目

织梦DedeCMS调用二级子栏目或者循环调用多级栏目

织梦dedeCMS调用二级子栏目或者循环调用多级栏目在网站制作过程中经常都会遇到。

今天博主以DEDECMS v5.6版本调用代码作为示范,调用顶级栏目及其下的所有子栏目的代码。

进入正题:{dede:channelartlist typeid='3,3'}<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a><hr>{dede:channel type='son' noself='yes'}<a href="[field:typelink/]">[field:typename/]</a><br />{/dede:channel}{/dede:channelartlist}如果是已经熟悉了dedecms代码朋友我想已经能看懂是什么意思了,但是还是解释一下。

{dede:channelartlist typeid='3,3'} typeid为3的顶级栏目如果你的顶级栏目为其他,则相应的改之。

如果是循环调用很多个顶级目录和子目录怎么办呢?请往下看:{dede:channelartlist typeid='3,6‘}<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a><hr>{dede:channel type='son' noself='yes'}<a href="[field:typelink/]">[field:typename/]</a><br />{/dede:channel}{/dede:channelartlist}请看红色部分,意思是调用顶级栏目为3,4,5,6,的顶级栏目了。

Discuz 二次开发

Discuz 二次开发

Discuz 二次开发DZ程序文件目录含义基于7.0的标准程序,部分与插件无关的文件不作说明文件颜色说明:红色:程序核心文件,修改这类文件时千万要注意安全!橙色:做插件几乎不会用到的文件,大概了解功能就可以了,其实我也不推荐修改这些文件绿色:函数类文件,许多功能强大的自定义函数可以调用这类文件来使用蓝色:最标准的插件制作常用文件紫色:该文件被Zend加密,请不要修改这类文件每个目录里面都有一个空的index.htm,这是为了防止列目录用的,不必理会.根目录./(这里都是最基本的程序)admincp.php——后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处理管理控制。

ajax.php——论坛模板的ajax判断及数据返回都在这里进行attachment.php——附件文件,仅仅处理附件下载的功能。

announcement.php——论坛公告的显示,一般很少改config.inc.php——配置论坛数据库、密码等信息,这个大家最熟悉了Discuz_version.php——论坛版本信息,用来更新用的,没有官方说明绝对不要修改eccredit.php——论坛商品功能以及信用度查看的处理文件faq.php——论坛自带的帮助favicon.ico——显示在IE标题栏的的图标forumdisplay.php——很简单,论坛主题列表的显示index.php——控制首页元素显示invite.php——论坛邀请注册程序文件leftmenu.php——首页侧栏文件logging.php——登陆系统,判断用户名、密码。

magic.php——论坛道具程序文件,处理道具购买、赠送等操作medal.php——论坛勋章中心程序文件,处理勋章发送等功能member.php——控制会员列表显示,积分策略等等信息显示memcp.php——会员个人中心显示misc.php——控制评分功能、论坛界面显示功能等等modcp.php——这个是论坛前台的版主操作的迷你后台程序my.php——查看一切和自己在这个论坛的行为,例如“我的帖子”,“用户组权限”等等plugin.php——论坛插件,这个主要控制论坛插件的菜单的显示,一般极少修改pm.php——论坛短信息程序,控制短信息发表与浏览post.php——与viewthread.php相似,但是更多是管理帖子发表、编辑等等信息,也会有权限的控制提示redirect.php——控制显示论坛的最后发表的主题访问,也控制主题的转向功能register.php——注册文件,同时也会控制注册的信息的合法性relatekw.php——论坛相关标签生成relatethread.php——论坛相关主题robots.txt——设置里面的地址可以阻止搜索机器人访问对应的页面rss.php——RSS快速订阅,不用多说了吧?search.php——处理论坛搜索功能中的信息筛选seccode.php——论坛注册,生成验证码的程序sitemap.php——论坛SiteMAP功能程序space.php——个人资料查看的程序stats.php——处理“统计”中的统计信息,也允许查看论坛对应的统计数据tag.php——论坛标签整理页task.php——论坛任务程序,任务主程序触发,判断均在此进行topic.php——一般无法直接访问,控制页面显示,显示主题条数topicadmin.php——控制的是管理人员的前台管理操作,如精华、置顶、高亮等等trade.php——处理论坛的交易主题video.php——处理论坛的视频主题,包括显示和调用。

DEDECMS织梦二次开发详解

DEDECMS织梦二次开发详解

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

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

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

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

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

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

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

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

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

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

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

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

DedeCMS教程,DedeCMS二次开发

DedeCMS教程,DedeCMS二次开发

DedeCMS V5.3二次开发希望对大家有用一、模板篇1.1、主要模板文件与功能说明DedeCMS系统的模板是非固定的,用户可以在新建栏目时可以自行选择栏目模板,官方仅提供最基本的默认模板,即是内置系统模型的各个模板,由于DedeCMS支持自定义频道模型,用户自定义新频道模型后,还需要按该模型的字段设计一套新的模板,此外,DedeCMS 也支持使用风格的形式使用模板,默认风格是default,它表示系统默认使用{cmspath}/templets/default 这个文件夹的模板,如果你下载了一套新的模板,你可以不必要删除default 原有的文件,把下载的模板文件夹命名你想要的风格名称,如style2 等,然后在后台修改了默认的模板风格名称为style2 ,那系统将使用{cmspath}/templets/style2 这文件当作默认模板,但是若你手工指定了栏目模板的位置,则后台参数风格的定义无效。

一、概念,设计和使用模板,必须要理解下面几个概念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]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某个频道的模板命名。

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做文章,写扩展的。

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;

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会员信息:member.php论坛内容:forumdisplay.php查看贴子:viewthread.php…大部分功能,此处不一一列出…c) DZ根目下的config.inc.php 属于整个DZ系统的配置文件四)Discuz!的数据处理过程a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理五)Discuz!的显示控制(网站多样式风格输出)a) 显示层就是大家通常所看到的网站风格了。

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

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

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

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

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

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

一个完整的内容模型包含模型数据表、数据字段、模型模板、模型参数4个部分,制作一个内容模型大致有以下几个步骤:1.模型规划;2.模型制作;3.模板制作;4.栏目设置,下面我们从上面4个步骤来讲解内容模型的制作。

这里我们以一个图书模型(book)为例子,这个模型主要功能就是介绍书籍。

模型规划模型规划分为几个部分一个是模型应用方面的规划,其次就是字段信息方面的规划,以图书(book)模型为例子,我们现规划一个频道使用这个模型,这个频道作用就是让大家分享一些好的学习资料,这里主要是编程方面的书籍,所以栏目划分大致如下:[网络编程书籍]|____[ASP相关]|____[PHP相关]|____[JSP相关]|____[.NET相关]这几个栏目是支持会员投稿的,因为这个推荐的书籍不是很多,所以直接采用主从表的形式,不使用独立单表模型,因为涉及到会员分享,所以这里需要会员投稿,我们给投稿会员级别设置为中级会员才有权限,并且需要摘要和说略图,投稿之后需要经过管理员审核,这样基本的使用规划完成,下面就是字段方面的规划了。

因为介绍一本书,我们规划了以下内容:出版社publish 单行文本(varchar)出版时间pubtime 时间类型字数cnum 整数类型版次pubnum 整数类型页数pagenum 整数类型印刷时间pritime 时间类型开本kbook 单行文本(varchar)印次prinum 整数类型纸张pages 单行文本(varchar)I S B N isbn 单行文本(varchar)包装packs 单行文本(varchar)内容简介body HTML文本作者简介wrbody HTML文本目录bindex HTML文本这样,我们完成了第一步模型的规划。

模型制作规划完成了,接下来我们开始将这些规划的内容创建为一个内容模型。

首先以超级管理员身份登录到系统后台。

点击[核心]-[模型管理],点击“增加新模型”按钮来创建模型。

按照系统提示配置模型的基本信息,这里因为选择的是自动模型,所以档案发布的相管程序页面只需要保留默认即可。

因为我们发布的是图书,所以这里“投稿标题使用名称”设置为:图书名称。

因为这里我们使用的是自动模型,没有自己制作相应的发布管理程序,所以下面的相关模型发布程序保持默认即可,当然如果你有一定的编程能力,可以自己制作一个内容发布程序,然后在这里指定即可。

基本信息设置完毕,直接单击确定即可,进入到字段管理的页面,点击字段管理中的“添加新字段”按钮,进入字段添加页面,我们根据相关的字段信息进行字段添加。

下面是一些字段类型我们对部分字段进行一些说明:单行文本(varchar):常用字段,如文章标题、作者等都属于直接输入少量内容的文本,设置这个文本之后需要指定文本长度,默认为250,如果大于255则为text类型多行文本:也是较为常用的字段类型,如个人简介、产品描述都可以使用多行文本进行存储HTML文本:用织梦编辑器编辑产生的html内容,用于比较复杂的内容形式附件类型:可以后台上传附件让用户下载,附件类型可以在后台进行设置option下拉框:下拉选择,一般用于如软件类型、语言类型等字段联动类型:一种数组形式的数据类型,可以在系统后台联动类型管理中进行设置了解了这些字段类型我们就可以添加我们的字段信息了。

添加完成点击确定即可,这样我们就完成了这个模型的制作。

模型添加完毕之后我们发现在内容发布的地方多出来一个发布图书的选项,这个说明我们的模型就已经成功添加了。

模板制作我们通过织梦帮助中心的《主要模板文件与功能说明》了解到每个模型还需要制作对应的模型模板文件,我们可以通过后台模型管理中的模板文件说明查看模板文件。

模板制作主要有2个地方需要讲解下。

1. 列表页模板list_[识别ID].htm中显示在列表中需要调用添加扩展的字段需要在添加字段页面勾选“使字段可以在列表的底层模板中获得(自定义字段默认仅能在文档模板显示,启用此选项将使列表查询变慢,如无必要请不要选择)”,这样在{dede:list/}标签中就可以使用[field:fieldname/]来进行调用。

2. 内容页的标签可以使用{dede:field.fieldname /} 进行调用,具体可以参考帮助中心模板相关的帮助文档。

栏目设置接下来我们就可以来添加一个栏目,在栏目设置中将栏目的内容模型设置为图书然后我们就可以在这个栏目下添加文档,会发现我们现在可以发布图书内容了添加完成之后,我们可以浏览我们的网站页面,预览我们的模型效果。

至此我们完成了整个模型的制作,整个过程还是非常简单的。

这里只介绍了自动模型的制作,当然有一定PHP基础的用户可以自己开发系统模型,这样就会拥有更为强大的织梦系统,使得网站内容更加丰富。

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

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

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

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

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

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

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

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

创建完成后我们将类别的内容全部添加到这个类别中去,在页面中提示我们如果一次性添加多个类别可以用“,”将不同类别隔开,然后一次性添加。

这样我们就创建完成了这个图书特征(bookfeature)的联动类型,接下来我们要应用这个联动类型,我们在新创建的模型中添加字段,在字段添加的页面中添加相应的字段名称,选择数据类型为联动类型,如下图所示:在我们发布图书内容的时候,就会发现有一个选择是图书特征的内容类型选择,不过个人建议如果设计一级联动选择,最好还是使用“option下拉框”这个数据类型。

使用同样的字段设置方法也可以添加其他二级联动的字段,这个我们可以查看“分类信息”这个模型里面的联动类型数据。

当然我们在系统的自定义表单中也可以使用这个联动类型,使用的方法和模型管理里面添加字段是一样的,这里就不再重复了。

当然,在二次开发中也会遇到在一些页面调用这些枚举的列表,可以查看/include/enums.func.php第61行GetEnumsForm这个函数,具体的使用可以参考下会员中心编辑用户信息这个页面文件的方法,具体文件为/member/templets/ edit_info_person.htm。

枚举类型在模型制作和系统开发中用到的地方还是比较多的,大家可以有空的时候进行一些研究,会发现更多关于联动类型的应用方法,不要忘记分享哦。

相关文档
最新文档