Thinksns二次开发指南.doc_第1页
Thinksns二次开发指南.doc_第2页
Thinksns二次开发指南.doc_第3页
Thinksns二次开发指南.doc_第4页
Thinksns二次开发指南.doc_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ThinkSNS 1.6二次开发指南(beta版)2009年智士软件(北京)有限公司北京市海淀区上地十街辉煌国际2号楼2301室 010 59714755序言这是2009年的第一次,忙碌了太久的企业项目,ThinkSNS终于又开始啦,太多的期待和等待,我们听到很多很多声音,不管怎么样,我们回来啦!,在这沉寂的一年多时间里,我们经历过多次的波折,团队一度徘徊在解散的边缘,生存的压力也中断了产品的持续性开发。直到09年的5月底,我们终于有了足够的人力和精力来重新启动产品。 在产品开发之前,我们也不断的在讨论,究竟该用怎样的产品去满足不同用户的需求,我们并不认同SNS等同于webgame的发展思路,在我们看来,SNS的魅力在于它改变了信息的传播方式,如何做好最基本的功能促进用户之间的交流才是产品的核心所在,至于通过哪些组件实现交流,可以让运营者根据自己的用户特性去选择,而通过游戏的交流只是其中很小的一部分,国内的互联网应用不会永远停留在娱乐阶段,我们希望着眼于未来围绕社会化服务的核心,深度开发能给用户带来实际效用的交互组件。基于以上的想法,我们这一版产品的目标就是搭建一个完善的内核架构,独立的API,将应用与核心完全分离,让每个应用都可以在后台独立配置,并提供详尽的开发文档,使得更多的开发者可以很容易的开发出新的组件,丰富TS的组件,满足不同用户的社交需求。 最后感谢所有关注和支持ThinkSNS的朋友,如果你有什么疑问或建议,请在我们社区的群组里找到相应的官方群组并提交你的疑问或建议,我们会一直留意那里提交的问题并及时更改,如果是提交bug,请同时注明你的测试环境,方便我们发现问题所在,我们社区的网址是:目录简介 5什么是ThinkSNS 1.6 5编写目的 6引用术语与缩写说明 6预定义的全局变量说明 6整体说明 7设计说明 7设计目标 7构架说明 8目录结构 8核心结构说明 9ThinkPHP1.6修改说明 10应用结构说明 12分享 13API库 21API接口说明 22用户API 22好友API 24积分API 25动态API 28通知API 31评论API 34附件API 35分享API 36站点信息API 37公共Widget 38评论widget 41举报widget 43好友选择widget 43好友分组widget 44附件widget 45相册widget 46模板开发教程 47应用开发说明 54开发目录说明 54应用的开发方式 54应用开发范例 56开发需求和开发目标 57创建数据表 57创建应用目录 60开始编程 63增加积分消费功能 77增加发动态功能 78增加发通知功能 80更新首页统计数目 82增加应用后台 83增加应用 93调试 94简介什么是ThinkSNS 1.6ThinkSNS 1.6作为智士软件(北京)有限公司旗下最新产品,集成了众多ThinkSNS开发者在大型项目中的经验,并将这些宝贵的经验应用于新版的产品之中,不管是对于普通站长还是对于开发者来说,这都是一款值得期待的SNS产品。ThinkSNS 1.6版汲取了国内几大SNS社区网站的优秀体验和设计,满足了众多站长用户的大众需求。同为一款开源产品,ThinkSNS在商业领域的运用,也使其完全能够满足并适用于企业的需求,并为企业增值和解决方案提供了有力的支持。相对于ThinkSNS 1.0,最新版的ThinkSNS 1.6做了很大的改变,具体如下:1、完整的产品构架、完善的基础应用、开箱即用。2、内置API接口、后续支持自建平台、核心和应用分离。3、完善的后台管理、可植入独立的应用管理。4、正在完善IM应用,包括独立部署的WebIM和基于Air技术的客户端应用。 同时ThinkSNS官方将不断的促进ThinkSNS的完善和新技术的应用,使用者可以在官方社区里获得最新的应用插件与系统升级信息。ThinkSNS 官方网站ThinkSNS 1.6版 体验网站编写目的本文档是ThinkSNS 1.6版本的二次开发指南,供二次开发人员使用。引用术语与缩写说明核心: ThinkSNS 1.6的核心的指用户基本操作集成,通过接口给应用提供查询,插入核心信息的的能力。应用: 别名组件,是基于核心的一个单独功能块,为用户提供某项特定服务。在ThinkSNS 1.6里应用是通过API与核心进行通信,应用与应用之间的耦合度低,并且所有的应用都可以在后台设置关闭和开启。API: API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供给应用程序与核心进行通信的能力,而又无需访问源码,或理解内部工作机制的细节。注:本指南如没有特殊说明,所有的代码段都基于ThinkPHP 1.6环境开发的。预定义的全局变量说明在应用/插件开发过程中,可以直接使用下面的全局变量:$this-api 核心API调用的变量,使用例子: $this-api-user_getLoggedInUser(); (获取当前登录的用户ID)$this-opts 调用系统配置信息$this-mid 当前登陆的用户ID$this-uid 当前被浏览的用户ID$this-my_name 当前登陆的用户昵称$this-appid 当前应用ID 如果是THINKSNS核心,则appid=0整体说明设计说明1、 本文档主要对ThinkSNS 1.6版本的核心架构进行描述,使设计和开发人员在开发ThinkSNS 1.6版本的应用时遵循统一的规范;2、本文档描述了在ThinkSNS 1.6版本使用的常见设计机制;3、本文档充分描述了在“核心+应用”中提到的可配置服务及可扩展服务,以便于在开发新的应用时使用;4、本文档还对ThinkSNS 1.6版本的全局配置信息(例如:ThinkSNS 1.6版本Config)及官方提供的应用配置进行了详细说明。设计目标独立API架构, 应用可配置, 二次开发的选择为了达成这些设计目标我们采用了以下设计机制:1。独立API架构:所有的应用单独开发;2。应用可配置:后台可直接关闭或开启某个应用;3。二次开发的选择:程序尽量简洁规范化,二次开发人员可以快速地熟悉定制开发的方式和修改现有的功能;构架说明ThinkSNS 1.6版本采用了全新的构架方式,把应用与核心单独分离,使得系统框架更加清晰明了,方便第三方开发和安装新的应用。目录结构index.php 统一入口文件admin.php 网站后台地址文件cleancache.php 手动删除缓存文件config.inc.php 网站配置文件define.inc.php 常量定义文件thumb.php 自动缩略图文件admin 后台目录 Common 公共文件目录 Conf 项目配置目录 Lang 语言包目录 Lib 应用类库目录 Tpl 模版文件目录apps 应用目录 blog 日志目录 event 活动目录 mini 心情目录 photo 相册目录 share 分享目录 vote 投票目录 group 群组目录 更多项目目录data 后台目录 cache 静态缓存目录 upload 上传文件目录 user 用户信息目录public 网站公共目录 Js JS文件目录 Images 图片目录 Languages 语文包目录 Theme 风格主题包目录runtime 核心缓存目录thinkphp TS框架目录thinksns TS核心功能目录所有的应用目录都放在apps/目录下,如果要开发一个新的应用也是在该目录下创建应用的目录。核心结构说明ThinkSNS1.6核心结构图ThinkSNS 1.6的核心包括两部分: 个人空间的基本功能和API库。个人空间的基本功能有个人资料,隐私,邀请,好友,动态,消息,留言板,随便看看。关于核心部分开发人员只需要了解API的调用方法即可,没必要花精力研究它的运作和机制,而API库的说明请阅读下面的API库栏目。ThinkPHP1.6修改说明为了方便开发和优化系统结构,我们对ThinkPHP作了以下几点修改,特别是在核心Model里增加了findPage方法,它集成了findAll方法和分页方法,大大方便了程序的开发,如果使用ThinkPHP作为应用开发框架的话,推荐使用该方法。2009-06-011、ThinkPHP.php的第28行 目的:修改runtime路径2、ThinkPHP.php的第51行 目的:新增引入TS公共函数3、ThinkPHP.php的第29行 LibThinkTemplateThinkTemplate.class.php 的第710行 目的:使success可以指向公共Theme目录2009-6-101、ThinkPHP.php中第102行 目的:如果不存在runtime目录,则自动创建2009-6-12修改ThinkPHP/Mode/Model.class.php中的findPage方法,更加严格的判断了传入参数。使用方法和findAll类似,只传递第一个参数即可,int|array $pageopt 传递数字,就是每页记录数,默认是20条。也可以传递数组:$pageoptpagesize Page类中的每页记录数$pageoptparam Page类中的第三个参数D(Share)-field(id, toUserName)-findPage(10);输出格式如下所示,其中count和totalRows是总记录数,主要为了兼容性才需要变量,开发人员可以在两个中选用其一就可。totalPages是总分页数,nowPage是当前分页数,html是输出页码,data就是用findAll得到的结果。具体请参考分享应用的输出:array(6) count = string(2) 65 totalPages = float(7) totalRows = string(2) 65 nowPage = int(1) html = string(453) 123456下一页 data = array(10) 0 = array(16) id = string(3) 181 toUserName = string(9) 水上铁 1 = array(16) id = string(3) 171 toUserName = string(6) 奇鸟 . 9 = array(16) id = string(3) 147 toUserName = string(9) 水上铁 应用结构说明分享分享应用结构的最大特色是: 需求决定模板,模板决定变量。 分享的模板可以根据自己的需求直接在后台修改(包括分享的动态模板,分享应用里的列表模板),而模板里需要什么变量就直接在数据包以数组的方式增加就可以了。数据包里所有的变量以及相应的值与模板的变量是对应的(除了WR以及分享的基本变量),以下让我们看看分享的数据是怎么结合的。 为了方便扩展分享的类型和提高程序的灵活性,分享应用保存到数据库里的信息分为两部分,一部分是分享的基本信息,主要有:信息字段名备注分享类型IDtypeId分享人ID toUid分享人名字toUserName站内分享目标的IDaimId如日志的ID站外分享的网址url分享标题title由程序自动获取描述info增加时间cTime增加时系统自动赋值浏览数viewNum评论数comNum是否已删除isDel回收站功能,值为1代表已删除,但可在后台恢复。权限purview备用推荐人IDfromUid备用推荐人姓名fromUserName备用 另一部分就是分享的核心数据: 数据包, 字段名为data (text), 采用数组保存相关数据,然后序列化后保存入库。数组保存的变量由相应的类型根据模板需要来决定并赋上相应的值,比如日志类型的模板(如下图)需要显示日志标题(title),发表日志人的ID(uid)和姓名(name)。列表里还需要一些简介(intro),日志内容(content)。注:WR是当前网址,系统会自动转译。 所以组装日志的数据包如下图:在分享应用里生成列表时,根据分享的类型ID(typeId)从缓存里提出相应的模板,然后把数据包反序列化得到一个数组,再循环数组并用str_replace方法转译模板。最终效果如下:分享信息的来源结构如下:URL输入: 主要是通过用户在分享应用列表里输入网址来分享站外的音乐、视频、Flash和网址。用户填写完相关信息(分享的网址, 通知好友, 描述)后点击提交的处理过程如下图:分享别人的分享:在分享应用里查看分享时可以选择再次分享,但为了防止产生过多的垃圾信息,站内所有能分享的信息用户只可以分享一次,都不能重复分享。分享其它应用:分享其它的应用,如日志,先用AJAX调用当前应用里的add_share_check函数先判断你是否为第一次分享,然后才弹出分享框,提交分享后也是在当前应用先组装数据包再通过API提交到数据库。分享API接口:之所以要通过API方式增加分享数据,是因为每个应用都是一个独立的项目,应用与应用之间耦合度很低,因此为了方便各应用增加分享数据和保持应用的独立性,全站采用API方式增加分享数据,也包括分享本身的增加。具体的API调用说明请查看API库里关于分享API的说明。以下是分享API的程序流程图。增加数据后接下来就是列表显示,列表的方式只有四种:朋友的分享, 我的分享, 大家的分享和某人的分享,某人的分享类似我的分享,不同的是我的分享查询的不是当前登录人的ID,某人的分享可以是任意人的ID,当然,显示的模板也不一样。列表里还可以点击只查看某类型的分享。主要是判断GET有没有typeId这个参数,有并且不等于0则只显示相应类型的分享。否则显示全部类型的分享。分享的内容页程序流程图如下图所示。为了显示多样性以及一些类型的内容显示和列表显示不一样,故没有引用模板渲染数据,而是每一类应用对应一个内容模板文件。它的命名规范是: content_类型别名。如日志的内容模板文件是: content_blog。增加分享类型的步骤1 在后台的应用=各类应用=分享=分类管理=增加分类 输入类型信息,包括该类型的列表模板2 在后台的高级=模板管理=动态模板=增加动态模板 增加分享动态模板,具体请参考增加动态模板的规则3 增加分享的内容页html文件,文件名规定为: content_类型别名,如视频的别名是:video,则内容页为: content_video.html4 在调用分享的应用里实现通过分享的API插入分享的内容,具体请参考分享的API说明。注:数组参数data里的所需要的变量由列表模板和动态模板所需要的变量决定。更多应用说明日后完善.API库API接口说明ThinkSNS1.6的API接口比较简单,本文只介绍常用的API,开发人员如果有更多的需要可以直接在ThinkFrame/Api/Model里面看到所有的API接口。用户API1、user_getInfo(uids, fields, format)描述:返回指定用户的用户信息,返回形式为一个数组参数说明:参数属性空?说明uidsstring否用户 ID,彼此之间用逗号分割。fieldsstring否指定返回用户的哪些信息。formatstring是指定响应返回的格式。有 PHP (默认) 、 JSON 和 XML 这三种值可选。调用Demo: $this-api-user_getInfo(1, 2, name, email);(返回:array(2) 0 = array(2) name = string(6) 刘伟 email = string(13) 1 = array(2) name = string(6) 哈哈 email = string(10) )$this-api-user_getInfo(1, 2, name,email, json);(返回:string(94) name:u5218u4f1f,email:,name:u54c8u54c8,email:)注: 目前field可选的字段为: id - 用户ID name - 用户姓名。 handle - 昵称。 sex - 用户性别,返回值为 male 或 female。 birthday - 用户出生日期,返回值为 YYYY-MM-DD 格式,例如 1983-01-01。 blood_type - 用户血型。 relationship_status - 婚恋状态。 current_location - 当前居住地。 hometown_location - 家乡。 has_added_app - 是否安装了当前应用,返回 0 时表示没有安装,返回 1 时表示已安装。 admin_level - 用户权限信息。返回值为 USER 时表示普通用户,返回为 MANAGER 时表示为管理员 pic - 用户大尺寸头像的地址(仅当用户头像存在时返回)。 pic_thumb - 用户中尺寸头像的地址(仅当用户头像存在时返回)。 pic_small - 用户小尺寸头像的地址(仅当用户头像存在时返回)。2、user_getLoggedInUser()描述: 获取当前登录用户的ID。参数说明: 无调用DEMO: $this-api-user_getLoggedInUser();(返回:1)3、user_getLoggedInUserLevel()描述: 获取当前登录用户的管理权限级别。 返回值可能为USER(普通用户)、MANAGER(站点管理员)参数说明: 无调用DEMO: $this-api-user_getLoggedInUserLevel();(返回 USER)好友API1、friend_get($uid,$format)描述:获取用户的好友 ID 列表,如果uid为空则返回当前用户的好友 ID 列表,其中,当前用户依靠API user_getLoggedInUser()函数来确定。参数说明:参数属性空?说明uidint是用户IDformatstring是指定响应返回的格式。有 PHP (默认) 、 JSON 这2种值可选。调用DEMO: $api-friend_get();(返回:array(2) 0 = string(1) 2 1 = string(1) 3)2、friend_areFriends($uid1,$uid2)描述: 返回两个用户是否为好友。是好友时返回 1 或 true,不是好友时返回 0 或 false。参数说明: uid1 array 第一个用户的 ID。 uid2 array 第二个用户的 ID。 调用DEMO: $api-friend_areFriends(1, 2); (返回:true)积分API1、UserScore_setScore ($uid, $credit)描述: 设置用户的积分参数说明:参数属性空?说明uidint否需要积分操作的用户IDcreditarray否积分操作数组,如:$creditaction=send_gift 积分类型$creditactioncn=赠送礼品 类型说明$creditscore=-100 扣除100个积分$creditexperience=10 增加10个经验 2、UserScore_getScore($uid, $type = score)描述: 获取用户积分参数说明:参数属性空?说明uidint否用户IDtypevarchar否积分类型:score积分(默认),experience经验 3、UserScore_checkScore($uid, $score_type, $value)描述: 判断用户积分是否足够参数说明:参数属性空?说明uidint否用户IDscore_typevarchar否积分类型:score积分(默认) experience经验valueint否要比较的积分数 为了方便操作,我们在核心公共方法库里增加用户积分操作的函数:setUserScore($uid, $credit) $api = new TS_API(); $array = array(); foreach ($creditcredit as $key=$score) $temp = $api-UserScore_checkScore($uid,$key,$score); $array = $temp = 0 ? true:$temp ; $credit_rule$key = $score; if(count(array_filter($array) != count($array) return false; $credit_ruleaction = $creditaction; $credit_ruleactioncn = $creditactioncn; $credit_ruleinfo = isset($creditinfo) & !empty($creditinfo)?$creditinfo:actionsign了score分typecn; /操作积分 $score_result = $api-UserScore_setScore($uid,$credit_rule); return $score_result;参数说明:参数属性空?说明uidint否需要积分操作的用户IDcreditarray否积分数组,如:$testcredit score = 10; /增加10个积分$testcreditexperience = 10; /增加10个经验$testaction = send_gift; /积分类型$testactioncn = 发送礼物; /积分说明调用DEMO:$testcreditscore = 10; $testcreditexperience = 10;$testaction = send_gift;$testactioncn = 发送礼物; $res = setUserScore($uid, $test);(返回:200 成功 404 失败)动态API1、feed_publish($type, $title_data, $body_data, $appid)描述:动态发布方法,成功返回true,失败返回false参数说明:参数属性空?说明typestring否此条动态的类型title_dataarray否动态标题数据,此数组中的键值和对应feed_template中title变量值body_dataarray是动态内容数据,此数组中的键值和对应feed_template中body变量值,可选择appidint是应用ID调用DEMO: $title_datanum = 1; $body_datapic = ; $this-api-feed_publish(photo, $title_data, $body_data);(返回:true)2、feed_get($map, $limit)描述:获取动态方法,失败返回false参数说明:参数属性空?说明mapstring或array是查询动态的条件limitint是返回的条数调用DEMO: $mapuid = $this-mid; /取我的动态 $this-api-feed_get($map, 10);(返回:array(3) 0 = array(2) title = string(51) 刘伟上传了1张照片 body = string(61) 1 = array(2) title = string(51) 刘伟上传了1张照片 body = string(61) 2 = array(2) title = string(51) 刘伟上传了1张照片 body = string(61) )3、为应用增加一个动态的步骤首先在后台“高级=模板管理=动态模板”增加一个动态类型(即动态模板)然后在应用里需要发动态的地方参考以下方法调用API增加动态就可以了:/添加一条动态$body_datasrc = getUserFace($this-mid);$this-api-feed_publish(head, $title_data, $body_data);又如群组发表话题的动态:/添加动态$title_dataactor = getUserName($this-mid);$title_datagid = $this-gid;$title_datagroup_name = $this-groupinfoname;$body_datatitle = msubstr($title, 0, 20);$body_datagid = $this-gid;$body_datatid = $tid;$this-api-feed_publish(group_topic, $title_data, $body_data, $this-appId, 0, $this-gid);强调一下模板里自定义了多少个xxx,除actor和系统常量外,都需要赋值,否则会发意外而导致模板无法解析。注: actor会在程序里统一赋值,在增加动态时不需要重复赋值。通知API1、notify_send($uids, $type, $title_data, $body_data, $url, $cate)描述:向一个用户发送通知,发送的通知将被显示到用户通知页面上。参数说明:参数属性空?说明uidsstring或array否指定接收通知用户的 ID,如果是string的话,每个 ID 之间用逗号分割。typestring是通知的类型,比如phototitile_datastring是通知的标题body_dataarray是通知的信息,以数组形式传入,键值和模板中的相对应urlstring是查看此条通知的urlcatastring是目前可选的是friend(好友请求),notification(通知)【默认】,message(短消息)调用DEMO: $fuid = intval($_POSTmini_uid); $type = mini_comment; $title_datamini = strip_tags($_POSTmini_con); $body_datacomment = $_POSTcomment; $url = _ROOT_./apps/mini/index.php?s=/Index/friends/uid/.$_POSTmini_uid.#Fli.$_POSTmini_id; $r = $this-api-notify_send($fuid, $type, $title_data, $body_data, $url);(返回:true)2、notify_get($cate, $type, $pageLimit, $format )描述:向一个用户发送通知,发送的通知将被显示到用户通知页面上。参数说明:参数属性空?说明catastring是目前可选的是friend(好友请求),notification(通知)【默认】,message(短消息)typestring是通知的类型,比如photopageLimitint是每页显示通知数,默认10条formatstring是指定响应返回的格式。有 PHP (默认) 、 JSON 这2种值可选。调用DEMO:$this-api-notify_get(notification);(返回:array(2) 0 = array(2) title = string(24) 评论了你的心情aaa body = string(62) PLMM! 1 = array(2) title = string(24) 评论了你的心情aaa body = string(62) PLMM! )3、为应用增加一个通知的步骤首先在后台“高级=模板管理=通知模板”增加一个通知类型(即动态模板)然后在应用里需要发通知的地方参考以下方法调用API增加动态就可以了:$uid = 111, 222;$type = gift_send;$titleuser = 水上铁;$bodyimg = $this-_realityImage($giftInfo);$bodycontent = t($sendInfosendInfo);$notify = $this-api-notify_send( $uid, $type, $title, $body );评论API1、comment_notify($type, $data, $appid)功能说明 发送通知。参数说明:type string 评论的类型。在模型里是$type._comment的形式的模型名称appid int 应用注册ID$data array 数组。其中内容必须都传递$datatoUid 当评论js回调函数执行的时候传递过来的数组中的toUid$datauids 评论主体的uid;$dataurl 被评论页面的完整url$datatitle_bodycomment 通知的内容 $datatitle_datatitle 被评论内容的标题$datatitle_datatype 被评论应用的中文名附件API1、attach_upload($attach_type, $options)参数说明:参数属性空?说明attach_typestring是上传类型,默认为 attach ,可选 photo,files,doc,(类型是任意的只是标识来源,规则为 应用名_类型)optionsarray是参数以数组传入,可选值如下allow_exts: 允许的后缀名,多个参数以逗号分隔。max_size: 允许的文件最大值。save_path: 自定义的路径,必须是完整的路径。save_name: 自定义的文件名。增加了相册关联如果传参$options里存在 save_photo 参数数组,则进行相关操作。参数有:albumId 保存到的相册ID,只要传这个参数,就同时保存照片到该相册 如:$optionssave_photoalbumId = 1new_album boolean型,如果是true则新建相册,不建议使用album_name 新建相册的名字,不建议使用返回值返回参数数组,status,info两个参数:$infostatus 上传成功为true,失败为false;$infoinfo 为照片信息数组,上传失败时为错误信息字符串。分享API1、share_addShare($type, $aimId, $data, $info, $purview, $fri_ids, $url)描述:插入一条站内分享调用方法: $this-api-share_addShare($type, $aimId, $data, $info, $purview, $fri_ids);参数说明:参数属性空?说明typearray否typetypeId 分享类型IDtypetypeName 分享类型名aimIdstring否分享内容的IDdataarray否分享的信息,不同的类型的信息可不一样,请参考附录1infostring是描述purviewint是0:所有人,1:所有好友,2:私密(后面的可扩充)fri_idsarray是同时通知给好友的IDurlstring是分享的通知里的“去看看”网址返回值说明: 1 成功 0 失败 -1 已经分享 -2 分类出错 -3 内容为空 -4 不能分享自己的东西2、share_getShareNum($uid=null)描述:获取分享的数量调用方法: $this-api-share_getShareNum($uid);参数说明:参数属性空?说明uidarray或string是 当uid值为空时返回当前网站全部分享的总数量;当uid为一个数组时返回这些用户的分享的总数量否则返回该uid用户的分享数量3、share_isForbid($mid, $typeId, $aimId)描述:是否已经分享过。调用方法: $this-api-share_isForbid($mid, $typeId, $aimId);(没分享过返回:1,否则返回:-1)参数说明:参数属性空?说明midint否用户IDtypeIdint否分享类型ID,如日志的ID是5aimIdint否分享内容的ID站点信息API1、site_get($format)描述:获取站点的信息。参数说明: 可选 format string 指定响应返回的格式。有 PHP (默认) 、 JSON 这2种值可选。 调用DEMO: $api-site_get();(返回:array(2) name = string(8) ThinkSNS url = string(23) )公共Widget如果你还不知道ThinkPHP1.6中的插件如何用的话请先阅读下面这个来自ThinkPHP官方论坛(/viewthread.php?tid=5701&extra=page%3D1)的帖子:Widget扩展用于在页面根据需要输出不同的内容,Widget扩展的定义是在项目的LibWidget目录下面定义Widget类库,例如用于显示最近的评论的WidgetSho

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论