欢迎光临
我们一直在努力

cfd二次开发(Dede二次开发程序详解(dede学习必备一))

文章介绍

调用说明:推荐会员(带用户头像)

[quote]

{dede:sql sql=”SELECT mid,mtype,userid,uname,matt,face

FROM dede_member

where matt=1 and mtype=’个人’

LIMIT 0 , 10″}

头像:[field:tidname/]]

amp;$lt;a [field:url/]”>[field:title/]amp;$lt;/span$amp;>amp;$lt;br />

{/dede:ask}

适用于V5.5版本,其他版本未测试。

先来看一段代码:

{dede:sql sql=’Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON

A.id=D.id order by downloads DESC limit 0,10; ‘}

amp;$lt;a [field:id runphp=’yes’] $id=@me;@me=”;$url=GetOneArchive($id);@me=$url[‘arcurl’];[/field:id] “>[field:title/]下载次数[field:downloads/]

{/dede:sql}

这个就是SQL调用下载排行的,已经实现了静态地址调用。limit 0,10; 的意思是调用10调,想调用多少条只要修改“10”为你想要的数字,如过你想实现调用特定版块的下载排行,只需要在limit 0,10; 的后面加上”where typeid=xx ” XX就是栏目ID。比如我想调用栏目10的下载排行,代码就是这样:

{dede:sql sql=’Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON

A.id=D.id WHERE typeid=10 order by downloads DESC limit 0,10;’}

amp;$lt;a [field:id runphp=’yes’] $id=@me;@me=”;$url=GetOneArchive($id);@me=$url[‘arcurl’];[/field:id] “>[field:title/]下载次数[field:downloads/]

{/dede:sql}

这里有个小技巧:typeid=后面的值可以用当前栏目ID的标签,这样可以在每个栏目列表页实现当前栏目的下载排行调用,具体的望读者自己探究。当然也可以用typeid >或者<来限定栏目范围。

特定栏目调用已经解决,那么就剩下分时段调用了,可分为日,周,月,年,甚至自定义天数或者小时,代码如下:

{dede:sql sql=’Select A.id,A.title,D.id,D.downloads from dede_archives as A Left Join dede_downloads as D ON

A.id=D.id WHERE typeid=10 and pubdate > UNIX_TIMESTAMP( CURDATE( ) – INTERVAL 7 day) order by downloads DESC limit 0,10;’}

amp;$lt;a [field:id runphp=’yes’] $id=@me;@me=”;$url=GetOneArchive($id);@me=$url[‘arcurl’];[/field:id] “>[field:title/]下载次数[field:downloads/]

{/dede:sql}

注意,我这是在上一个特定栏目的前提下再加一个时间条件语句,所以,我用了 and ,后面蓝色字体部分为所需要的内容,如果不想特定栏目,就把有色字体部分代码和紧跟着的“AND”去掉就行。pubdate > UNIX_TIMESTAMP( CURDATE( ) – INTERVAL 7 day) 的意思是取7天内的数据,我们只需要修改数字”7″就可以实现我们的目标,比如10天就是pubdate > UNIX_TIMESTAMP( CURDATE( ) – INTERVAL 10 day) ,如果想调用一个月的数据,那就是pubdate > UNIX_TIMESTAMP( CURDATE( ) – INTERVAL 1 month) 一年的话只要把”day”改成”year”即可。

标签到这里基本上已经完美了。希望大家自己多多实验,多探究,多查相关资料。

如果有不懂请留言。

附送另外一个小小的标签,关于调用今日更新情况的调用:

amp;$lt;strong>小小说阅读amp;$lt;div align=right$amp;>amp;$lt;font size=3>这些部分组成,

用于解释模板标记使用功能,建议新手都把这些标记功能看看,大致做一个了解。

由于Dedecms模板大致分为首页、频道、列表、内容以及其他附加模板组成,使用范围指出 这些标记在哪些模板中起作用。模板文件夹中(以Dedecms默认模板为例,即{cmspath} emplets\default)大家可以仔细分析 下,模版中很多都是以下列这些名字出现index.htm,index_X.htm(封面模板),list_X.htm(列表模 板),article_X.htm(内容模板),你可以对照标记的适用范围,查看这些标签在哪个模板中能起到作用。

用于介绍模板基本使用方法,在使用时候可以拿来根据自己的需要进行响应的修改。

这些属性,决定你调用的内容,决定Dedecms解析这些标记的形式,属性非常重要。

以上这些介绍主要是让大多数新手 学会看帮助文件,模板修改使用的大多数问题都是因为自己不去看这些帮助文件导致的,希望广大Dedecms新人引以为戒。

下面就来简单说下Dedecms模板的分类,搞过ASP的人应该知道,动态网页基本上就是对变量、数组(数据库)的操作,然后通过语句输出为 HTML,dedecms的这些标记也是起到同样的效果。

