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 相关文章推荐
PHP中通过ADO调用Access数据库的方法测试不通过
Dec 31 PHP
php防注
Jan 15 PHP
PHP如何编写易读的代码
Jul 10 PHP
PHP伪造referer实例代码
Sep 20 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
Jun 08 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
PHP类的自动加载机制实现方法分析
Jan 10 PHP
PHP操作XML中XPath的应用示例
Jul 04 PHP
PHP 使用位运算实现四则运算的代码
Mar 09 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
新版PHP极大的增强功能和性能
2006/10/09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python+pandas分析nginx日志的实例
2018/04/28 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
《社戏》教学反思
2014/04/15 职场文书
企业宗旨标语
2014/06/10 职场文书
五一活动标语
2014/06/30 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
护理心得体会范文
2016/01/22 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
Python MNIST手写体识别详解与试练
2021/11/07 Python
Android中View.post和Handler.post的关系
2022/06/05 Java/Android