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 和 XML: 使用expat函数(三)
Oct 09 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
简单的PHP缓存设计实现代码
Sep 30 PHP
php的hash算法介绍
Feb 13 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
php表单敏感字符过滤类
Dec 08 PHP
PHP解析RSS的方法
Mar 05 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
php判断用户是否手机访问代码
Jun 08 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 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
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
Python入门之modf()方法的使用
2015/05/15 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
美国第一香水网站:Perfume.com
2017/01/23 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
大三自我鉴定范文
2013/10/05 职场文书
运动会广播稿30字
2014/01/21 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
环境科学专业求职信
2014/08/04 职场文书
幽灵公主观后感
2015/06/09 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python