下面根据起到的不同效果对模板进行如下分类:

一.变量操作型这里的变量不同于对编程中那个复杂的变量,新人不懂,我这里所指出的变量是Dedecms调用局部内容进行输出的一些标记,这里有: 以及还有系统不常用的(其实天涯经常使用),例如global 标记、include 标记、mytag标记、position 标记,这些标记大家可以看出,都是输出来为一部分内容,并不可以重复,这个标记在解析时候生成的只是一块不重复的内容。

二.数组操作型这里的数组当然在模板标记中,指的是循环输出一些内容的标记,例如N行文章、N个软件、N个会员信息等等,Dedecms这些标记有: 当然 也有foreach这种“罕见”的标记,这些标记使用时,通过属性设置,能循环输出一些列内容,很多重复的东西,往往 只要一个标记就搞定,不信可以开个模板仔细观察观察。

有了这个分类以后,在修改、制作模板时候相信会得心应手了,天涯在修改、制作模板中经常使用的标记有sql、include、loop(貌似现在被sql 取代了)、mytag这些标记,因为这些标记很“自由”,当 然新人可以在模板制作修改中尝试使用这些灵活自由的标记。

本篇接下来简单讲一下数组操作性标记的原理以及他的使用方法。

我们在Dedecms模板中经常看到下面这样的例子:

{dede:arclist row=4 titlelen=20 orderby=pubdate typeid=58}

amp;$lt;span>[field:pubdate function=strftime(‘%m-%d’,@me)/][field:textlink/]

{/dede:arclist}

这里我们使用了arclist标记,通过属性我们可以得到下列相关信息:

row=4 调用4行这样的数据

titlelen=20 取标题的前20个字符(2个字符为一个中文字符)

orderby=pubdate 排列顺序为按照发布时间排列,当然你也可以选择其他,帮助有详细说明。

typeid=58 调用栏目id为58栏目的文章

标记都是通过 {dede:arclist}这个开始,{/dede:arclist}结束,这个和html有的相像,所以做dedecms模板,最好熟练下html的 相关知识。

开始、结束标记中含有[field:textlink/]这样的标记,新手需要记住的是[field:textlink/]只可能存在于{dede:XXX}{/dede:XXX}之间,绝对不肯能拿出来单独使用!

其他数组操作性标记都是同样的原理,只是将繁琐的从数据库调用的东西简化为dedecms标记,dedecms在解析时候读取标记然后进行查询、输出等一 些后续操作。新手注意的是,熟练掌握什么是频道页、列表页、内容页,以及调 用内容关系和范围,根据自己的页面需要,使用不同的标记达到效果,这是新手在不断实践的基础下才能掌握的。

文件:include/inc_function.php 系统默认会载入此文件

GetCurUrl()

获得当前得脚本得URL

GetAlabNum($str)

把字符串里得全角数字转为半角数字(会把非数字类型字符删除)

Text2Html($txt)

文本转HTML

Html2Text($str)

获得HTML里得文本

function ClearHtml($str)

清除HTML标记

cnw_left($str,$len)

中文截取把双字节字符也看做一个字符

cn_substr($str,$slen,$startdd=0)

中文截取2,单字节截取模式

GetMkTime($dtime)

把中文得时间格式转换为Linux时间截,对于不能识别得格式,会返回time()

SubDay($ntime,$stime)

返回减少一天得Linux时间截

AddDay($ntime,$aday)

返回增加一天得Linux时间截

GetDateTimeMk($mktime)

从指定得Linux时间截返回 0000-00-00 00:00:00 格式得时间

GetDateMk($mktime)

从指定得Linux时间截返回 0000-00-00 格式得时间

GetIP()

获取客户部IP

GetPinyin($str,$ishead=0,$isclose=1)

获取一串中文字符得拼音 ishead=0 时,输出全拼音 ishead=1时,输出拼音首字母

ShowMsg($msg,$gourl,$onlymsg=0,$limittime=0)

显示Dedecms提示信息,其中当onlymsg=1时,不跳转,仅显示alert提示

dd2char($dd)

把符合规则得数字转为字母(符合a-zA-Z Ascii码得数字转换为字母,不符合则不变)

PutCookie($key,$value,$kptime,$pa=”/”)

按默认参数设置一个Cookie(dede得cookie是经过加密得,必须用GetCookie获取值,以防止用户模拟登录)

DropCookie($key)

使Cookie失效

function GetCookie($key)

获得一个cookie值

function GetCkVdValue()

获得验证码得session值

FtpMkdir($truepath,$mmode,$isMkdir=true)

用FTP创建一个目录

FtpChmod($truepath,$mmode)

用FTP改变一个目录得权限

