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 相关文章推荐
杏林同学录(一)
Oct 09 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
模拟flock实现文件锁定
Feb 14 PHP
php采集时被封ip的解决方法
Aug 29 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
深入array multisort排序原理的详解
Jun 18 PHP
php 使用array函数实现分页
Feb 13 PHP
php实现的xml操作类
Jan 15 PHP
PHP数组函数知识汇总
May 12 PHP
smarty自定义函数用法示例
May 20 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 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
JAVA/JSP学习系列之四
2006/10/09 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
python制作填词游戏步骤详解
2019/05/05 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
英国网上电器商店:Electricshop
2020/03/15 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
关于人生的感言
2014/01/17 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
2014年村委会工作总结
2014/11/24 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
工会工作个人总结
2015/03/03 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
nginx rewrite功能使用场景分析
2022/05/30 Servers