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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
dedecms模板标签代码官方参考
Mar 17 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
关于PHP语言构造器介绍
Jul 08 PHP
一组PHP可逆加密解密算法实例代码
Jan 21 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
php的命名空间与自动加载实现方法
Aug 25 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
酒店销售主管岗位职责
2014/01/04 职场文书
聘用意向书
2014/07/29 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
小学教育见习总结
2015/06/23 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
vue elementUI批量上传文件
2022/04/26 Vue.js
MySQL transaction事务安全示例讲解
2022/06/21 MySQL