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目录导航文件代码
Oct 09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
一个简单的PHP投票程序源码
Mar 11 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
php二维数组排序方法(array_multisort usort)
Dec 25 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
php异常处理方法实例汇总
Jun 24 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 03 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
详解在Javascript中进行面向切面编程
2019/04/28 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
python爬取微信公众号文章
2018/08/31 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
简单的命令查看安装的python版本号
2020/08/28 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
Pycharm安装python库的方法
2020/11/24 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
销售文员的岗位职责
2013/11/20 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
暂住证明怎么写
2015/06/19 职场文书
讲座新闻稿
2015/07/18 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
解决 redis 无法远程连接
2022/05/15 Redis
JS实现简单的九宫格抽奖
2022/06/28 Javascript