前言
本文將就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尚未開源,但是在模板界面完全可修改,合理利用上述數據調用機制的情況下,鮮有我們不能實現的頁面效果和數據調用要求。