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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
php关于array_multisort多维数组排序的使用说明
Jan 04 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
php获取当月最后一天函数分享
Feb 02 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
Smarty保留变量用法分析
May 23 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
PHP实现的CURL非阻塞调用类
Jul 26 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 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
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
python openpyxl模块的使用详解
2021/02/25 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
中软国际Java程序员笔试题
2014/07/19 面试题
护理实习自我鉴定
2013/12/14 职场文书
外贸英语专业求职信范文
2013/12/25 职场文书
大学校园活动策划书
2014/02/04 职场文书
财务总监管理职责范文
2014/03/09 职场文书
土地转让协议书
2014/04/15 职场文书
班级旅游计划书
2014/05/03 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
消防安全宣传口号
2014/06/10 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
早读课迟到检讨书
2014/09/25 职场文书
入党转正介绍人意见
2015/06/03 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书