Weitere ähnliche Inhalte
Ähnlich wie Uc home二次开发参考手册
Ähnlich wie Uc home二次开发参考手册 (20)
Uc home二次开发参考手册
- 1. Uchome 二次开发
一 文件系统结构及主要文件说明
Uchome 文件系统结构大概如下图所示
Admin: uchome 系统管理,与 home 目录(uchome 根目录)下 admincp.php 紧密相关
Api:与 ucenter 相关等的 api
Attachment:附件上传保存目录
Data:临时数据缓存文件等存储目录,模板缓存文件就在这个目录里生成
Image:图片目录
Install:安装时用到,安装完毕建议删除
Language:操作对应语言
Source:uchome 架构核心目录,实际的处理及相关操作函数都在该目录中
Template:模板目录
Theme:主题(css 风格)
Uc_client: 和 ucenter 信息交互的目录,必须
Home 目录( uchome 根目录)下主要文件(入口)功能说明:
1、系统首页 /index.php
显示页面为/template/模板文件夹名/index.htm。
2、个人页面 /space.php
不带参数时显示个人首页;带 uid 参数(用户编号)为显示其他人的首页;do 参数指示调用的模块,
如/space.php?do=blog 将显示日志内容。
带 do 参数页面的处理:/space.php?do=xxx 将调用/source/space_xxx.php(其中 xxx 为相关模块或操作,
下同)进行数据和逻辑处理,最终的页面是显示对应的模板页,为/template/模板文件夹名/space_xxx.htm。
3、随便看看页面 /network.php
不带参数时显示随便看看首页;带 ac 参数时显示某个模块的随便看看页面,如/network.php?ac=space 为随便
看看现有的成员。
带 ac 参数页面的处理:/network.php?ac=xxx 将调用/source/network_xxx.php 进行数据和逻辑处理,最终
的页面是显示对应的模板页,为/template/模板文件夹名/network_xxx.htm。
4、操作页面 /cp.php
不带参数时显示个人设置页;带 ac 参数时显示某个操作的页面,如/cp.php?ac=profile 为设置个人资料。
带 ac 参数页面的处理:/cp.php?ac=xxx 将调用/source/cp_xxx.php 进行数据和逻辑处理,最终的页面是显
示对应的模板页,为/template/模板文件夹名/cp_xxx.htm。
5、动作页面 /do.php
- 2. 不带参数时会被跳转到个人首页或系统首页(看是否已登录);带 ac 参数时为进行某项动作,不一定有显示的界
面。
带 ac 参数页面的处理:/do.php?ac=xxx 将调用/source/do_xxx.php 进行数据和逻辑处理,最终的页面是显
示对应的模板页,为/template/模板文件夹名/do_xxx.htm(不是所有的动作需要页面显示结果,所以不一定存
在对应的模板文件)。为防止注册机等外挂软件的攻击,程序对于 login 和 register 做了单独处理,直接加在 ac 参
数后是无效的,而是通过一串标识符来指示 login 或 register 动作。
6、高级管理页面 /admincp.php
不带参数时显示管理平台首页;带 ac 参数时显示某项功能的管理页面,如/admincp.php?ac=ad 为广告设置页。
带 ac 参数页面的处理:/admincp.php?ac=xxx 将调用/admin/admincp_xxx.php 进行数据和逻辑处理,最
终的页面是显示对应的模板页,为/admin/tpl/xxx.htm。
7、应用页面 /app.php
显示页面为/template/模板文件夹名/iframe.htm。
8、个人应用页面 /userapp.php
显示页面为/template/模板文件夹名/userapp.htm。
9、邀请加入页面 /invite.php
显示页面为/template/模板文件夹名/invite.htm。
10、RSS 页面 /rss.php
显示页面为/template/模板文件夹名/space_rss.htm。
11、帮助页面 /help.php
显示页面为/template/模板文件夹名/help.htm。
12、通用代码 /common.php
缓存、Cookie、用户状态验证、各种状态初始化等通用处理。
13、配置文件 /config.php
数据库连接、系统编码、站点网址等全局性配置。
14、富文本编辑器 /editor.php
15、模块载入代码 /js.php
- 3. 未发现使用的地方,所以不做解释。
16、连接显示页 /link.php
未发现使用的地方,所以不做解释。
17、xmlrpc 服务 /xmlrpc.php
调用/source/class_xmlrpc.php 来处理。关于 XML-RPC 的规范可看这里
二 uchome 架构简单说明
uchome 大概架构流程如下图:
是个轻量级的框架,逻辑流程都很清晰,space.php do.php 等入口文件属于 controler 级别,space_blog.php
等属于 model 级别, /data/tpl_cache/template_default_space_blog.php 等是 view 级别的。
当然这个架构不是严格意义上的 mvc 模式
三 uchome 全局变量说明
1 $_SC:系统全局配置
2 $_SBLOCK
3 $_SCONFIG:个人空间配置
4 $_SCOOKIE:
5 $_SGLOBAL:各类全局信息
6 $_SN:昵称信息
四 二次开发相关说明:
1 模板方面
首先,在根目录文件 config.php 中配置系统使用的模板:
$_SC[“template”] = ‘default’;//选择模板目录
- 4. 当需要调用模板文件时,首先程序会在模板缓存目录 /data/tpl_cache/ 下查找是否存储了模板缓存文件,
模板缓存文件的命名规则:template_模板目录名_模板文件名.php,如果存在缓存的模板文件,直接调用就可以
了。如果不存在,则解析对应模板文件,生成缓存文件,然后使用。
模板解析通过调用/source/function_template.php 文件中的函数 parse_template()实现
解析的过程:读取模板文件( .htm)—>正则表达式替换相应标记为 php 代码—>生成标准 php 代码文件,
存储于/data/tpl_cache 目录
欲了解具体解析过程,查看 /source/function_template.php 中的函数 parse_template
模板语法:
(1) 调用其他模板文件
<!--{template header}-->
说明:此处调用 header.htm
(2) 调用头像
模板代码: <!--{avatar($value[uid],small)}-->
解析后的代码:<?php echo avatar($value[uid],small); ?>
(3) 调用广告
模板代码:<!--{ad/header}-->
解析后的代码:<?php adshow('header'); ?>
(4) 调用时间
模板代码:<!--{date('Y-m-d H:i', $value[dateline], 1)}-->
解析后的代码:<?php echo sgmdate('Y-m-d H:i', $value[dateline], 1); ?>
(5) 输出 php 代码
模板代码:<!--{eval echo formhash();}-->
解析后的代码:<?php echo formhash(); ?>
说明:<!–{eval 和}–>之间的是需要执行的 PHP 代码,要求语句完整。
(6) 调用变量
<a href="space.php?uid=$value[uid]">{$_SN[$value[uid]]}</a>
解析后的代码:
<a href="space.php?uid=<?=$value['uid']?>"><?=$_SN[$value['uid']]?></a>
说明:{和}之间的是需要输出的变量。
(7) 选择输出逻辑(if)
<!—{if(condition)}?
Dosomething
<!—{elseif(condition)}=
Dosomething
<!—{/if}i
当然没有 elseif 这种情况可以省略
(8) 循环输出
<!—{loop $list $key $value}v
Do something
D {/loop}i
相当于
<?php
If(is_array($list)){
- 5. Foreach($list as $key=>$value){
Do something
?>
<?php } }?>
另外关于 loop 后的参数说明:当 loop 后跟着三个参数时,第一个是要循环的数组,第二个是循环数组
的键名,第三个是该键名对应的值
当参数是两个的时候,第一个参数是循环的数组,第二个是当前循环的数组成员值
2 uchome 与 ucenter 交互机制
Uchome 中调用的一些信息是来源于 ucentenr 的,故在开发过程中需要知道 uchome 与 ucenter 交互
的机制。
(1) 文 件 说 明 : ucenter 与 uchome 交 互 的 代 码 位 于 /uc_client/ 目 录 下 , 相 关 的 数 据 调 用 函 数 都 来 自
client.php 文件中的函数,在 uchome 文件代码中加入:
include_once S_ROOT.'./uc_client/client.php';
即可调用相关 ucenter 的数据
(2) 函数说明:函数全部以 uc 开头,函数具体功能参见源代码注释
(3 ) 在/config.php 中有相当一部分有关 ucenter 的配置,相关配置变量以 uc 开头