UCenter Home二次开发指南


Posted in PHP onMay 28, 2009

前言
本文将就UCH二次开发这个核心主题,以各种实现的代码为主,辅助部分说明概略的讲解如何针对UCH进行二次开发。过段时间UCH就开源了,准备到时候再详细的写篇UCH机制分析。

顺便说下,这篇文件写在大约两周以前,但是一直没有时间整理发布,今天听说UCH会在最近一段时间开源,到时候再发反而对大家帮助不大,所以决定不再整理,虽然文中一些说明还不详细,但是已经基本成文。

数据调用
这里的数据调用是使用UCenter Home内置的数据调用,在后台的“高级应用”里有“数据调用”管理,以下代码都是在模板中添加,然后调用数据。
1.站内数据调用

<!--{template data/blocktpl/1}-->

2.站外JS调用

<script language="javascript" type="text/javascript" src="http://www.ccvita.com/js.php?id=1"></script>

block的使用
这个block数据调用和前面的讲的数据调用,从数据来源和生成来说是基本类似的,。

<!--block模块调用演示-->
<!--{block/sql/SELECT%20%2A%20FROM%20uchome_blog%20ORDER%20BY%20dateline%20DESC%20LIMIT%200%2C8/cachename/test/cachetime/0}-->
<!--{loop $_SBLOCK['test'] $value}-->
<li class="app-thread"><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[subject]</a></li>
<!--{/loop}-->

eval的使用
合理的使用Ucenter Home模板语法中的eval语法,会在一定程序上降低二次开发的难度。比如:
1.通过eval语法在模板内执行PHP语句

<!--eval用法演示-->
<!--{eval echo '<li class="app-thread"><a href="do.php?ac=demo"><strong>最新日志演示</strong></a>';}-->

2.通过eval语法引入一个外部PHP文件
引入外部文件

<!--用eval来include外部文件-->
<!--{eval include '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
虽然UCH发布的文件是加密信息,但是我们从其已经开源的文件中可以得出进行UCH二次开发宝贵的信息。
比如/source/cron这个目录下以及source/class_mysql.php文件都是开源的,我们可以从中找出,对UCH进行二次开发非常有用的一些信息,比如如何进行SQL查询,通过分析,我们可以写出以下文件。

< ?php
!defined('IN_UCHOME') && exit('Access Denied');

$query = $_SGLOBAL['db']->query('SELECT * FROM '.tname('blog').' ORDER BY dateline DESC LIMIT 10');
$bloglist = array();
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
$bloglist[] = $value;
}
include template('do_demo');
?>

模板文件templates/default/do_demo.htm内容为

<!--{template header}-->

<div class="side_right">
<div class="wide">
<div class="post_list">
<ul>
<!--{loop $bloglist $value}-->
<li>
<div class="title">
<h4><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[subject]</a></h4>
<a href="space.php?uid=$value[uid]">$value[username]</a> <span class="time"><!--{date('Y-m-d H:i',$value[dateline])}--></span>
</div>
<div class="status">
<!--{if $value[viewnum]}--><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]">$value[viewnum] 次阅读</a><span class="pipe">|</span><!--{/if}-->
<!--{if $value[replynum]}--><a href="space.php?uid=$value[uid]&do=blog&id=$value[blogid]#comment">$value[replynum] 个评论</a><!--{else}-->没有评论<!--{/if}-->
</div>
</li>
<!--{/loop}-->
</ul>
</div>
</div>
</div>

<!--{template footer}-->

总结
虽然当前的UCH尚未开源,但是在模板界面完全可修改,合理利用上述数据调用机制的情况下,鲜有我们不能实现的页面效果和数据调用要求。

PHP 相关文章推荐
其他功能
Oct 09 PHP
PHP的分页功能
Mar 21 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
PHP编码规范的深入探讨
Jun 06 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
浅谈PHP中关于foreach使用引用变量的坑
Nov 14 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
php实现文件上传基本验证
Mar 04 PHP
phpMyAdmin 安装及问题总结
May 28 #PHP
很好用的PHP数据库类
May 27 #PHP
PHP XML备份Mysql数据库
May 27 #PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 #PHP
php 字符转义 注意事项
May 27 #PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 #PHP
PHP的单引号和双引号 字符串效率
May 27 #PHP
You might like
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
Javascript注入技巧
2007/06/22 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
python读文件逐行处理的示例代码分享
2013/12/27 Python
对numpy中shape的深入理解
2018/06/15 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
教师自荐信
2013/12/10 职场文书
企业员工培训感言
2014/02/26 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书