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类
Nov 25 PHP
PHP对字符串的递增运算分析
Aug 08 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
php中HTTP_REFERER函数用法实例
Nov 21 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
PHP chop()函数讲解
Feb 11 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
用Flash图形化数据(一)
2006/10/09 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
Python连接phoenix的方法示例
2017/09/29 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
python中如何使用insert函数
2020/01/09 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
django 实现简单的插入视频
2020/04/07 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
中学生家长评语大全
2014/04/16 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
严以用权学习心得体会
2016/01/12 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android