SNS:uchome源程序结构说明 收藏
2009年04月16日


fxs_2008注:

不少朋友介绍,UC-home的开发结构与以前不同,也有朋友说,UC-home的换了一大批人,所以程序风格不同了!偶看了一下源代码,发现改变的风格只不过是用了MVC的架构!

MVC架构的老祖宗当属ruby-on-rails,cakephp架构基本上是完全模仿它!uchome也不过是采用了MVC架构!

一:怎样找到要修改的文件和模板

uchome的程序结构采用 入口参数->源程充->查找模板 方式。

如:

//获取方法

$ac = empty($_GET['do’'])?'':$_GET['do'];

//允许动作

$dos = array('feed', 'doing', 'mood', 'blog', 'album', 'thread', 'mtag', 'friend', 'wall', 'tag', 'notice', 'share', 'home', 'pm');

if(empty($ac) || !in_array($ac, $acs)) {

showmessage('enter_the_space', 'index.php', 0);

}

//处理

include_once(S_ROOT."./source/space_{$do}.php");

以上代码,将入口参数放到$acs数组里面,根据参数定位到相应的源文件,由此可以根据url的参数判断具体的源代码是执行的哪个文件,url的文件名为入口文件,

如当前url为:space.php?do=friend

则入口文件为:space.php ,动作处理页面为:soruce/space_friend.php

在动作页面处理完后(包括写数据库和读数据),然后将返回的数据显示到模板页面中,在动作处理页用如下的方法加载了html模板:

include_once template("space_friend");

如果模板文件不在uch模板目录,要填写完整模板的目录即可

如上例:加载的是template/default/space_friend.htm

如果修改模板也可以根据参数找到相应的模板页面。

Uch的动作参数一般为:ac=[参数名]或do=[参数名]

二:uch管理地址:根文件下的admincp.php,默认管理员为创始人

三:模板图片和css:

Css在模板页面同一目录,模板图片在模板目录/image下

四:使用uch的接口:

在程序的第一行引入uch的公用文件即可,如下:

include_once('./common.php');

加载此公用文件后,uch将公共的变量全部放到全局变量$_SGLOBAL中,

经常用到的如下:

$_SGLOBAL [supe_uid] //当前登录用户的id

$_SGLOBAL [supe_username]//当前用户的登录名称

$_SGLOBAL[db]//数据库操作的封装

1:读取数据库实例

$query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('profield')");

while ($value = $_SGLOBAL['db']->fetch_array($query)) {

//在这里组合查出来的数据

//单条的数据即为$value

}

Tname()函数的参数为要读取的数据库的表名,tname函数的目的只是为了添加表前缀uchome_blog,当然可以使用表的全名,但提倡使用这种方式,优点在于表前缀修改后,程序不做任何改动

2:写数据库:

可以利用1中的方法,但uch提供了相应的函数:

inserttable(),使用方法如下:

$data=array(

‘列名’=>’值’,

‘列名’=>’值’

);

inserttable([表名],$data);

注意表名不可加表前缀,此函数含有更多参数,如可以返回插入的id,具体参照/soruce/function_common.php

inserttable还有其他函数,可以参照source/function_common.php的函数原型,如插入一条数据要返回刚刚插入数据的id也是可以的。

3:更新数据

$data=array(

‘列名’=>’值’,

‘列名’=>’值’

);

updatetable([表名],$data,array(‘id’=>5,’name’=>’username’));

第三个参数跟的是条件:更新的数据为id=5并且名称为:username的那一条数据,如果有更多的条件加到第三个数组就可以了

4:在模板中显示数据

1) 循环显示一个数组的数据:

如:$list=array(‘a’,’b’,’c’);

$k的值为:$v

输出:

0的值为a

1的值为b

2的值为c

这个相当于php里面的foreach,如果上面的不需要数组的key,则只写一个参数就可以了如:

//do some code

2) if的使用

//do code

//do some other

上面就是打印一个test字符串,

五:页面跳转:

showmessage('enter_the_space', 'index.php',1);

第一个参数为:跳转要提示的信息

第二个参数为:跳转地址

第三个参数为:显示提示信息后1秒跳转,如果为0,则为马上跳转

六: 开发使用uch的模板框架:

在页面中:

//这里就是页面的主题部分

Header包括uch的头部菜单和左边的插件栏,footer包括uch的底页面

七:uch缓存目录 /data/tpl_cache/

修改了模板页面必须删除此文件下的缓存文件才能开到修改效果,或者进入uch后台点击高级应用里面的缓存更新.

转载自:http://www.bye18.cn/space.php?uid=1&do=blog&id=32

 

本文永久链接: http://www.zzxj.net/blog/fxs_2008/archive/2009/04/16/38.html

发表于 @ 2009年04月16日 |评论(loading... )|收藏

发表评论 姓  名: