SlideShare uma empresa Scribd logo
1 de 5
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
不带参数时会被跳转到个人首页或系统首页(看是否已登录);带 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
未发现使用的地方,所以不做解释。


   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’;//选择模板目录
当需要调用模板文件时,首先程序会在模板缓存目录 /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)){
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 开头

Mais conteúdo relacionado

Semelhante a Uc home二次开发参考手册

C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4Tao He
 
Php设计模式介绍
Php设计模式介绍Php设计模式介绍
Php设计模式介绍cyf5513
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.pptFrank Cai
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程Lixun Peng
 
1, shell intro
1, shell intro1, shell intro
1, shell introted-xu
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定Shengyou Fan
 
六步教你学会简单Rmi
六步教你学会简单Rmi六步教你学会简单Rmi
六步教你学会简单Rmiyiditushe
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践yiditushe
 
5, system admin
5, system admin5, system admin
5, system adminted-xu
 
4, files & folders
4, files & folders4, files & folders
4, files & foldersted-xu
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档xuebao_zx
 
I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212Asika Simon
 
Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式ZongYing Lyu
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)
Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)
Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)rvillegasg
 
Magento页面载入的执行流程
Magento页面载入的执行流程Magento页面载入的执行流程
Magento页面载入的执行流程Sim Jiason
 
【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學ilovejoomla
 

Semelhante a Uc home二次开发参考手册 (20)

C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
 
Php设计模式介绍
Php设计模式介绍Php设计模式介绍
Php设计模式介绍
 
Eloquent ORM
Eloquent ORMEloquent ORM
Eloquent ORM
 
Eloquent ORM
Eloquent ORMEloquent ORM
Eloquent ORM
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.ppt
 
Overlayfs and VFS
Overlayfs and VFSOverlayfs and VFS
Overlayfs and VFS
 
MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程MySQL源码分析.01.代码结构与基本流程
MySQL源码分析.01.代码结构与基本流程
 
1, shell intro
1, shell intro1, shell intro
1, shell intro
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
六步教你学会简单Rmi
六步教你学会简单Rmi六步教你学会简单Rmi
六步教你学会简单Rmi
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
5, system admin
5, system admin5, system admin
5, system admin
 
4, files & folders
4, files & folders4, files & folders
4, files & folders
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 
I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212
 
Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)
Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)
Windowsîä¼þïµí³¹ýâëçý¶¯¿ª·¢½ì³ì(µú¶þ°æ)
 
Magento页面载入的执行流程
Magento页面载入的执行流程Magento页面载入的执行流程
Magento页面载入的执行流程
 
【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學
 

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 开头