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 相关文章推荐
在普通HTTP上安全地传输密码
Jul 21 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
PHP取进制余数函数代码
Jan 19 PHP
浅谈php扩展imagick
Jun 02 PHP
用php守护另一个php进程的例子
Feb 13 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
Mar 29 PHP
php实现图片以base64显示的方法
Oct 13 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
Oct 18 PHP
php生成word并下载代码实例
Mar 15 PHP
Yii框架核心组件类实例详解
Aug 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 中的str_replace 函数总结
2007/04/27 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
详解Angular cli配置过程记录
2019/11/07 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
Python中bisect的用法
2014/09/23 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
Atom的python插件和常用插件说明
2018/07/08 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
python实现电子词典
2020/03/03 Python
Django实现简单的分页功能
2021/02/22 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
学生逃课检讨书
2015/02/17 职场文书
外贸英文求职信范文
2015/03/19 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
考勤制度通知
2015/04/25 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
Java8中Stream的一些神操作
2021/11/02 Java/Android