UChome二次开发.docx
- 文档编号:4941849
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:93
- 大小:321.96KB
UChome二次开发.docx
《UChome二次开发.docx》由会员分享,可在线阅读,更多相关《UChome二次开发.docx(93页珍藏版)》请在冰豆网上搜索。
UChome二次开发
转载来的自己看着方便
在模板文件中实现页面跳转
--{evalecho'
ac=upload">文档上传演示';}-->
二次开发资料整理
摘要:
写在前边,由于看不惯网上卖资料的,用自己的XX辛苦币买到的东西然后根据手头上有的资料做了一个稍微系统的整理,希望大家有自己开发经验的,我会持续更新的,永久免费,好好学习,多多益善,同时感谢做过开发的【枫芸志】
其中有些资料版本是1.5的,在这一版本中给予改正。
版面约定:
1.上下2.54cm;左右1.91cm
2.文字:
宋体五号,代码注释小五couriernew代码为蓝色,注释为淡黄色
当前版本v0.2
V0.2:
2010-7-1
更改布局,可以容纳更多信息,部分注释可以不用换行
增加文件调用及功能介绍
增加文本约定格式
修改模板页面说明为2.0,但资料有待于完善
目录
【UCHome二次开发】uchome文件体系介绍4
站点结构图4
UCHOME安装后的主要目录与文件介绍4
文件入口参数列表及详细介绍5
数据调用图示8
do.php入口文件分析8
【UCHome二次开发】基础10
数据调用10
eval的使用10
直接外部文件do.php的扩展11
【UCHome二次开发】common.php文件解析12
common.php文件解析:
12
Common.php文件调用图示:
15
【UCHome二次开发】数据字典|数据库结构15
【UCHome二次开发】模板解析16
【UCHome二次开发】缓存机制解析18
【UCHome二次开发】模板语法说明21
【UCHome二次开发】模板页面说明23
【UCHome二次开发】主要文件说明26
【UCHome二次开发】模板修改29
【UCHome二次开发】功能修改29
【UCHome二次开发】全局变量34
$_SC:
系统全局配置34
$_SCONFIG:
个人空间配置35
$_SCOOKIE:
Cookie信息39
$_COOKIE:
Cookie信息39
$_SGLOBAL:
各类全局信息39
$_SN:
昵称信息56
$_TPL:
未知56
$_SBLOCK:
未知56
举例说明:
56
【UCHome二次开发】与UCenter的交互解析58
【UCHome二次开发】研究uchome通用方法59
【UCHome插件二次开发】不同于Manyou的开发模式65
基本原则66
【UCHome应用】增加sns人气的客服秘籍68
【UCHome二次开发】uchome文件体系介绍
站点结构图
UCHOME安装后的主要目录与文件介绍
目录
文件介绍
admin/
管理后台
api/
API函数[插件开发与模板等的修改不需要动此文件]
attachment/
附件目录
data/
缓存目录,此目录要有777权限,系统相关缓存基本上都在这里了
data/tpl_cache/
模板缓存目录,注意,如果你的UCH白屏了,无法进入后台跟新缓存,通过FTP手工删除此目录下的所有文件即可相当于模板缓存的更新
image/
图片目录
language/
语言目录,跳转提示语言等
source/
PHP源程序目录,类文件,分步处理文件
template/
模板目录
theme/
个人主页目录
uc_client/ucenter
客户端[插件开发与模板等的修改不需要动此文件]
Install/
安装时用到,安装完毕建议删除
common.php
通用文件,所有的文件都要包含这个文件
config.php
基本配置文件定义了$_SC数组和ucenter通讯的常量
editor.php
编辑器的入口文件,强烈建议您不用动他
network.php
随便看看等入口文件调用source文件夹下的network.php文件
文件入口参数列表及详细介绍
文件入口
文件详细动作
admincp.php?
ac=*
后台管理入口文件
调用admin文件夹下的php文件
│├─admincp_ad.php广告设置
│├─admincp_album.php相册
│├─admincp_app.phpUCenter应用
│├─admincp_backup.php数据备份
│├─admincp_block.php数据调用
│├─admincp_blog.php日志
│├─admincp_cache.php缓存更新
│├─admincp_censor.php词语屏蔽
│├─admincp_click.php表态动作
│├─admincp_comment.php评论/留言
│├─admincp_config.php站点设置
│├─admincp_credit.php积分规则
│├─admincp_cron.php系统计划任务
│├─admincp_doing.php记录
│├─admincp_event.php活动
│├─admincp_eventclass.php活动分类
│├─admincp_feed.php动态(feed)
│├─admincp_hotuser.php推荐成员设置默认好友设置
│├─admincp_index.php管理首页
│├─admincp_ip.php访问IP设置
│├─admincp_log.php系统log记录
│├─admincp_magic.php道具设置
│├─admincp_magiclog.php道具记录
│├─admincp_mtag.php群组
│├─admincp_network.php随便看看
│├─admincp_pic.php图片
│├─admincp_poll.php投票
│├─admincp_post.php回帖
│├─admincp_privacy.php隐私设置
│├─admincp_profield.php群组栏目
│├─admincp_profilefield.php用户栏目
│├─admincp_report.php举报
│├─admincp_share.php分享
│├─admincp_space.php用户管理
│├─admincp_spam.php防灌水设置
│├─admincp_stat.php统计更新
│├─admincp_tag.php标签
│├─admincp_task.php有奖任务
│├─admincp_thread.php话题
│├─admincp_userapp.phpMYOP应用
│├─admincp_usergroup.php用户组
cp.php?
ac=*
编辑日志、相册、活动等等相关编辑操作基本上都从这个文件入口
调用source文件夹下的操作文件
│├─cp_advance.php高级管理
│├─cp_album.php相册管理
│├─cp_avatar.php我的头像
│├─cp_blog.php日志管理包含日志的编辑删除等信息
│├─cp_class.php日志分类管理
│├─cp_click.php表态动作的处理
│├─cp_comment.php评论的操作
│├─cp_common.php举报违规,在好友的面板上,还有屏蔽通知
│├─cp_credit.php我的积分
│├─cp_doing.php删除记录,回复spacenote
│├─cp_domain.php
│├─cp_event.php事件管理,活动管理
│├─cp_feed.php
│├─cp_friend.php好友管理
│├─cp_import.php日志导入
│├─cp_invite.php邀请好友
│├─cp_magic.php道具的赠送购买
│├─cp_mtag.php群组
│├─cp_password.php修改密码
│├─cp_pm.php短消息操作
│├─cp_poke.php打招呼
│├─cp_poll.php投票
│├─cp_privacy.php隐私筛选
│├─cp_profile.php个人资料
│├─cp_relatekw.php
│├─cp_sendmail.php发送邮件
│├─cp_share.php分享
│├─cp_space.php应用隐藏
│├─cp_task.php任务
│├─cp_theme.php个性化设置
│├─cp_thread.php群组处理
│├─cp_top.php
│├─cp_topic.php
│├─cp_upload.php
│├─cp_userapp.php
│├─cp_videophoto.php
do.php?
ac=*
登录、注册、找回密码、相册批量上传、在需要密码的情况下才能查看日志相册、验证码、发送邮件、统计、邮件验证等行为的入口文件
调用source文件夹下的操作文件
│├─do_ajax.php
│├─do_emailcheck.php
│├─do_inputpwd.php
│├─do_login.php登陆
│├─do_lostpasswd.php找回密码
│├─do_register.php注册
│├─do_seccode.php
│├─do_sendmail.php
│├─do_stat.php
│├─do_swfupload.php
magic.php?
mid=*
道具入口文件
调用source文件夹下的操作文件
│├─magic_anonymous.php
│├─magic_attachsize.php
│├─magic_bgimage.php
│├─magic_call.php
│├─magic_color.php
│├─magic_detector.php
│├─magic_doodle.php
│├─magic_downdateline.php
│├─magic_flicker.php
│├─magic_frame.php
│├─magic_friendnum.php
│├─magic_gift.php
│├─magic_hot.php
│├─magic_icon.php
│├─magic_invisible.php
│├─magic_reveal.php
│├─magic_superstar.php
│├─magic_thunder.php
│├─magic_updateline.php
│├─magic_viewmagic.php
│├─magic_viewmagiclog.php
│├─magic_viewvisitor.php
│├─magic_visit.php
space.php?
do=*
个人空间、日志、相册、活动等入口文件
调用source文件夹下的相关文件
│├─space_album.php
│├─space_blog.php
│├─space_doing.php
│├─space_event.php
│├─space_feed.php
│├─space_friend.php
│├─space_index.php
│├─space_info.php
│├─space_mood.php
│├─space_mtag.php
│├─space_notice.php
│├─space_pm.php
│├─space_poll.php
│├─space_share.php
│├─space_tag.php
│├─space_thread.php
│├─space_top.php
│├─space_topic.php
│├─space_videophoto.php
│├─space_wall.php
数据调用图示
我们一般修改UCH主要涉及的入口文件有space.php network.php do.php cp.php这四个,那么我们如何根据你访问的URL判断涉及到那些PHP文件和模板文件,方便您的进一步修改!
do.php入口文件分析
举个例子,如果我们使用找回密码功能,通常链接如下:
do.php?
ac=lostpasswd,而注册的链接一般分两种,一种是do.php?
ac=后台自定义登录识别名
另一种是do.php?
ac=随机
好了,我们进入do.php文件中继续看看:
//这个是公用文件,在上篇已详细解释了内容
include_once(’./common.php’);
//获取方法获取do.php?
ac中ac的值
$ac=empty($_GET['ac'])?
”:
$_GET['ac'];
//自定义登录
if($ac==$_SCONFIG['login_action']){
//这里的全局变量$_SCONFIG['login_action']就是ac=自定义标示名或那个随机串,如果相同则把原来的do.php?
ac=XXXX抓换成类似效果do.php?
ac=login
$ac=‘login’;
}elseif($ac==‘login’){
ac=‘’;
}
if($ac==$_SCONFIG['register_action']){
//这里的全局变量$_SCONFIG['register_action']
//就是ac=就是后面的自定义标示名或那个随机串,如果相同则把原来的do.php?
ac=XXXX抓换成类似效果do.php?
ac=register
$ac=‘register’;
}elseif($ac==‘register’){
$ac=”;
}
//允许的方法
//这里很重要,login对应的是登录,register定义的是注册,lostpasswd定义的是找回密码,与上面访问的URL是否是对应上了
//对应上面的do.php?
ac=login,do.php?
ac=register,do.php?
ac=lostpasswd,其他类似!
如果ac后的参数不在下面的数组中,则为非法。
跳转到首页
$acs=array(’login’,‘register’,‘lostpasswd’,’swfupload’,‘inputpwd’,‘ajax’,’seccode’,’sendmail’,’stat’,‘emailcheck’);
if(empty($ac)||!
in_array($ac,$acs)){
showmessage(’enter_the_space’,‘index.php’,0);
}
//链接
$theurl=‘do.php?
ac=’.$ac;
//这是包含文件的意思,继续执行一下文件的意思,
//其中S_ROOT是UCHOME安装目录的常量
//根据下面的语句,我们可以这样判断,如果链接是do.php?
ac=lostpasswd的话,程序继续执行source/do_lostpasswd.php文件!
include_once(S_ROOT.’./source/do_’.$ac.’.php’);
不知道大家是否能理解,不理解多看几遍!
好了,我们找到source/do_lostpasswd.php文件看下,这个文件代码较多,我们不用管他,最主要的是我们要找到其对应的模板,
查找下includetemplate这个语句【注:
在其他php文件中可能有多个结果,那是因为不同条件下包含不同的模板】。
你就会发现在末尾找到
includetemplate(’do_lostpasswd’);
这就是模板名,这个记住规则,do_lostpasswd对应的模板是do_lostpasswd.htm名。
那么这个文件在哪个位置呢?
我们系统目录template/下有默认的default,blue,green这三个文件夹,对应不同的风格,如果你安装了其他风格,可能还有其他目录。
系统是如何查找do_lostpasswd.htm呢?
大家记得在后台有一个模板选择的下拉表吗?
系统会在你选择的模板风格文件夹下查找do_lostpasswd.htm,如果找不到则在去default目录下查找。
注意:
为了提供效率,模板并不是每次都编译的,严格的来说,UCHOME会先判断对应的模板是否被解析过了【查找data/tpl_cache/目录下是否有对应的模板缓存】
如果没有的话才会去按上面的规则去查找。
基本上,按照以上思路就可以根据链接找到匹配的程序文件和模板文件了
【UCHome二次开发】基础
本文将就UCH二次开发这个核心主题,以各种实现的代码为主,辅助部分说明概略的讲解如何针对UCH进行二次开发。
过段时间UCH就开源了,准备到时候再详细的写篇UCH机制分析。
顺便说下,这篇文件写在大约两周以前,但是一直没有时间整理发布,今天听说UCH会在最近一段时间开源,到时候再发反而对大家帮助不大,所以决定不再整理,虽然文中一些说明还不详细,但是已经基本成文。
数据调用
这里的数据调用是使用UCenterHome内置的数据调用,在后台的“高级应用”里有“数据调用”管理,以下代码都是在模板中添加,然后调用数据。
1.站内数据调用
–{templatedata/blocktpl/1}–>
2.站外JS调用
block的使用 这个block数据调用和前面的讲的数据调用,从数据来源和生成来说是基本类似的。 –block模块调用演示–> –{block/sql/SELECT*FROMuchome_blogORDERBYdatelineDESCLIMIT0,8/cachename/test/cachetime/0}–> –{loop$_SBLOCK['test']$value}–> uid=$value[uid]&do=blog&id=$value[blogid]“>$value[subject]
–{/loop}–>
eval的使用
合理的使用UcenterHome模板语法中的eval语法,会在一定程序上降低二次开发的难度。
比如:
1.通过eval语法在模板内执行PHP语句
–eval用法演示–>
–{evalecho‘
ac=demo”>最新日志演示‘;}–>
2.通过eval语法引入一个外部PHP文件
引入外部文件
–用eval来include外部文件–>
–{evalinclude‘demo.php’}–>
备注:
通过在模板中引入外部文件,你可做任何你想做的事情。
直接外部文件do.php的扩展
1.首先,在do.php文件中添加允许的新方法,即在
$acs=array(’login’,‘comment’,‘wall’,‘register’,‘lostpasswd’,’swfupload’,‘inputpwd’,’sns’,‘viewspace’,‘relatekw’,‘ajax’,’seccode’);
之后添加
$acs[]=‘demo’;
2.然后,在source目录下新建do_demo.php文件,调用地址就是do.php?
ac=demo。
比如/source/cron这个目录下以及source/class_mysql.php文件都是开源的,我们可以从中找出,对UCH进行二次开发非常有用的一些信息,比如如何进行SQL查询,通过分析,我们可以写出以下文件。
php
!
defined(’IN_UCHOME’)&&exit(’AccessDenied’);
$query=$_SGLOBAL['db']->query(’SELECT*FROM‘.tname(’blog’).’ORDERBYdatelineDESCLIMIT10′);
$bloglist=array();
while($value=$_SGLOBAL['db']->fetch_array($query)){
$bloglist[]=$value;
}
includetemplate(’do_demo’);
?
>
模板文件templates/default/do_demo.htm内容为
–{templateheader}–>
uid=$value[uid]&do=blog&id=$value[blogid]“>$value[subject]
uid=$value[uid]“>$value[username]
–{date(’Y-m-dH:
i’,$value[dateline])}–>
–{if$value[viewnum]}–>
uid=$value[uid]&do=blog&id=$value[blogid]“>$value[viewnum]次阅读|
–{/if}–>
–{if$value[replynum]}–>
uid=$value[uid]&do=blog&id=$value[blogid]#comment”>$value[replynum]个评论
–{else}–>没有评论
–{/if}–>
–{loop$bloglist$value}–>
–{/loop}–>
–{templatefooter}–>
总结
当前的UCH是在模板界面完全可修改,合理利用上述数据调用机制的情况下,鲜有我们不能实现的页面效果和数据调用要求。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UChome 二次开发