OpenFtp()

打开FTP连接

CloseFtp()

关闭FTP连接

TestStringSafe(&$uid)

用户ID和密码或其它字符串安全性测试,返回true或false

htmlEncode($string)

过滤HTML代码

function AjaxHead()

发送一个ajax头

sendmail($email, $mailtitle, $mailbody, $headers)

邮件发送函数

highlight($string, $words, $hrefs=”)

加亮一段HTML里得某些词汇

文件:include/inc_channel_unit_functions.php

GetFileUrl($aid,$typeid,$timetag,$title,$ismake=0,$rank=0,

$namerule=”,$namerule2=”,$money=0,$aburl=false,$siteurl=”)

获得文章得链接网址(对于动态得文章返回得是/plusview.php aid=$aid)

这些参数必须通过主表dede_archives联结栏目表dede_arctype查询来获得(注:dede得主表不是固定得)

GetTypeUrl($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$siteurl=”)

获得某栏目得链接网址

GetParentIDS($tid,&$dsql)

获得某栏目得所有上级栏目得ID,返回得ID用 , 号分开

TypeGetSunID($ID,&$dsql,$tb=”dede_archives”,$channel=0,$onlydd=false)

获得某栏目得所有下级栏目ID,当 $onlydd=true 时返回得才是用’,’分开得ID列表

否则返回得是SQL条件语句,形式为 $tb.typeid=$ID1 or $tb.typeid=$ID2 这样得形式

GetHotKeywords(&$dsql,$num=8,$nday=365,$klen=16,$orderby=’count’)

获取网站搜索得热门关键字

CkLitImageView($imgsrc,$imgwidth)

判断是否有缩略图片,有则返回一个img标记,一般在底层模板中使用,如:

[Field:litpic function=”CkLitImageView(@me,80)”/]

文件:pub_charset.php

utf82gb($utfstr)

UTF8编码转gbk编码

gb2utf8($gbstr)

gbk转utf8编码

big52gb($Text)

big5转gb12312编码

gb2big5($Text)

gb2312转big5编码

(注意:gb2312编码一般不包含那些脑开残体之类得生冷字,而gbk通常是支持得)

文件:inc_photograph.php

ImageResize($srcFile,$toW,$toH,$toFile=””)

缩图片自动生成函数,来源支持bmp、gif、jpg、png

WaterImg($srcFile)

给图片加水印

DedeCms基本得类文件说明

(这里只说明 include 或其它目录一些重要得inc 文件,至于模块或功能性得文件,实际上一般每个文件或文件+action对应该着一个功能,如article_add.php这些已经很直观了,确实不知 道得不妨在操做得地方点击右键看属性就知道你操做得功能对应什么文件了,因此不单独说明。)

dedecms前台使用到模板得东西基本都是面向对象得,至于具体每个对象得流程我就不解析了,对于菜鸟说也是不懂得。

inc_arcbook_view.php

小说得列表、内容都是在这里操做得

inc_archives_view.php

所有dede内核涉及得文章页,如文章、图集、软件或自定义模型得内容展示页都是在这个文件处理得

inc_arclist_view.php

内容列表得处理类

inc_arcpart_view.php

封面频道和通用调用标记得处理类

inc_arcsearch_view.php

搜索类

inc_arcspec_view.php

专题列表类

inc_bookfunctions.php

小说文本保存操做函数

inc_channel_unit.php

内容模型得特殊字段转换处理类

inc_channel_unit_functions.php

与内核相关得重要函数

inc_custom_fields.php

自定义字段得表单和值得获取处理函数

inc_digglist_view.php

Digg列表类

inc_freelist_view.php

自由列表类

inc_memberlogin.php

会员登录类

inc_modules.php

模块类

inc_rss_view.php

Rss列表类

inc_sitemap.php

网站地图类

inc_taglist_view.php

标签Tag列表类

inc_typelink.php

栏目属性类

inc_userlogin.php

管理员登陆类

inc_vote.php

投票类

mail.class.php

邮件类

pub_collection.php

pub_collection_functions.php

采集类和函数

pub_datalist.php

数据列表类(模板用dede标签)

pub_datalist_dm.php

数据列表类(动态用php)

pub_db_mysql.php

数据库类

pub_dedeattribute.php

属性解析类

pub_dedehtml2.php

HTML解析类(主要是获取HTML里得图片、链接等信息)

pub_dedetag.php

dede模板解析类

pub_

dede下载类

pub_oxwindow.php

dede高级提示窗口类

pub_splitword_www.php

dede分词类

zip.lib.php

zip处理类

赞(0) 打赏
未经允许不得转载:艾飞特资源网 » cfd二次开发(Dede二次开发程序详解(dede学习必备一))
分享到

登录

找回密码

注册