常用的destoon常量、模版标签大全以及一些开发心得 本人接触DT时间不算太长,只因为新换的这份工作,网站就是用的destoon,也算是从零开始吧,destoon不算很难,跟大部分的网站系统都差不多,大概熟悉一下基本上就可以开始上手开发了。 一、先介绍一下destoon的目录结构,下边是destoon中一些核心的文件 admin 系统核心后台管理 ├image 后台风格 ├template 后台模板 /api 系统及第三方接口 ├kf 在线客服 ├map 电子地图 ├oauth 一键登录 ├pay 支付接口 ├stats 第三方统计 ├trade 担保交易 ├ucenter UCenter /file ├backup 数据库备份 ├cache 缓存 ├captcha 验证码字体 ├chat 聊天记录 ├config 配置 ├data 导数据导入 ├email 邮件列表 ├flash Flash文件 ├font 中文字体 ├image 公用图片 ├ipdata IP数据库 ├log 日志 ├md5 MD5镜像 ├mobile 手机列表 ├script javascript ├session SESSION ├setting 配置数据 ├temp 临时目录 ├update 系统更新 ├upload 上传文件 /include 核心类库 /install 安装程序 /lang 语言包 /module 功能模块 ├article 文章模块 ├article/admin 文章管理 ├article/admin/template 文章管理模板 ├article/common.inc.php 文章模块初始化 ├article/global.func.php 文章核心函数 ├article/article.class.php 文章核心类 ├article/index.inc.php 文章首页 ├article/index.htm.php 静态文章首页 ├article/list.inc.php 文章列表页 ├article/list.htm.php 静态文章列表页 ├article/show.inc.php 文章内容页 ├article/show.htm.php 静态文章内容页 ├article/search.inc.php 文章搜索 ├article/task.inc.php 文章计划任务 /skin 风格皮肤 ├default 默认风格 ├default/image 图片文件 ├default/style.css CSS文件 /template 模板文件 ├default 默认模板 ├default/index.htm 首页模板 /upgrade 系统升级 /admin.php 后台入口 /common.inc.php 系统初始化 /config.inc.php 系统配置 /index.html 静态首页 /index.php 动态首页 /version.inc.php 版本控制 Destoon也算是mvc框架吧,(如果不知道什么事MVC可以先去百度一下)举个例子,根目录下的文件夹/company里面的文件是MVC中的C,它控制对应module/company中的文件也就是我们说的M,最后我们通过V也是就是tempalte/default/company对应的文件来显示我们的界面,整个流程基本就是这样的。只要把这个流程弄清楚了,其他的就是写代码编程序的问题了。 二、主要的模版标签以及调用的方法 1.全局标签 网站名称:{$DT[sitename]} 网站地址:{DT_PA TH} 网站LOGO:{if $MODULE[$moduleid][logo]}{DT_SKIN}image/logo_{$moduleid}.gif{elseif $DT[logo]}{$DT[logo]}{else}{DT_SKIN}image/logo.gif{/if} 版权信息:{$DT[copyright]} 风格路径:{DT_PA TH} 客服电话:{$DT[telephone]} ICP备案号:{if $DT[icpno]}{$DT[icpno]} ┊{/if} VIP会员名称:{VIP} 真实货币名称:{$DT[money_name]} 真实货币单位:{$DT[money_unit]} 虚拟积分名称:{$DT[credit_name]} 虚拟积分单位:{$DT[credit_unit]} Title(网站标题):{$seo_title} Meta Keywords(网页关键词):{$head_keywords} Meta Description(网页描述):{$head_description} 这些全局标签是随时拿出来都可以用的,不仅是在php文件中,在htm文件中也都是可以拿来用的,所以为了快速的、简洁的写代码,这些全局变量我们一定要熟识。 2.连接地址 默认各个模块连接: 会员:{$MODULE[2][linkurl]} 供应:{$MODULE[5][linkurl]} 求购:{$MODULE[6][linkurl]} 行情:{$MODULE[7][linkurl]} 公司:{$MODULE[4][linkurl]} 展会:{$MODULE[8][linkurl]} 资讯:{$MODULE[21][linkurl]} 招商:{$MODULE[22][linkurl]} 品牌:{$MODULE[13][linkurl]} 人才:{$MODULE[9][linkurl]} 知道:{$MODULE[10][linkurl]} 专题:{$MODULE[11][linkurl]} 图库:{$MODULE[12][linkurl]} 视频:{$MODULE[14][linkurl]} 下载:{$MODULE[15][linkurl]} 发布信息:{$MODULE[2][linkurl]}{$DT[file_my]} 企业商铺:{$MODULE[2][linkurl]}home.php 查看站内信:{$MODULE[2][linkurl]}message.php 管理买卖交易:{$MODULE[2][linkurl]}trade.php 完善企业资料:{$MODULE[2][linkurl]}edit.php?tab=2 注册:{$MOD[linkurl]}{$DT[file_register]} 登录:{$MODULE[2][linkurl]}{$DT[file_login]} 找回密码:{$MOD[linkurl]}send.php VIP页面:{$MODULE[2][linkurl]}grade.php WAP浏览:{if extend_setting('wap_enable')} WAP浏览{/if} RSS订阅:{if extend_setting('feed_enable')} | RSS订阅{/if} 行情速递:{$MODULE[7][linkurl]}{rewrite('price.php?product=all')} 企业新闻:{$MODULE[4][linkurl]}{rewrite('news.php?more=1')} 公告:{extendurl('announce')} 推广:{extendurl('spread')} 广告:{extendurl('ad')} 友情链接:{extendurl('link')} 申请友情链接:{extendurl('link')}{rewrite('index.php?action=reg')} 留言本:{extendurl('guestbook')} 投票:{extendurl('vote')} 这些链接地址也挺方便的,用的时候直接拿来就行。 3.首页调用 导航菜单: 首页 {loop $MODULE $m} {if $m[ismenu]} {$m[name]} {/if} {/loop} 调用登录模块: {if $DT[page_login]} {template 'user', 'chip'} {/if} 调用分类模块: {php $mid = 5;} {template 'catalog', 'chip'} 4.各个模块数据的调用 供应: 最新供应信息: {loop $tags $k $t} [{area_pos($t[areaid], '/', 1)}]{$t[title]} {/loop} 标签调用理论上需要网站管理人员有一定的HTML+CSS知识,并对PHP+MySQL有初步的了解。 调用过程实际是按照调用条件从数据表读取调用数量条数据,并依排序方式排序,最终通过标签模板的布局输出数据。 函数原型tag($parameter, $expires = 0) $parameter 表示传递给tag函数的字符串,系统自动将其转换为多个变量例如传递table=destoon&pagesize=10,系统相当于得到$table = ‘destoon’;$pagesize = 10; 两个变量$expires 表示缓存过期时间>0 缓存$expires秒;0 – 系统默认时间;-1 – 不缓存;-2 – 缓存SQL;一般情况保持默认即可。 变量$tags 以数组类型保存标签调用的数据,可通过loop语法遍历显示。 $pages 保存数据分页代码,仅在调用了分页时有效。$ path 模块路径。常用字段title 标题;linkurl 链接;catid 分类ID;introduce 简介;addtime 添加时间; 常用函数dsubstr($string, $length, $suffix = ”) 将字符串$string截取为$length长,尾部追加$suffix(例如..) set_style($string, $style = ”, $tag = ‘span’) 将字符串$string置于$tagHTML标签中并设置style为$style linkurl($linkurl, $absurl = 0) 将相对路径$linkurl修补为绝对路径(防止链接错误) date($format, $timestamp) 将时间戳$timestamp转化为$format(例如Y-m-d)格式 标签模板模板保存于./template/default/tag/目录;建议不要删除或者修改自带的模板,推荐在自带模板基础上新建模板并应用。有时候难免会出现系统自带模版不能满足需求的情况,这时候你可以在此目录下新建一个模版文件,然后按照自己的需求写出自己的模板。 destoon显示地区 显示地区: 需要的函数是include/module.func.php/get_mainarea($areaid, $area); php页面:$AREA=cache_read(‘area.php’); //读取缓存文件 静态页面调用: {php $mainarea = get_mainarea(0, $AREA)} {loop $mainarea $k $v} {if $k%2==0} {/if} {if $k%2==1} {/if} {/loop} href=”{$MOD[linkurl]}{rewrite(…search.php?areaid=?.$v['areaid'].?&typeid=?.$typeid)}”>{$v[are aname]} 还有一种方法就是直接标签调用,,不错的,直接从destoon数据库里取出信息 调用分页: 分页标签: $dtype&catid=$catid&pagesize=4&page=$page&showpage=1&datetype=5&order=”.$MOD[orde r].”&template=list-sell”)}–> 分页:{if $showpage && $pages}{$pages}{/if} 调用分类: 主要方法 $maincat = get_maincat(0, $CA TEGORY); get_maincat(0, $CA TEGORY)——在include/global_func.php 中 $childcat = get_maincat(0, $CA TEGORY, 1);—调用超级栏目下的1级目录 0 代表最最根目录1代表level为1的目录level 手动设置默认都为1 如果0改为3 则为catid 为3 的目录 小注意:$CA TEGORY= cache_read(‘category-’.$moduleid.’.php’);此文件在模块页的common.inc.php页面中 调用 {loop $maincat $k $v} {if $k%$DT[page_subcat]==0}{/if} {set_style($v[catname],$v[style])} ({$ITEMS[$v[catid]]}) {if $k%$DT[page_subcat]==($DT[page_subcat]-1)}{/if} {/loop} 注意: 在其模块module 文件夹下的php页面里必须有$maincat $MOD[linkurl] 是模块也首页地址$v[linkurl]其下列表页加catid 什么是标签调用? 标签调用是根据调用条件(condition)从数据表(table)读取调用数量(pagesize)条数据,并按排序方式(order)排序,最终通过标签模板的布局输出数据。 可以看出,标签的工作分两个部分,一是读取数据,二是显示数据。 标签函数原型 标签函数保存于include/tag.func.php tag($parameter, $expires = 0) $parameter 表示传递给tag函数的字符串,系统自动将其转换为多个变量 例如传递table=destoon&pagesize=10&hello=world 系统相当于得到 $table = …destoon?; $pagesize = 10; $hello = …world?; 三个变量 $expires 表示标签缓存过期时间 >0 缓存$expires秒;0 – 系统默认标签缓存时间;-1 – 不缓存;-2 – 缓存SQL结果; 一般情况保持默认不需要传递。 数据读取过程 例如以下标签: 会被转换为如下的SQL语句: SELECT * FROM xhmb_sell WHERE status=3 ORDER BY addtime DESC LIMIT 0,10 读出的数据会保存在$tags 数组里 数据显示过程 1、通过标签模板显示 传递&template=abc给标签函数,例如: 默认的标签模板保存在模板目录/tag/目录里,例如&template=abc将调用模板目录/tag/abc.htm 模板来显示数据 如果标签模板放于其他目录,例如def,则传递&dir=def&template=abc,系统将调用模板目录/def/abc.htm模板 2、直接在模板里循环数据 此写法传递标签模板为null,并且直接返回数据给$tags数组,此时可以直接在模板里循环了 以下为一个完整的示例: {loop $tags $t} … {/loop> 第一种写法一般用于多次调用的数据,第二种写法一般用于只调用一次的数据。 常用参数及含义 moduleid moduleid指模块ID,可在后台模块管理里查询。对于直接调用模块的数据,设置正确的模块ID后,将不需要传递table参数,系统会自动获取。 例如传递moduleid=5,系统将识别为调用供应信息,自动设置table参数为sell table table指表名,可在后台数据库维护里查询。对于Destoon系统表,不需要加表的前缀;对于非Destoon系统表,需要填写完整的表名,且传递prefix参数 例如对于Destoon系统表,传递table=sell,如果表前缀为xhmb_,系统将识别表名为 xhmb_sell 对于非Destoon系统表,传递table=tb_abc&prefix=或者table=abc&prefix=tb_,系统将识别表名为tb_abc fields fields指查询的字段,默认为*。可以传递例如fields=title,addtime,但是一般情况下无需传递,Destoon独有的标签缓存机制会自动缓存查询结果,不必担心效率问题。 condition指查询的条件,如果不传递,则为1,代表任意条件的数据(此项需了解SQL语法)。Destoon所有模块遵循统一标准开发,所以很多条件是通用的。 例如status=3表示正常通过的信息、status=3 and level=1表示级别为1的信息、status=3 and thumb<>”表示有标题图片的信息等。 order order指数据的排序方法(此项需了解SQL语法)。 例如order=addtime desc表示按添加时间降序排列、order=itemid desc表示按itemid降序排列、order=rand()表示随机数据等。 pagesize pagesize指调用数据的数量,如果不传递,默认为10。 template template指指定的标签模板,如果不传递,默认为list,位于模板目录/tag/list.htm,如果传递为null,表示不应用标签模板。参见上述数据显示过程。 其他常见用法举例 控制标题长度 在标签里传递length参数,例如&length=20表示20个字符长度(GBK一个汉字占2个字符,UTF-8一个汉字占3个字符),一般情况建议用css隐藏多余字符(定义height和overflow:hidden) 传递length参数,系统仅对title字段自动截取,如果需要截取其他字段,可用dsubstr函数例如{dsubstr($t[company], 20, ‘…’)} 表示截取company字段为20个字符,截取后,结尾追加… 设置日期显示格式 可以在标签里传递datetype参数: 1 表示年; 2 表示月-日; 3 表示年-月-日; 4 表示月-日时:分; 5 表示年-月-日时:分; 6 表示年-月-日时:分:秒 也可以在模板里直接使用date函数,例如{date(‘Y-m-d’, $t[addtime])} 表示将时间转换为年-月-日格式 调用某一分类的信息 在标签里传递catid参数,例如&catid=5表示调用分类ID为5的所有信息。 如果调用多个分类,用逗号分隔分类ID,例如&catid=5,6,7表示调用分类ID为5、6、7的所有信息。 分类调用默认包含子分类的信息,如果不需要包含子分类,可设置&child=0参数。 例如&catid=5&child=0表示只调用分类ID为5的信息,不包括子分类的信息。 调用某一地区的信息 调用地区信息和上述调用分类信息的方法完全相同,将其中的catid换为areaid即可。 显示信息所在分类 href=”{$MODULE[$moduleid][linkurl]}{$CA TEGORY[$t[catid]][linkurl]}”>{$CA TEGORY[$t[ catid]][catname]} 控制列数 此项常用于图片的布局,可使用cols参数。 例如调用12张图片,一行显示4个,共3行,则传递&pagesize=12&cols=4 支持cols参数的标签模板限thumb-table.htm和list-table.htm 其中,thumb-table.htm显示图片列表,list-table.htm显示文字列表 如果新建支持cols的标签模板或直接循环$tags,可参考以上两个模板的写法 上述效果可以也可以通过CSS实现,无需使用表格,请自行书写 显示文章的简介 使用{$t[introduce]}变量,如果要截取字数,例如80字符,可使用{dsubstr($t[introduce], 80, ‘…’)} 标签看似复杂难懂,实际上在理解各个参数的含义和调用流程后,您会了解到标签实际简单自由、灵活易用、功能强大。 默认模板里已提供了大量的调用范例和标签模板,可以在学习中参阅和调试。 标签调用是制作模板必备的知识,希望您能早日掌握。 三、第三方支付接口文件/api Destoon里面有一个很重要的板块,就是商城板块。有商城就会有交易,而有交易就必须要有一个第三方支付平台,比如支付宝、财付通、网银等等平台。我们就以支付宝为例,你首先需要向支付宝申请一个接口,关于怎么申请支付宝接口,大家可以去看看。有了支付宝接口我们就可以在我们的网站后台设置了。在后台会员管理/模块设置里面选择支付宝 destoon开发文档 有了接口以后这些内容可以设置好了,然后就可以用了。