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 相关文章推荐
一个改进的UBB类
Oct 09 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
ZendFramework2连接数据库操作实例
Apr 18 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
php 多继承的几种常见实现方法示例
Nov 18 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
php xml实例 留言本
2009/03/20 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
php表单处理操作
2017/11/16 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
JS原型对象通俗&quot;唱法&quot;
2012/12/27 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
js实现登录验证码
2016/12/22 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
python监控文件并且发送告警邮件
2018/06/21 Python
PHP统计代码行数的小代码
2019/09/19 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
外贸英语专业求职信范文
2013/12/25 职场文书
面试自我评价范文
2014/09/17 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
护理医院见习报告
2014/11/03 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP